رتروفیت یا والی؟

شهریور 6, 1398     زهرا حسینی    

رتروفیت یا والی؟

امروزه ، تقریباً همه اپلیکیشن های تلفن همراه با استفاده از شبکه اینترنت کار می کنند و با اتصال به سرور عملیاتی را انجام می دهند مانند اپلیکیشن های اسنپ، تلگرام، ایمیل، دیکشنری ها و… . این قابلیت با استفاده از کتابخانه های ارتباط با سرورقابل پیاده سازی می باشد. دو کتابخانه معروف برای ارتباط با سرور وجود دارد : رتروفیت و والی .

اما سوالی که برای توسعه دهندگان در ذهن می آید این است که رتروفیت بهتر است یا والی ؟ خب برای پاسخ به این سوال، در این مقاله  این دو کتابخانه را با هم مقایسه می کنیم.
  • رتروفیت سریع تر از والی است ؟ احتمالا با پاسخ این سوال سوپرایز خواهید شد!!

چیزی که بارها و بارها از توسعه دهندگان شنیده می شود این است که به خاطر سرعت بیشتر رتروفیت از والی به این کتابخانه سوئیچ می کنند. اما آیا این ادعا درست است ؟

هنگامی که صحبت از کتابخانه ها در توسعه اندروید می شود، به نظر می رسد  Jake Wharton ، fanboy-ism و Square Inc زنده و سرحال هستند . در حقیقت ، اگر به جوایز GitHub برای جاوا نگاه کنید ، کاملاً روشن است که Square و Jake Wharton به طور شگفت انگیزی برای توسعه اندروید کار کرده اند که اگر به اندازه گوگل نباشد کمتر نیست.

والی یا رتروفیت ؟

من شخصاٌ والی را به رتروفیت ترجیح میدهم و برای این انتخاب هم دلایلی دارم ؛ اولاً من با کدهای والی به خوبی آشنایی دارم و برای ساختار و استایل پروژه های من مناسب است . دوماً با استفاده از والی می توانید امکانات زیادی را به صورت رایگان در اختیار داشته باشید. رتروفیت در واقع استفاده از سرویس های وب RESTful را  آسان تر می کند در حالی که هدف والی این است که تمام های نیازهای شما در ارتباط با سرور را مخصوصاً برای اندروید برطرف کند.

موارد استفاده / پیچیدگی کد:

استفاده از هر دو کتابخانه رتروفیت و والی آسان است و هردوی آنها امکان برقرار فراخوانی های شبکه ای  به صورت همزمان و غیر همزمان را فراهم می کنند.

اگر بخواهیم در مورد هندل کردن  request و response صحبت کنیم ، رتروفیت فراخوانی api را مانند متد ساده فراخوانی جاوا انجام می دهد و همچنین پارس کردن json/xml را نیز هندل می کند. این در حالیست که با استفاده از والی برای انجام همین پارس کردن باید کدهای اضافی بنویسیم  (چون باید یک request سفارشی ایجاد کنیم).

بارگیری تصویر:

رتروفیت به خودی خود برای بارگیری تصاویر از شبکه پشتیبانی نمی شود و برای این کاراستفاده از کتابخانه کوچک دیگری به نام Picasso  توصیه شده است. البته این عیب نیست زیرا اولاً پیكاسو به راحتی در رتروفیت  قابل استفاده است ، ثانیاً بدین وسیله از سنگین شدن apk در صورت عدم نیاز به بارگیری تصویر ، جلوگیری می کند. به علاوه اگر به دنبال یک کتابخانه کوچکتر و آسان برای تصاویر باشید، این میتواند یک مزیت تلقی شود.

والی دارای پشتیبانی اولیه برای بارگذاری تصویر است که برای تعداد کمی از تصاویرکه ویژگی های مورد نیاز کمی دارند،  کافیست .

کارایی و ذخیره سازی:

هر دو كتابخانه از thread pools  استفاده می كنند و چندین درخواست را به صورت موازی اجرا می كنند و هر دو كتابخانه OkHttp  را پشتیبانی می كنند.

رتروفیت : اگر سرور شما هدرهای کنترل صحیح را تنظیم کند ، حافظه پنهان باید “فقط کار کند”. اگر نه ، یا اگر سعی در انجام کاری غیر عادی دارید ، ممکن است از شانس خود خارج شوید.تنها اهرمی که می توانید به اینجا بپیچید ، لایه HTTP مشتری شما (OkHttp ، HttpUrlConnection و غیره) است .

والی : والی قطعاً مکانیزمی دقیق تر و انعطاف پذیرتر برای  ذخیره سازی را دارد.

درخواست های POST + بارگذاری چند قسمته :

رتروفیت از درخواست های POST  و بارگذاری فایل های چند قسمته را به طور کامل پشتیبانی می کند .

والی از درخواست های POST پشتیبانی می کند ، اما باید اشیاء جاوا خود را به JSONObjects (مانند Gson) تبدیل کنید. همچنین از درخواست های چند قسمته پشتیبانی می کند اما باید کلاس های اضافی یا معادل آن را اضافه کنید.

ذخیره سازی:

رتروفیت از ذخیره سازی پشتیبانی نمی کند.

والی دارای مکانیزم ذخیره سازی بسیار دقیق و انعطاف پذیر است. وقتی درخواستی از طریق والی انجام می شود ، ابتدا در صورت یافتن حافظه پنهان ، پاسخ مناسب را بررسی می کند.

سایر ویژگی ها :

  • کانفیگ کردن رتروفیت بسیار ساده تر است . اما با والی بیشتر توسعه دهندگان متوسط ، برای کانفیگ کردن والی دست و پنجه نرم می کنند. خوشبختانه کدهای زیادی وجود دارد که توسعه دهندگان می توانند آنها را کپی کرده و استفاده کنند اما به هر حال نمیدانند که دقیقا چه کاری انجام می دهند .
  • والی از فراخوانی های تکراری جلوگیری می کند.
  • والی پشتیبانی از پردازش تصویر شبکه را ارائه می دهد.
  • والی می تواند با محبوب ترین سرویس گیرندگان HTTP ادغام شود که شامل OkHttp هم هست در حالی که رتروفیت به OkHttp متکی است. (کتابخانه های والی و تروفیت به تنهایی بحث اینترنت را ساپورت نمی کنند ،در واقع برای رتروفیت OkHttp درخواست ها را به سرور ارسال می کند و والی می تواند با هر کتابخانه ای که برای ارسال درخواست به سرور استفاده می شود مثال OkHttp ،  HTTP  و … کار کند اما رتروفیت فقط می تواند با OkHttp این عمل را انجام دهد .)
  • والی در بحث کش کردن خیلی قوی تر از رتروفیت عمل می کند.
  • رتروفیت پیکربندی رهگیری HTTP را بسیار ساده تر می کند (اگر می خواهید قبل یا بعد از فراخوانی HTTP کاری انجام دهید).
  • رتروفیت وابسته به OkHttp می باشد و OkHttp  به Okio تکیه می کند و این باعث هدر رفت حافظه می شود. بنابراین اگر حجم کتابخانه برای شما مهم باشد استفاده از کتابخانه والی گزینه بهتری می باشد.

به طور کلی اگر اپ شما یک اپ ساده است از کتابخانه ION استفاده کنید. ولی اگر اپ شما پیچیده است و نمیخواهید با کانفیگ های پیچیده والی درگیر نشوید ، رتروفیت گزینه بهتری می باشد.

نتیجه گیری :

مقایسه والی و رتروفیت به نظر من واقعاً یک سناریوی سیب و پرتقال است. این دو کتابخانه عملکردهای متفاوتی دارند اما از آنجا که با شبکه کار می کنند ، فقط از یکی از آنها می توانید استفاده می کنید. بهترین توصیه من این است که الزامات خود را به بهترین شکل ممکن درک کنید و کتابخانه ای را انتخاب کنید که برای شما بهتر باشد.

یادگیری :

اگر علاقه مند به یادگیری هر یک از این کتابخانه هستید می توانید از آموزش های وب سایت ویادولوپرز استفاده کنید . آموزش های مقدماتی و پیشرفته کتابخانه والی ضبط شده و برای استفاده شما عزیزان روی وب سایت قرار گرفته شده است لذا برای استفاده از هریک از این آموزش ها روی لینک های زیر کلیک کنید . به علاوه آموزش کتابخانه رتروفیت در حال ضبط توسط مدرسان ما می باشد و به زودی روی سایت قرار خواهد گرفت .

آموزش مقدماتی کتابخانه والی
آموزش پیشرفته کتابخانه والی

 

منبع : Retrofit vs Volley Is Retrofit faster than Volley
دسته‌بندی‌ : بلاگ

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Rating*