سلام
برنامه نویس وظیفه داریان هستم. من چند روزی بود که سعی داشتم یه برنامه اندرودی را برای تست شخصی خودم بنویسم. از اونجایی هم که من برنامه بیشتر سی شارپ کار کردم. خب طبیعتا داخل اندروید استودیو، حسابی سرگیجه گرفته بودم . این وسطا هم یکی از دوستام سایتی بهم معرفی کرد که بتونم پکیجای مشابه همو گیر بیارم.
اسم این سایت Awesome Android هستش. خیلی هم جالبه. شما کافیه اسم پکیجی که استفاده می کنی را سرچ کنی. این سایت تا جایی که می تونه در موردش بهت اطلاعات میده. و همچنین یک لیستی از پکیج های مشابه و امتیازاتش را هم بهتون پیشنهاد میده.
منم این مدت شدیدا درگیر شده بودم با Retrofit. کارمو راه نمی انداخت. پس مجبور شدم برم ببینم جایگزینش چی موجوده. ( که البته آخرشم دست به دامن خودش شدم ??). اینم لیست اون سایت.
اما به هر حال به نظرم این چنتا که نام می برم از بقیشون کاربردی ترن.
1- OkHttp
این مورد یکی از خام ترین و سطح پایین ترین حالت های ارسال درخواست Http است. مهم ترین تفاوتشم اینه که در Retrofit در async راحت تر ارسال میشود. اما امکانات جالبی هم داره. مثل Connection pooling و gzipping.
تو این مورد من بیشتر بخاطر نوع deserialize کردن retrofit اونو ترجیح دادم. چون خودش مستقیما بجای json اون دیتا کلاس مدنظرم رو تحویلم میده.
در استک اور فلو هم بحثی جالبی در مورد تفاوت اینها مطرح شده بود. که خوندنش خارج از لطف نیست.
2-Google Volley
این مورد توسط خود گوگل ارائه شده. و به نظرم خیلی جالبه و کاربردیه. امکاناتی مثل مکانیزم retrying و مدیریت کش بسیار قوی. که در retrofit خبری از اونها نیست. یا امکانات مدیریت بارگزاری تصاویر که در retrofit باید بوسیله Picasso یا glide انجام بشوند.
اما یکی هم مثل قبلی برای تبدیل Json به مدل کاری نکرده. یا برای درخواست های POST و multypart برنامه نویس مجبوره که یخورده بیشتر و پیچیده تر کد نویسی بکنه. که به نظرم اگر ویژگی caching براتون مهمه، ارزشش رو داره.
اینجا هم در Quera انگلیسی بحث جالبی در مورد تفاوتشون وجود داره.
3-Fuel HTTP Library
این یک مورد در اون لیستی که گفتم موجود نیست. ولی خب طبق یک سری پیشنهادات من از این کتابخانه هم استفاده کردم. این کتابخانه جوان تر از بقیست. برعکس retrofit که برای جاوا نوشته شده، و در اندروید هم کاربرد داره. این یکی برای kotlin نوشته شده و در اندروید هم موجوده.
کتبخانه Fuel برعکس retrofit از OkHttp استفاده نمی کنه. و سراغ HttpUrlConnection رفته. و طبق ادعای یکی از توسعه دهندگانش در گیت هاب.
گفته شده که از لحاظ عملکردی خیلی سرتر از بقیه نیست. و بیشتر تلاش می کنن که استفاده ازش راحت باشه.
که البته خدایی هم جالب بود ایدش. آموزشش اینجا موجوده. خیلی شبیه LINQ Query های سی شارپ نوشته شده. ولی خب بازم من باهاش همون مشکلات قبلی رو داشتم. اینم json تحویل میداد. نه دیتا کلاس.
جمع بندی
به هر حال من خودم به شخصه ترجیح میدم از کتابخانه هایی استفاده بکنم که عمومی تر هستن. تا هم داکیومنت قوی تر در اختیارم باشه. هم باگ کمتری داشته باشن. به همین دلیل بود که بازم از همون Retrofit دوست داشتنی استفاده کردم.
به نظر شما، کدومشون کاربردی تره؟؟
ترجیحتون کدوم کتابخونست؟؟
امیدوارم این مطلب کوتاه براتون مفید واقع شده باشه.
اینم یه مطلب آموزشی در مورد Retrofit اگر علاقه داشتید باهاش آشنا بشوید.
با تشکر. داریان MH