আমি একটি জাভা ভিত্তিক পরিষেবাদির জন্য গুগল প্রোটোকল বাফারগুলি মূল্যায়ন করছি (তবে ভাষা অজ্ঞায়নের নিদর্শনগুলি আশা করছি)। আমার দুটি প্রশ্ন আছে:
প্রথমটি একটি বিস্তৃত সাধারণ প্রশ্ন:
আমরা কোন নিদর্শনগুলি ব্যবহার করতে দেখছি? শ্রেণীর সংস্থার সাথে সম্পর্কিত নিদর্শনগুলি (যেমন, ফটো ফাইল, প্যাকেজিং এবং বিতরণ প্রতি বার্তা) এবং বার্তার সংজ্ঞা (যেমন, পুনরাবৃত্তি ক্ষেত্র বনাম পুনরাবৃত্তি এনক্যাপসুলেটেড ক্ষেত্রসমূহ *) ইত্যাদি etc.
এক্সএমএলের মতো প্রতিষ্ঠিত প্রোটোকলগুলির জন্য যখন প্রচুর পরিমাণে তথ্য রয়েছে তখন গুগল প্রোটোবফ সহায়তা পৃষ্ঠাগুলি এবং সর্বজনীন ব্লগে এই ধরণের খুব সামান্য তথ্য রয়েছে।
নিম্নলিখিত দুটি ভিন্ন ধরণ সম্পর্কে আমার নির্দিষ্ট প্রশ্ন রয়েছে:
ফটো ফাইলগুলিতে বার্তাগুলি উপস্থাপন করুন, সেগুলি একটি পৃথক জার হিসাবে প্যাকেজ করুন এবং সেবার গ্রাহককে লক্ষ্য করতে শিপ করুন - যা মূলত আমার ধারণা ডিফল্ট পদ্ধতির।
এটি একই করুন তবে প্রত্যেকটি বার্তার চারপাশে হ্যান্ড ক্র্যাফ্টেড মোড়কের (উপ-শ্রেণি নয়!) অন্তর্ভুক্ত করুন যা অন্ততপক্ষে এই দুটি পদ্ধতি সমর্থন করে এমন একটি চুক্তি কার্যকর করে (টি হ'ল রেপার ক্লাস, ভি বার্তা শ্রেণি (জেনেরিকগুলি কিন্তু ব্রেভিটির জন্য সরলিকৃত বাক্য গঠন ব্যবহার করে) :
public V toProtobufMessage() { V.Builder builder = V.newBuilder(); for (Item item : getItemList()) { builder.addItem(item); } return builder.setAmountPayable(getAmountPayable()). setShippingAddress(getShippingAddress()). build(); } public static T fromProtobufMessage(V message_) { return new T(message_.getShippingAddress(), message_.getItemList(), message_.getAmountPayable()); }
(২) এর সাথে আমি দেখতে পাচ্ছি তার একটি সুবিধা হ'ল আমি প্রবর্তিত জটিলতাগুলি আড়াল করতে পারি এবং আমার মোড়কে V.newBuilder().addField().build()
কিছু অর্থপূর্ণ পদ্ধতি যেমন isOpenForTrade()
বা isAddressInFreeDeliveryZone()
ইত্যাদি যুক্ত করতে পারি। (২) এর সাথে আমি যে দ্বিতীয় সুবিধাটি দেখতে পাচ্ছি তা হ'ল আমার ক্লায়েন্টরা অপরিবর্তনীয় বস্তুগুলির সাথে লেনদেন করে (এমন কিছু যা আমি মোড়কের ক্লাসে প্রয়োগ করতে পারি)।
(২) এর সাথে আমি দেখতে পাচ্ছি তার একটি অসুবিধা হ'ল আমি কোডটি নকল করি এবং প্রোটোগ্রাফ ফাইলগুলির সাথে আমার মোড়ক ক্লাসগুলি সমন্বয় করতে পারি।
কারও কাছে এই দুটি পদ্ধতির যে কোনও একটিতে আরও ভাল কৌশল বা আরও সমালোচনা রয়েছে?
* একটি পুনরাবৃত্তি ক্ষেত্রটি আবদ্ধ করে আমি এর অর্থ বার্তাগুলি বোঝায়:
message ItemList {
repeated item = 1;
}
message CustomerInvoice {
required ShippingAddress address = 1;
required ItemList = 2;
required double amountPayable = 3;
}
পরিবর্তে এই বার্তাগুলির পরিবর্তে:
message CustomerInvoice {
required ShippingAddress address = 1;
repeated Item item = 2;
required double amountPayable = 3;
}
আমি দ্বিতীয়টি পছন্দ করি তবে এর বিরুদ্ধে যুক্তি শুনে খুশি।