অ্যান্ড্রয়েড নেটওয়ার্ক লাইব্রেরির তুলনা: OkHTTP, retrofit, এবং ভলি [বন্ধ]


579

আইওএস বিকাশকারী অ্যান্ড্রয়েড শেখার দ্বি-অংশ প্রশ্ন, অ্যান্ড্রয়েড প্রকল্পে কাজ করে যা জেএসএন থেকে চিত্রটিতে অডিও এবং ভিডিওর স্ট্রিমিং ডাউনলোডের জন্য বিভিন্ন অনুরোধ করবে:

  1. আইওএস-এ আমি এএফ নেটওয়ার্কিং প্রকল্পটি ব্যাপকভাবে ব্যবহার করেছি । অ্যান্ড্রয়েডের জন্য কি সমমানের গ্রন্থাগার রয়েছে?

  2. আমি আপ পড়েছি OkHTTP এবং রেট্রোফিট স্কয়ার, সেইসাথে দ্বারা ভলি কিন্তু এখনো অভিজ্ঞতা তাঁদের সঙ্গে উন্নয়নশীল হবে না। আমি আশা করছি যে কেউ প্রত্যেকে সর্বোত্তম ব্যবহারের ক্ষেত্রে কিছু স্থির উদাহরণ সরবরাহ করতে পারে। আমি যা পড়েছি তা থেকে মনে হয় OkHTTP এই তিনটির মধ্যে সবচেয়ে শক্তিশালী এবং এই প্রকল্পের প্রয়োজনীয়তাগুলি (উপরে বর্ণিত) পরিচালনা করতে পারে।


3
আপনি যদি এইচটিটিপিআরল সংযোগের অভ্যন্তরীণ বাস্তবায়ন ব্যবহার করছেন তবে আপনার বিবেচনা করা উচিত যে এইচটিটিপিআরল সংযোগটি পোস্ট-অনুরোধগুলিতে নীরব পুনরায় চেষ্টা করে। এতে আমার অনেক ক্ষতি হয়। আরও তথ্যের জন্য এখানে পড়ুন: stackoverflow.com/a/37675253/2061089
oli

1
যদি কারও কাছে যদি সমস্ত নেটওয়ার্কিং লাইব্রেরির তালিকা প্রয়োজন হয় তবে আপনি এটি আমার ব্লগ পোস্টে androidredman.wordpress.com/2017/06/26/…
মনোহর রেড্ডি

ভলির লিগ্যাসি অ্যাপাচি, এইচটিপিআরএল সংযোগ, অ্যাপাচি -4 বা ওকে এইচটিটিপি চালানো যেতে পারে। কোথায় রেট্রোফিট সত্যই কেবল OkHttp এর রান runs Retrofit কনফিগার করা অনেক সহজ।
বিটশাবি

উত্তর:


647

আমি প্রত্যাশা করছি যে কেউ প্রত্যেকে সেরা ব্যবহারের ক্ষেত্রে কিছু দৃ concrete় উদাহরণ সরবরাহ করতে পারে।

আপনি যদি কোনও ওয়েব সার্ভিসের সাথে যোগাযোগ করে থাকেন তবে রিট্রোফিট ব্যবহার করুন। আপনি যদি চিত্রগুলি ডাউনলোড করেন তবে পিয়ার লাইব্রেরি পিকাসো ব্যবহার করুন। আপনার যদি এইচটিটিপি অপারেশনগুলি করা দরকার যা রিট্রোফিট / পিকাসোর বাইরে থাকে Ok OkHTTP ব্যবহার করুন।

ভলি মোটামুটি রিট্রোফিট + পিকাসোর সাথে প্রতিযোগিতা করে। প্লাস পাশে, এটি একটি গ্রন্থাগার। বিয়োগের দিকে, এটি একটি অননুমোদিত, একটি অসমর্থিত, "কোডটি দেয়ালের উপরে ফেলে দিন এবং এটিতে I | O উপস্থাপনা করুন" লাইব্রেরি।

সম্পাদনা - ভলিকে এখন সরকারীভাবে গুগল সমর্থন করে। দয়া করে গুগল বিকাশকারী গাইড উল্লেখ করুন

আমি যা পড়েছি তা থেকে মনে হয় OkHTTP হ'ল 3 এর মধ্যে সবচেয়ে শক্ত

রিট্রোফিট উপলব্ধ থাকলে স্বয়ংক্রিয়ভাবে OkHTTP ব্যবহার করে। জ্যাক ওয়ার্টনের একটি গিস্ট রয়েছে যা ভলিকে OkHTTP এর সাথে সংযুক্ত করে।

এবং এই প্রকল্পের প্রয়োজনীয়তাগুলি হ্যান্ডেল করতে পারে (উপরে বর্ণিত)।

"স্ট্রিমিং" এর প্রচলিত সংজ্ঞা দ্বারা সম্ভবত আপনি তাদের কোনওটিই "অডিও এবং ভিডিওর স্ট্রিমিং ডাউনলোড" এর জন্য ব্যবহার করবেন না। পরিবর্তে, অ্যান্ড্রয়েডের মিডিয়া কাঠামো আপনার জন্য সেই এইচটিটিপি অনুরোধগুলি পরিচালনা করবে।

বলা হচ্ছে, আপনি যদি নিজের নিজস্ব এইচটিটিপি-ভিত্তিক স্ট্রিমিং করার চেষ্টা করতে চলেছেন, OkHTTP- কে সেই দৃশ্যটি পরিচালনা করতে হবে; ভোলি সেই দৃশ্যটি কীভাবে পরিচালনা করবে তা আমি মনে করি না। রেট্রোফিট বা পিকাসো উভয়ই এর জন্য ডিজাইন করা হয়নি।


4
সংক্ষিপ্ত উত্তরের জন্য @ কমন্সওয়্যারকে ধন্যবাদ, এবং ভলির অনিবন্ধিত স্টিজে থাকা নোট (অন্যান্য প্রকল্পের তুলনায় এই ছাপটি পেয়েছে)। স্থল থেকে জিনিস পেতে অবশ্যই আমাকে সহায়তা করে।
আলফি হানসেন

18
@ কমন্স ওয়ার থেকে আরও একটি দুর্দান্ত উত্তর। রবস্পাইস কীভাবে এই সমস্তগুলির মধ্যে ফিট করে তার উপর কেউ ফলোআপ করতে পারেন?
ব্যবহারকারী 1923613

3
@ user1923613 github.com/octo-online/robospice আপনি যদি নেটওয়ার্ক কলের জন্য ভলি ব্যবহার করেন তবে রোবসপিস ব্যবহার করার দরকার নেই!, রোবস্পাইস নেটওয়ার্ক কলগুলির জন্য যে কাজগুলি করে তার অনেকগুলি কাজ করে, রোবসপিস বাক্সের বাইরে রেস্টকে সমর্থন করে (ব্যবহার করে) স্প্রিং অ্যান্ড্রয়েড বা গুগল এইচটিপি ক্লায়েন্ট বা রিট্রোফিট)। আপনি যদি শক্ত নেটওয়ার্কের ক্লায়েন্টের সাথে দ্রুত নেটওয়ার্কিং এবং চিত্র লোডিং করতে চান তবে আপনি ভলিতে যেতে পারেন! তবে আপনি আরও ভাল পারফরম্যান্স এবং মেমরি ফাঁস এড়ানোর জন্য রবস্পাইস ব্যবহার করেন এমন সাধারণ অ্যান্ড্রয়েড অ্যাসিঙ্ক টাস্কটি প্রতিস্থাপন করতে পারেন!
LOG_TAG

4
@ ফ্রস্টাইমারভেলেস: আমি অনুভব করি যে অনাবৃত ও অসমর্থিত যথেষ্ট ন্যায্যতার চেয়ে বেশি। এটি এমন নয় যে গুগলের কাছে আরও আনুষ্ঠানিকভাবে হ্যান্ডলগুলি (যেমন, অ্যান্ড্রয়েড সমর্থন লাইব্রেরি) এর জন্য কোনও সিস্টেমের অভাব রয়েছে। এই উত্তরটি থেকে দু'বছর পরে, প্লাস দিক থেকে, সম্প্রদায়ের সমর্থন রয়েছে, কোডটিকে একটি শিল্পকলাতে কিছু বেসরকারী প্যাকেজিং সহ support
কমন্সওয়্যার

4
@ অভাবনভুতুকুরি: আপনি দু'বছর আগে থেকেই একটি উত্তর সম্পর্কে মন্তব্য করছেন। এই সময়, কোনও ডকুমেন্টেশন ছিল না।
কমন্সওয়্যার

361

ভলির দৃষ্টিভঙ্গিটি এখানে দেখানো আপনার প্রয়োজনীয়তার জন্য কিছু সুবিধা রয়েছে:

ভলি, একদিকে, সম্পূর্ণরূপে স্বতন্ত্র, ছোট এইচটিটিপি অনুরোধ পরিচালনার উপর দৃষ্টি নিবদ্ধ করে। সুতরাং যদি আপনার এইচটিটিপি রিকোয়েস্টের হ্যান্ডলিংয়ে কিছু প্রশ্ন রয়েছে তবে ভলির সম্ভবত আপনার জন্য একটি হুক রয়েছে। অন্যদিকে, যদি আপনার ইমেজ হ্যান্ডলিংয়ে আপনার কোনও তাত্পর্য থাকে তবে আপনার কাছে আসল হুকটিই কেবল চিত্রের ক্যাশে । "এটি কিছুই নয়, তবে এটি খুব বেশি কিছু নয়!" তবে এর আরও আরও সুবিধা রয়েছে যেমন আপনি একবার আপনার অনুরোধগুলি সংজ্ঞায়িত করে ফেলেন, কোনও খণ্ডের মধ্যে থেকে বা ক্রিয়াকলাপের মধ্য দিয়ে এগুলি ব্যবহার করা সমান্তরাল অ্যাসিঙ্কটাস্কের বিপরীতে ব্যথাহীন

ভলির প্রো এবং কনস:

তাহলে ভলির সম্পর্কে কী সুন্দর?

  • নেটওয়ার্কিং অংশটি কেবল চিত্রগুলির জন্য নয়। ভলির উদ্দেশ্য আপনার পিছনের প্রান্তের একটি অবিচ্ছেদ্য অঙ্গ হতে পারে। একটি সাধারণ আরএসটি পরিষেবা ভিত্তিতে একটি নতুন প্রকল্পের জন্য, এটি একটি বড় জয় হতে পারে।

  • পিকাসোর চেয়ে নেটওয়্যারআইমেজভিউ অনুরোধ ক্লিনআপ সম্পর্কে আরও আক্রমণাত্মক এবং এর জিসি ব্যবহারের ধরণগুলিতে আরও রক্ষণশীল। নেটওয়ার্কআইমেজভিউ দৃ strong়রূপে শক্তিশালী মেমরি রেফারেন্সের উপর নির্ভর করে এবং একটি চিত্রভিউয়ের জন্য নতুন অনুরোধ করার সাথে সাথে বা সেই চিত্রআলভিটি অফস্ক্রিন স্থানান্তরিত হওয়ার সাথে সাথে সমস্ত অনুরোধ ডেটা সাফ করে দেয়।

  • কর্মক্ষমতা. এই পোস্টটি এই দাবির মূল্যায়ন করবে না, তবে তারা তাদের মেমরির ব্যবহারের ধরণগুলিতে ন্যায়বিচারের জন্য স্পষ্টভাবে কিছু যত্ন নিয়েছে। ভলে প্রসঙ্গের স্যুইচিং হ্রাস করার জন্য মূল থ্রেডে কলব্যাকগুলি ব্যাচ করার চেষ্টাও করে।

  • ভলির স্পষ্টতই ফিউচারসও রয়েছে। আপনার আগ্রহ থাকলে অনুরোধ ফিউচারটি দেখুন।

  • আপনি যদি উচ্চ-রেজুলেশন সংকোচিত চিত্রগুলির সাথে কাজ করে থাকেন তবে ভলির এখানে একমাত্র সমাধান যা ভালভাবে কাজ করে।

  • ভলিকে ওখট্টপ্পের সাহায্যে ব্যবহার করা যেতে পারে (আরও ভাল পারফরম্যান্সের জন্য ওখट्ट্পের নতুন সংস্করণ এনআইও সমর্থন করে)

  • ক্রিয়াকলাপ জীবনচক্রের সাথে ভলি দুর্দান্ত অভিনয় করে।

ভলির সমস্যা: ভল্লি
যেহেতু নতুন, তাই কয়েকটি জিনিস এখনও সমর্থিত নয়, তবে এটি স্থির।

  1. মাল্টিপার্ট রিকোয়েস্টস (সমাধান: https://github.com/vinaysshenoy/enhanced-volley )

  2. স্থিতি কোড 201 একটি ত্রুটি যেমন নেওয়া হয়, 200 থেকে 207 স্থিতি কোড সফল প্রতিক্রিয়া এখন। (আলোচনা: https://github.com/Vinayrraj/CustomVolley )

    আপডেট: গুগল ভলির সর্বশেষ রিলিজে, 2 এক্সএক্স স্থিতি কোড বাগ এখন ঠিক করা হয়েছে! ফিকাস কির্কপ্যাট্রিককে ধন্যবাদ!

  3. এটি কম নথিভুক্ত তবে অনেক লোক গিথুবে ভলিকে সমর্থন করছেন, ডকুমেন্টেশনের মতো জাভা পাওয়া যাবে এখানে । অ্যান্ড্রয়েড বিকাশকারী ওয়েবসাইটে, আপনি ভল্লি ব্যবহার করে নেটওয়ার্ক ডেটা সংক্রমণ করার জন্য গাইড খুঁজে পেতে পারেন । এবং ভলির উত্স কোডটি গুগল গিটে পাওয়া যাবে

  4. ওলিএইচটিটিপি সহ ভলির ফ্রেমওয়ার্কের পুনঃনির্দেশ নীতিটি সমাধান / পরিবর্তন করতে (উপরে বর্ণিত কমন্সওয়্যার)

এছাড়াও আপনি এই তুলনা ভলির চিত্রটি পিকাসোর সাথে পড়তে পারেন

রেট্রোফিট:

এটি স্কোয়ার দ্বারা প্রকাশিত হয়েছে , এটি REST এপিআই'র ব্যবহারের জন্য খুব সহজ প্রস্তাব দেয় (আপডেট: ভিওইলা! এনআইও সমর্থন সহ)

Retrofit এর পেশাদাররা:

  • ভলির তুলনায়, রেট্রোফিটের আরএসটি এপিআই কোড সংক্ষিপ্ত এবং চমৎকার এপিআই ডকুমেন্টেশন সরবরাহ করে এবং সম্প্রদায়েরগুলিতে ভাল সমর্থন রয়েছে! প্রকল্পগুলিতে যুক্ত করা খুব সহজ।

  • আমরা এটিকে ত্রুটি পরিচালনা সহ কোনও সিরিয়ালাইজেশন লাইব্রেরি সহ ব্যবহার করতে পারি।

আপডেট: - রেট্রোফিট ২.০.০-বিটা ২ তে প্রচুর ভাল পরিবর্তন রয়েছে

  • OkHttp 2.0 সঙ্গে রেট্রোফিট সংস্করণ 1.6 এখন উপর নির্ভরশীল Okio সমর্থন java.io এবং java.nio যা অ্যাক্সেস, দোকান থেকে এটা অনেক সহজ করে তোলে এবং ব্যবহার করে আপনার ডেটা প্রক্রিয়া ByteString এবং বাফার CPU ও মেমরি সংরক্ষণ করতে কিছু চতুর কিছু করার। (অবগতির জন্য এই আমাকে মনে করিয়ে দেয় Koush এর OIN Nio সমর্থনে গ্রন্থাগার!) আমরা ব্যবহার করতে পারি RxJava একসাথে রেট্রোফিট মেশা এবং চেইন বিশ্রাম কল ব্যবহার করে rxObservables কুশ্রী কলব্যাক চেইন এড়াতে (এড়ানোর কলব্যাক নরকে !!)

সংস্করণ 1.6 এর জন্য পুনঃনির্মাণের বিষয়টি:

  • মেমরি সম্পর্কিত ত্রুটি হ্যান্ডলিং কার্যকারিতা ভাল নয় (রিট্রোফিট / OkHttp এর পুরানো সংস্করণগুলিতে) জাভা এনআইও সমর্থন দিয়ে ওকিয়োর সাথে এটি উন্নত হয়েছে কিনা তা নিশ্চিত নয়।

  • নূন্যতম থ্রেডিং সহায়তা ফলস্বরূপ জাহান্নামকে কল করতে পারে যদি আমরা এটি ভুল উপায়ে ব্যবহার করি।

(উপরের সমস্ত কনসকে রিট্রোফিট ২.০ বিটার নতুন সংস্করণে সমাধান করা হয়েছে)

================================================== ======================

হালনাগাদ:

অ্যান্ড্রয়েড অ্যাসিঙ্ক বনাম ভোলি বনাম রেট্রোফিট পারফরম্যান্স বেঞ্চমার্ক (মিলিসেকেন্ড, কম মান আরও ভাল):

অ্যান্ড্রয়েড অ্যাসিঙ্ক বনাম ভোলি বনাম রেট্রোফিট পারফরম্যান্স মানদণ্ড

(উপরের এফওয়াইআই রেট্রোফিট বেঞ্চমার্কের তথ্য জাভা এনআইও সমর্থন দিয়ে উন্নত হবে কারণ ওকেহট্টপসের নতুন সংস্করণটি এনআইও ওকিও লাইব্রেরির উপর নির্ভরশীল)

বিভিন্ন পুনরাবৃত্তি (তিন - 1 - 25 বার) সহ তিনটি পরীক্ষায় ভলি 50% থেকে 75% পর্যন্ত দ্রুততর ছিল। অ্যাসিঙ্কটাস্কের তুলনায় রিট্রোফিট 50% থেকে 90% দ্রুত গতিতে এসে একই শেষ পয়েন্টটিকে একই সংখ্যার বারে আঘাত করেছে। ড্যাশবোর্ড পরীক্ষা স্যুটে, এটি ডেটা কয়েক সেকেন্ডে দ্রুত লোডিং / পার্সিংয়ে অনুবাদ করেছে। এটি একটি বিশাল বাস্তব-পার্থক্য। পরীক্ষাগুলি সুষ্ঠু করার জন্য, অ্যাসিঙ্কটাস্কস / ভলির জন্য সময়গুলি JSON পার্সিং অন্তর্ভুক্ত করেছিল যেমন retrofit এটি স্বয়ংক্রিয়ভাবে আপনার জন্য করে।

রিট্রোফিট বেঞ্চমার্ক পরীক্ষায় জিতেছে!

শেষ পর্যন্ত, আমরা আমাদের আবেদনের জন্য রেট্রোফিটের সাথে যাওয়ার সিদ্ধান্ত নিয়েছি। এটি কেবল হাস্যকরভাবেই দ্রুত নয়, এটি আমাদের বিদ্যমান আর্কিটেকচারের সাথে বেশ ভালভাবে মেসে যায়। আমরা এমন একটি প্যারেন্ট কলব্যাক ইন্টারফেস তৈরি করতে সক্ষম হয়েছি যা স্বয়ংক্রিয়ভাবে ত্রুটি হ্যান্ডলিং, ক্যাশিং এবং পৃষ্ঠাগুলি সম্পাদন করে যা আমাদের এপিআইয়ের জন্য খুব কম চেষ্টা করে। রেট্রোফিটে একীভূত হওয়ার জন্য, আমাদের মডেলগুলিকে জিএসওএন অনুবর্তী করতে, কয়েকটি সাধারণ ইন্টারফেস লিখতে, পুরানো এপিআই থেকে ফাংশনগুলি মুছতে এবং অ্যাসিঙ্কটাস ব্যবহার না করার জন্য আমাদের টুকরো পরিবর্তন করতে আমাদের ভেরিয়েবলগুলির নাম পরিবর্তন করতে হয়েছিল। এখন আমাদের কয়েকটি টুকরো সম্পূর্ণ রূপান্তরিত হয়ে গেছে, এটি বেশ বেদনাদায়ক। কিছু ক্রমবর্ধমান বেদনা এবং সমস্যাগুলি ছিল যা আমাদের পরাস্ত করতে হয়েছিল, তবে সামগ্রিকভাবে এটি সহজেই চলে গেছে। শুরুতে, আমরা কয়েকটি প্রযুক্তিগত সমস্যাগুলি / বাগগুলিতে ছুটলাম, তবে স্কয়ারের একটি দুর্দান্ত Google+ সম্প্রদায় রয়েছে যা এর মাধ্যমে আমাদের সহায়তা করতে সক্ষম হয়েছিল।

ভলি কখন ব্যবহার করবেন ?!

আমরা ভ্যালি ব্যবহার করতে পারি যখন আমাদের ইমেজগুলি লোড করার পাশাপাশি আরএসটি এপিআই গ্রহণ করা প্রয়োজন! একই সাথে অনেকগুলি এন / ডাব্লু অনুরোধের জন্য নেটওয়ার্ক কল কুইউটিং সিস্টেমের প্রয়োজন হয়! এছাড়াও ভলির রেট্রোফিটের চেয়ে মেমরি সম্পর্কিত ত্রুটি পরিচালনার ভাল রয়েছে!

OkHttp ভলির সাথে ব্যবহার করা যেতে পারে, রিট্রোফিট ডিফল্টরূপে OkHttp ব্যবহার করে! এটা আছে -এ SPDY সমর্থন, সংযোগ পুলিং, ডিস্ক ক্যাশে, স্বচ্ছ কম্প্রেশন! সম্প্রতি, এটি ওকিও লাইব্রেরির সাথে জাভা এনআইওর কিছুটা সমর্থন পেয়েছে ।

উত্স, ক্রেডিট: জনাব জোশ রুয়েশের লিখেছেন ভল্লি-বনাম- পুনঃনির্মাণ

দ্রষ্টব্য: স্ট্রিমিং সম্পর্কে এটি আরটিএসপি / আরটিসিপি-র মতো আপনি কী ধরণের স্ট্রিমিং চান তার উপর নির্ভর করে।


তথ্যের জন্য @ 13133 জানুয়ারী! আমি এটি আপডেট করেছি! android.googlesource.com
প্ল্যাটফর্ম

4
@ LOG_TAG আপনার নমুনায় রবোস্পাইস বেঞ্চমার্ক করা আকর্ষণীয় হবে। আমরা এমনকি একটি retrofit মডিউল অফার তাই আমি বিশ্বাস করি এটির জন্য খুব সামান্য পরিবর্তন প্রয়োজন। কোথাও কি সোর্স পাওয়া যায়? আরএসের সুবিধাটি হ'ল নেটওয়ার্ক অনুরোধগুলি সম্পাদন করে এমন ক্রিয়াকলাপের জীবনচক্রটি সঠিকভাবে পরিচালনা করে, এবং আমরা স্বচ্ছ ক্যাশেও সরবরাহ করি, আমার ধারণা, খাঁটি retrofit অনুরোধের তুলনায় ওভারহেড ছোট হবে।
Snicolas

@ স্নিকোলাস আমি জোশ রয়েশ ব্লগের এই মাপদণ্ডের ফলাফল পেয়েছি আপনি ফিকাস কিরকপ্যাট্রিক (ভলির প্রতিষ্ঠাতা), জোশ রুয়েশের মধ্যে রূপান্তরটি দেখতে পাবেন! তিনি এখনও কোথাও বেঞ্চমার্ক পরীক্ষা প্রকল্প ভাগ করে নিলেন! এফওয়াইআই আমি এই নোটিফিকেশন ইস্যুটির মুখোমুখি retrofit নমুনা সহ আপনার রোবসস্পাইসটি শিখতে শুরু করেছি :)
লোগ্যাগটিজি

3
ওহে! ভলি সঙ্গে বহু-অংশযুক্ত অনুরোধ সম্পর্কিত, আমি মনে করি যে আমরা ব্যবহার করতে পারেন MultipartEntityBuilderমধ্যে httpmimeএটি দিয়ে গ্রন্থাগার।
বিএনকে

2
অন্য কেউ এই মানদণ্ড যাচাই করেছে? যেহেতু এপাচি এইচ টি লাইব্রেরি এম তে অবনতিযুক্ত (এবং আমি এটি মাল্টিপার্ট বিল্ডারের জন্য ব্যবহার করছিলাম), তাই আমি আমার নেটওয়ার্কিং কোডটি রিট্রোফাইটে স্থানান্তর করার সিদ্ধান্ত নিয়েছি। আমি প্রথমে সার্ভার থেকে একগুচ্ছ বস্তু পেতে জিইটি কলগুলির একটি পরিবর্তন করেছি। আমি রিট্রোফিট বনাম অ্যাসিঙ্কটাস্ক (আমার নিজস্ব জেএসওএন পার্সিং সহ) সময়সই করেছি। পারফরম্যান্সটি খুব কাছাকাছি ছিল, টেবিলের "ওয়ান ডিসকাশন" কলামে প্রদর্শিত একটি 3x উন্নতি নয়। মঞ্জুর, ফলাফলযুক্ত কোডটি অনেক বেশি পরিষ্কার এবং আমাকে নিজের জেএসএন পার্সার লিখতে হয়নি, তবে একটি জিইটি অনুরোধের জন্য উন্নতি হয়নি।
গ্যারি কিপনিস

44

রোবস্পাইস বনাম নিক্ষেপ

Https://groups.google.com/forum/#!topic/robospice/QwVCfY_glOQ থেকে

  • রোবস্পাইস (আরএস) হ'ল ভলির তুলনায় পরিষেবা ভিত্তিক এবং অ্যান্ড্রয়েড দর্শনের প্রতি শ্রদ্ধাশীল। ভল্লি থ্রেড ভিত্তিক এবং অ্যান্ড্রয়েডে ব্যাকগ্রাউন্ড প্রসেসিংয়ের পদ্ধতিটি এইভাবে নয়। শেষ পর্যন্ত, আপনি উভয় libs খনন করতে পারেন এবং দেখতে পান যে এগুলি বেশ সমান, তবে আমাদের পটভূমি প্রক্রিয়াকরণ করার পদ্ধতিটি আরও অ্যান্ড্রয়েডমুখী, এটি আমাদেরকে উদাহরণস্বরূপ, ব্যবহারকারীদের বলতে দেয় যে আরএস আসলে ব্যাকগ্রাউন্ডে কিছু করছে, যা হবে ভলির জন্য শক্ত (আসলে এটি মোটেও হয় না)।
  • রোবস্পাইস এবং ভলি উভয়ই অগ্রাধিকার, নীতি পুনরায় চেষ্টা, বাতিলকরণের অনুরোধের মতো দুর্দান্ত বৈশিষ্ট্য সরবরাহ করে। তবে আরএস আরও প্রস্তাব দেয়: আরও উন্নত ক্যাচিং এবং এটি একটি বড়, ক্যাশে পরিচালনা, অনুরোধ সমষ্টি, আরও কিছু বৈশিষ্ট্য যেমন একটি মুলতুবি অনুরোধে পুনরায় প্লাগিং করা, সার্ভার শিরোনামের উপর নির্ভর না করে ক্যাশে সমাপ্তির সাথে সম্পর্কিত ইত্যাদি features
  • রোবস্পাইস ইউআই থ্রেডের বাইরে আরও কিছু করে: ভোলি আপনার পজোগুলিকে মূল থ্রেডে ডিসিজায়ালাইজ করবে, যা আমার মনে ভয়ঙ্কর। আরএসের সাথে আপনার অ্যাপ্লিকেশন আরও প্রতিক্রিয়াশীল হবে।
  • গতির ক্ষেত্রে, আমাদের অবশ্যই মেট্রিক দরকার। আরএস এখন সুপার দ্রুত অর্জন করেছে, তবে এখনও আমাদের এখানে রাখার মতো চিত্র নেই। ভোলি তাত্ত্বিকভাবে কিছুটা দ্রুত হওয়া উচিত, তবে আরএস এখন ব্যাপকভাবে সমান্তরাল ... কে জানে?
  • রোবস্পাইস এক্সটেনশনগুলির সাথে একটি বৃহত্তর সামঞ্জস্যের পরিসীমা সরবরাহ করে। আপনি এটি ওখটিপিপি, রিট্রোফিট, অরলমাইট (বিটা), জ্যাকসন, জ্যাকসন 2, জিসন, ​​এক্সএমএল সিরিয়ালাইজার, গুগল এইচপি ক্লায়েন্ট, স্প্রিং অ্যান্ড্রয়েড ... বেশ অনেকটা দিয়ে ব্যবহার করতে পারেন। ভলির ওকে http ব্যবহার করা যেতে পারে এবং জিএসএন ব্যবহার করা যেতে পারে। এটাই.
  • ভলি আরও ইউআই চিনি সরবরাহ করে যা আরএস। ভলি নেটওয়ার্কআইমেজভিউ সরবরাহ করে, আরএস একটি স্পিসিলিস্ট অ্যাডাপ্টার সরবরাহ করে। বৈশিষ্ট্যের দিক থেকে এটি এখনও পর্যন্ত নয়, তবে আমি বিশ্বাস করি ভলি এই বিষয়টিতে আরও উন্নত।
  • প্রাথমিক প্রকাশের পর থেকে 200 টিরও বেশি বাগ রোবস্পাইসে সমাধান করা হয়েছে। এটি বেশ মজবুত এবং উত্পাদনে ব্যাপকভাবে ব্যবহৃত হয়েছে। ভলি কম পরিপক্ক তবে এর ব্যবহারকারীর বেসটি দ্রুত বাড়তে হবে (গুগল প্রভাব)।
  • রোবস্পাইস মভেন সেন্ট্রালে পাওয়া যায়। ভলি খুঁজে পাওয়া কঠিন;)

রবস্পাইস আরইএসটি কলের জন্য অ্যান্ড্রয়েড পরিষেবা ব্যবহার করে, আমরা জিএসএন পার্সিংয়ের প্রচেষ্টাটি হ্রাস করতে retrofit সহ রবস্পিস ব্যবহার করতে পারি, একইভাবে আমরা রোবসপিসের সাথে ভোলি (ট্র্যাড ভিত্তিক) ব্যবহার করতে পারি? (জিজ্ঞাসা করার জন্য এটি সঠিক qsn নিশ্চিত নয়) আমি কেবল পরিষেবা সহ ভলির জন্য অনুসন্ধান করছি!
LOG_TAG

1
ভোলির সাথে পরিষেবাটি মূলত আরএস। বা, কালানুক্রমিকভাবে বলতে গেলে, ভলি কোনও পরিষেবা ছাড়াই আরএস এবং অন্যান্য কয়েকটি বৈশিষ্ট্য অনুপস্থিত। এবং হ্যাঁ, আপনি আরএসের সাথে রেট্রোফিট ব্যবহার করতে পারেন, এবং আপনি চাইলে ওখটিপিও যোগ করতে পারেন।
Snicolas

7
ভলি কেন খুঁজে পাওয়া শক্ত? compile 'com.mcxiaoke.volley:library:1.0.+'
রব

1
@ রব এমন একটি সময় ছিল যখন ম্যাক্সিয়াওকের ক্লোন উপলব্ধ ছিল না। আপনাকে নিজের অ্যাপ্লিকেশনটিতে ম্যানুয়ালি ভলি অন্তর্ভুক্ত করতে হয়েছিল।
হিমশীতল

"ভল্লি মূল থ্রেডে আপনার পজোগুলি ডিসিজায়ালাইজ করবে"। আপনি ফেরত জেএসএন ডেটা পেতে পারেন এবং এটি যদি কোনও সমস্যা হয় তবে এটি একটি আলাদা থ্রেডে নিজেকে ডিসরিয়ালাইজ করতে পারেন।
অ্যান্ড্রয়েড ডেভ

20

অ্যান্ড্রয়েডের জন্য এএফ নেটওয়ার্কিং:

ফাস্ট অ্যান্ড্রয়েড নেটওয়ার্কিং হয় এখানে

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি সকল প্রকারের HTTP / HTTPS অনুরোধ যেমন GET, POST, DELETE, HEAD, PUT, PATCH সমর্থন করে

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি যে কোনও ধরণের ফাইল ডাউনলোড করতে সমর্থন করে

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি যে কোনও ধরণের ফাইল আপলোড সমর্থন করে (মাল্টিপার্ট আপলোড সমর্থন করে)

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি একটি অনুরোধ বাতিল করতে সমর্থন করে

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি যে কোনও অনুরোধের অগ্রাধিকার নির্ধারণকে সমর্থন করে (নিম্ন, মিডিয়াম, উচ্চ, তাত্ক্ষণিক)

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি আরএক্সজাভা সমর্থন করে

এটি যেমন নেটওয়ার্কিং স্তর হিসাবে OkHttp ব্যবহার করে, এটি সমর্থন করে:

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি এইচটিটিপি / 2 সমর্থন সমর্থন করে একই হোস্টের সমস্ত অনুরোধকে সকেট ভাগ করার অনুমতি দেয় allows

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি সংযোগ পুলিং ব্যবহার করে যা অনুরোধের বিলম্বকে হ্রাস করে (যদি HTTP / 2 উপলব্ধ না হয়)

স্বচ্ছ জিজেআইপি ডাউনলোডের আকার সঙ্কুচিত করে

দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি প্রতিক্রিয়া ক্যাচিং সমর্থন করে যা পুনরাবৃত্তির অনুরোধের জন্য নেটওয়ার্ককে সম্পূর্ণ এড়িয়ে চলে

ধন্যবাদ: গ্রন্থাগারটি আমার দ্বারা তৈরি করা হয়েছে


1
আপনি উল্লেখ করেছেন যে আপনার গ্রন্থাগারটি HTTP / 2 সমর্থন করে তবে HTTP / 2 সমর্থনের জন্য কোনও API প্রয়োজনীয়তা আছে কিনা তা আপনি বলবেন না। আমার বোধগম্যতা হল যে 5.0 এরও কম অ্যান্ড্রয়েড এপিআই স্তরে HTTP / 2 সমর্থন করার জন্য সঠিক এসএসএল এনক্রিপশন পদ্ধতি নেই। নক করা নয়, কেবলমাত্র আপনার প্রস্তাবিত সমাধানটিকে পুরোপুরি মূল্যায়নের চেষ্টা করা।
ডক্টর

@ অমিতশেখর: আমি কেবল জানতে চেয়েছিলাম যে অ্যান্ড্রয়েডে এপিআই কল করার জন্য কোনটি সেরা? আমি অ্যান্ড্রয়েড নেটওয়ার্কিং লাইব্রেরি ব্যবহার করছি, সুতরাং রেট্রোফিট, ভল্লি বা অ্যান্ড্রয়েড নেটওয়ার্কিং বাস্তবায়নের জন্য কোনটি দুর্দান্ত?
পার্থ ভায়ানী

@ অমিত শিখর মাল্টিপার্ট ইমেজ আপলোডের জন্য দ্রুত অ্যান্ড্রয়েড নেটওয়ার্কিং কতটা দক্ষ, বিশেষত যখন কম ইন্টারনেটের পরিস্থিতি আসে?
ব্যবহারকারী 3135923

18

অ্যাসিঙ্ক এইচটিটিপি ক্লায়েন্ট লুপজ বনাম ভোলি

আমার প্রকল্পের সুনির্দিষ্ট বৈশিষ্ট্যগুলি প্রতি 1-5 মিনিটে ছোট HTTP REST অনুরোধগুলি।

আমি একটি দীর্ঘ সময়ের জন্য একটি অ্যাসিঙ্ক এইচটিটিপি ক্লায়েন্ট (1.4.1) ব্যবহার করছি। ভ্যানিলা অ্যাপাচি httpClient বা একটি HTTP URL সংযোগ ব্যবহার করার চেয়ে পারফরম্যান্সটি আরও ভাল। যাইহোক, লাইব্রেরির নতুন সংস্করণটি আমার জন্য কাজ করছে না: লাইব্রেরির আন্ত ব্যতিক্রম কল কাটগুলির কাট চেইন।

সমস্ত উত্তর পড়া আমাকে নতুন কিছু চেষ্টা করার জন্য অনুপ্রাণিত করেছিল। আমি ভল্লি এইচটিটিপি লাইব্রেরিটি বেছে নিয়েছি।

কিছুক্ষণ পরীক্ষার পরেও এটি ব্যবহারের পরে, আমি স্পষ্ট দেখতে পাচ্ছি যে প্রতিক্রিয়ার সময়টি 1.5x, 2x ভলিতে নেমে এসেছে।

অ্যাসিঙ্ক এইচটিটিপি ক্লায়েন্টের চেয়ে retrofit ভাল? আমার এটি চেষ্টা করা দরকার তবে আমি নিশ্চিত যে ভলি আমার পক্ষে নয়।


Retrofit বনাম AsyncHttpClient সম্পর্কে কোনও বিশ্লেষণ ??? হ্যাঁ যদি সার্জি
ইশরয়েড


আমি কয়েক বছর ধরে অ্যাসিঙ্কএইচটিপিপ্লিনেন্ট ব্যবহার করছি। খারাপ দিকটি হ'ল গিথুব রেপো কমিটমেন্ট ছাড়াই 2 বছর।
ভিজিটর হুগো শোয়াব

এটি আর প্রকৃত নয়, অ্যাসিঙ্ক এইচটিপি খুব পুরানো ফ্যাশন। অন্য লাইব্রেরিতে পরিবর্তন বিবেচনা করুন। ভলি খুব ভাল পছন্দ হয়ে উঠেছে।
সের্গেই ভাকুলেনকো

সের্গেই, @ ইশরয়েড আমি এখনও আপনার প্রশ্নের উত্তর খুঁজছি আমি AsyncHttpClient ব্যবহার করছি আমাকে আরএক্সজেভা রেট্রোফিট বা অন্য যে কোনও কিছু ব্যবহার করা উচিত..আর দয়া করে আমাকে জানাতে দিন .. অধীর আগ্রহে প্রতিক্রিয়ার অপেক্ষায় রয়েছেন
ডিপ ডেভ

11

ভলির সাথে কাজ করার আমার অভিজ্ঞতা থেকে কেবল আলোচনায় কিছু যোগ করতে:

  1. ভলি কোনও অর্থে স্ট্রিমিং আপলোড বা ডাউনলোডগুলি পরিচালনা করে না। এটি হ'ল পুরো অনুরোধের বডিটি মেমরির মধ্যে থাকতে হবে এবং আপনি OutputStreamঅনুরোধের বুকটি অন্তর্নিহিত সকেটে লেখার জন্য ব্যবহার করতে পারবেন না বা আপনি InputStreamপ্রতিক্রিয়া বডিটি পড়তে কোনও ব্যবহার করতে পারবেন না , যেমনটি মৌলিক HttpURLConnection। সুতরাং, বড় ফাইল আপলোড বা ডাউনলোড করার জন্য ভোলি একটি দুর্বল পছন্দ। আপনার অনুরোধ এবং প্রতিক্রিয়াগুলি ছোট হওয়া উচিত। এটি ভলির অন্যতম বৃহত্তম সীমাবদ্ধতা যা আমি ব্যক্তিগতভাবে সম্মুখীন হয়েছি। এটি মূল্যবান কিসের জন্য, OkHttp এর সাথে স্ট্রিমগুলির সাথে কাজ করার জন্য ইন্টারফেস রয়েছে।

  2. অফিসিয়াল ডকুমেন্টেশনের অভাব বিরক্তিকর, যদিও আমি উত্স কোডটি পড়ে এটির চারপাশে কাজ করতে সক্ষম হয়েছি, যা অনুসরণ করা বেশ সহজ। সবচেয়ে বিরক্তিকর বিষয়টি হ'ল, যতদূর আমি বলতে পারি ভলির কোনও আনুষ্ঠানিক প্রকাশের সংস্করণ নেই এবং কোনও মাভেন বা গ্রেডল আর্টিক্যাক্ট নেই, এবং তাই নির্ভরতা হিসাবে এটি পরিচালনা করা স্কোয়ারের যে কোনও লাইব্রেরি প্রকাশ করেছে তার চেয়ে মাথাব্যথার কারণ হয়ে দাঁড়ায় ley । আপনি কেবল একটি রেপো ক্লোন করেছেন, একটি জার তৈরি করুন এবং আপনি নিজেরাই। বাগ ফিক্স খুঁজছেন? আনুন এবং আশা করি এটি সেখানে আছে। আপনি অন্য কিছু জিনিস পেতে পারেন; এটি নথিভুক্ত করা হবে না। আমার মতে, কার্যকরভাবে এর অর্থ হ'ল কোড বেস যুক্তিসঙ্গতভাবে সক্রিয় থাকা সত্ত্বেও ভোলি একটি অসমর্থিত তৃতীয় পক্ষের লাইব্রেরি। গুহাত সম্রাট

  3. নিট হিসাবে, শ্রেণি / অনুরোধের ধরণের (জসনঅবজেটরেইক, ইমেজআরকোয়েস্ট, ইত্যাদি) সাথে সামগ্রী-প্রকার বেঁধে রাখা একধরনের উদ্ভট এবং কলিং কোডটির নমনীয়তাটিকে কিছুটা হ্রাস করে, আপনি ভলির বিদ্যমান অনুরোধের অনুরূপ শ্রেণিবিন্যাসের সাথে আবদ্ধ থাকায়। আমি ঠিক অন্য কোনও মত শিরোনাম হিসাবে কনটেন্ট টাইপ সেট করার সরলতা পছন্দ করি (যাইহোক ভলির সাথে এটি করবেন না; আপনি দুটি কন্টেন্ট-টাইপ শিরোনাম দিয়ে শেষ করবেন!)। যদিও এটি আমার ব্যক্তিগত মতামত, এবং এটি প্রায় কাজ করা যেতে পারে।

তার মানে এই নয় যে ভলির কিছু দরকারী বৈশিষ্ট্য নেই। এটা অবশ্যই করে। সহজেই কাস্টমাইজযোগ্য পুনরায় চেষ্টা নীতি, স্বচ্ছ ক্যাচিং, একটি বাতিলকরণ API এবং অনুরোধের সময়সূচী এবং সমবর্তী সংযোগগুলির জন্য সমর্থন দুর্দান্ত বৈশিষ্ট্য। কেবল জেনে নিন যে এটি সমস্ত এইচটিটিপি ব্যবহারের ক্ষেত্রে নয় (উপরের আইটেমটি দেখুন), এবং ভলিকে আপনার অ্যাপ্লিকেশনটিতে ব্যবহারের ক্ষেত্রে (আইটেম 2) রাখার ক্ষেত্রে কিছু মাথা ব্যথা জড়িত রয়েছে।


সম্পূর্ণ মেমরি লোড হচ্ছে আমি আস্তে আস্তে আমাকে হত্যা করছি। Godশ্বরের ধন্যবাদ অন্য কেউ এটি উল্লেখ করেছে।
TheSunny

গ্রন্থাগারটি আপনার অনুরোধের বডিটির একটি রক্ষণাত্মক অনুলিপিও তৈরি করতে পারে, যাতে বড় অনুরোধগুলির জন্য মেমরির খরচ আপনার প্রত্যাশার দ্বিগুণ হতে পারে।
জেফ

9

আমি সম্প্রতি আয়ন নামের একটি লিব পেয়েছি যা টেবিলে কিছুটা বাড়তি আনবে।

আয়নটিতে ইমেজভিউ, জেএসএন (জিএসওনের সহায়তায়), ফাইল এবং খুব সহজ ইউআই থ্রেডিং সমর্থন সহ ইমেজ ডাউনলোডের জন্য অন্তর্নির্মিত সমর্থন রয়েছে।

আমি এটি একটি নতুন প্রকল্পে ব্যবহার করছি এবং এখনও পর্যন্ত ফলাফল ভাল হয়েছে। ভোলি বা রেট্রোফিটের চেয়ে এর ব্যবহার অনেক সহজ।


2
আয়ন বনাম retrofit, আপনি কোনটি সুপারিশ করবেন?
শ্রীকান্ত করুণাঘাট

রিট্রোফিটটি আয়নটির চেয়ে আরও ভাল
রাজেশ কোস্তি

4

গৃহীত উত্তর যোগ করা হচ্ছে এবং কি LOG_TAG বলেন .... ভলি একটি ব্যাকগ্রাউন্ড থ্রেড এ আপনার ডেটা বিশ্লেষণ করতে জন্য আপনাকে উপশ্রেণী আবশ্যক Request<YourClassName>যেমন onResponseমুখ্য থ্রেডে পদ্ধতি বলা হয় এবং প্রধান থ্রেডে পার্স ল্যাগ থেকে UI 'তে হতে পারে আপনার প্রতিক্রিয়া যদি বড়. কিভাবে এটি করতে এখানে পড়ুন ।


1
ডান ... ভলি মূল থ্রেডের প্রতিক্রিয়াটিকে পার্স করে যা প্রতিক্রিয়া সত্যিই বড় হলে ম ui পিছিয়ে যায়।
গোপাল সিং সিরভি

3

পুনঃনির্মাণ 1.9.0 বনাম রোবস্পাইস

আমি উভয়ই আমার অ্যাপটিতে ব্যবহার করছি।

যখনই আমি নেস্টেড জেএসএন ক্লাস পার্স করি তখন রোবসপিস রেট্রোফিটের চেয়ে দ্রুত কাজ করে। কারণ স্পাইস ম্যানেজারটি আপনার জন্য সবকিছু করবে। পুনঃনির্মাণে আপনাকে গসনকনভার্টার তৈরি করতে হবে এবং এটি ডিসরিয়ালাইজ করা উচিত।

আমি একই ক্রিয়াকলাপে দুটি টুকরো তৈরি করেছি এবং একই সময়ে দুটি একই ধরণের ইউআরএল দিয়েছি।

09-23 20:12:32.830  16002-16002/com.urbanpro.seeker E/RETROFIT   RestAdapter Init
09-23 20:12:32.833  16002-16002/com.urbanpro.seeker E/RETROFIT calling the method
09-23 20:12:32.837  16002-16002/com.urbanpro.seeker E/ROBOSPICE initialzig spice manager
09-23 20:12:32.860  16002-16002/com.urbanpro.seeker E/ROBOSPICE Executing the method
09-23 20:12:33.537  16002-16002/com.urbanpro.seeker E/ROBOSPICE on SUcceess
09-23 20:12:33.553  16002-16002/com.urbanpro.seeker E/ROBOSPICE gettting the all contents
09-23 20:12:33.601  16002-21819/com.urbanpro.seeker E/RETROFIT deseriazation starts
09-23 20:12:33.603  16002-21819/com.urbanpro.seeker E/RETROFIT deseriazation ends

2

এবং এখনও অন্য বিকল্প: https://github.com/apptik/jus

  • এটি ভলির মতো মডুলার, তবে আরও প্রসারিত এবং ডকুমেন্টেশনগুলি উন্নত করছে, বিভিন্ন HTTP স্ট্যাক এবং বাক্সের বাইরে রূপান্তরকারীদের সমর্থন করছে
  • এটিতে retrofit এর মতো সার্ভারের API ইন্টারফেস ম্যাপিংগুলি তৈরি করার একটি মডিউল রয়েছে
  • এটিতে জাভাআরএক্স সমর্থনও রয়েছে

এবং অন্যান্য অনেক সুবিধাজনক বৈশিষ্ট্য যেমন মার্কার, ট্রান্সফর্মার ইত্যাদি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.