مقایسه اجمالی دو کتابخانه volley و رتروفیت 2
در این مطلب قصد داریم در مورد تفاوت کتابخانه volley و رتروفیت 2 توضیح دهیم.
Retrofit 2 و Volley هر دو از کتابخانه های بزرگ شبکه برای برنامه های آندروید مدرن هستند، اما هر کدام دارای نقاط قوت خود است که برای هر پروژه ارزش خاص خود را دارند. اگر مورد استفاده شما یک API استاندارد REST با پاسخ JSON باشد از Retrofit استفاده کنید و اگرنیازی به بررسی بسیاری از نیازهای سفارشی از لحاظ ذخیره سازی، اولویت بندی درخواست، تلاش مجدد و غیره ندارید. اگر شما نیازهای غیر معمول / ریز و انتظار انعطاف پذیری زیادی از لایه شبکه دارید که در آینده منجر به افزودن تعداد کد بسیار زیادی میشود. اگر میخواهید فایل هایی با حجم بسیار بالا دانلود و stream کنید بهتره که از هیچکدوم استفاده نکنید و به جاش ازیک downloadManager استفاده کنید.
همه ما به عنوان توسعه دهندگان اندروید، دو کتابخانه بزرگ شبکه ای داریم Retrofit ,Volley Google .به طور معمول، وقتی که ما 2 انتخاب به همان اندازه خوب داشته باشیم، می خواهیم تصمیم درست بگیریم . بر اساس موارد استفاده واقعی و رشد پیش بینی شده برنامه های ما در آینده. به طور خاص، توصیه می کنم بر آنچه که واقعا نیاز دارید تمرکز کنید و یکی از این دو کتابخانه را که قوی ترین پشتیبانی را برای شما فراهم می کند انتخاب کنید.
راحتی در استفاده
Retrofit برای استفاده بسیار ساده است. به شما اجازه می دهد تا با ساده ترین دستورات جاوا با api ارتباط برقرار کنید. شما فقط تعریف می کنید که کدام URL ها وچه نوع پارامترهایی برای درخواست یا پاسخ به عنوان کلاس های جاوا در متد های آن قرار گیرند .تجزیه JSON / XML به طور کامل توسط آن (با کمک Gson برای تجزیه JSON)، همراه با پشتیبانی از فرمت های دلخواه با serialization / deserialization Pluggable انجام می شود. مستندات رتروفیت وسیع وعالی است. خودتان میتوانید با نمونه برنامه ارسال پیامک به کمک رتروفیت راحتی و استفاده آسان از آن را احساس کنید.
اما volley برای استفاده کمی پیچیده تر است.تنها response body هاییی که والی از آنها پشتیبانی می کند Jason object,Jason array,string ,image هستند.
برای اجتناب از بارگیری از JSONObjects خودتان و استفاده از آن مانند Retrofit، شما باید این کلاس <GsonRequest <T را وارد کنید که اساسا یک درخواست را ارائه می کند که پاسخ آن به نوع T توسط Gson تبدیل می شود. هیچ پشتیبانی از درگاه XML نیز وجود ندارد.مستندات رسمی در Volley تا حدودی کم است، اگر چه چند آموزش پایه توسط گوگل، Javadocs غیر رسمی و دانش گسترده پراکنده در StackOverflow وجود دارد.
در اینجا یک نمونه کد کوتاه volley را مشاهده میکنید:
// instantiate the RequestQueue RequestQueue queue = Volley.newRequestQueue(this); String url ="http://www.google.com"; // request a string response asynchronously from the provided URL StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { @Override public void onResponse(String response) { // ... } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // ... } }); // add the request to the RequestQueue queue.add(stringRequest);
هردو کتابخانه از Asynctask با حداقل کد لازم استفاده میکنند .همانطور که در کدهای بالا مشاهده میکنید هیچ خبری از asynctask و نیز parse کردن جیسون بصورت دستی نیست که از این نظر ما این سادگی را مدیون این دو کتابخانه بزرگ هستیم.
لود کردن تصاویر :
رتروفیت به تنهایی قابلیت لود کردن تصاویر را ندارد.کتابخانه کوچک دیگری به نام Picasso که بطور قطع همه شما با آن آشنایی دارید برای لود کردن تصاویر از سرور در کنار رتروفیت پیشنهاد میشود.
Volley دارای پشتیبانی ابتدایی برای بارگذاری تصویر است که برای موارد استفاده با تعداد کمی از تصاویر کافی است و نیازی به امکانات زیاد نیست. با این حال، برای موارد بی قید و شرط، شما در کنار ان نیاز به استفاده از کتابخانه glide دارید.
اولویت بندی درخواست ، لغو و تلاش مجدد:
Retrofit: اولویت بندی درخواست ها را پشتیبانی نمیکند، گرچه هک های موجود وجود دارد؛ پشتیبانی از لغو درخواست از نسخه دوم به بعد در رتروفیت پشتیبانی می شود؛ درخواست مجدد نیز در رتروفیت پشتیبانی میشود.
Volley: اولویت بندی در خواست ها را با کمی کد اضافی پشتیبانی میکند؛ لغو در خواست و همچینین درخواست و تلاش مجدد نیز در والی پشتیبانی میشود.
سرعت:
طبق تحقیقات انجام شده بر روی سرعت اتصال به وب سرویس در کتابخانه های رتروفیت و والی محققان به این نتیجه رسیدند که والی از نظر سرعت در اتصال به وب سرویس قدرت وسرعت بسیار بیشتری از تمامی راه های اتصال به سرویس از جمله رتروفیت دارد.