مقایسه کتابخانه Volley و Retrofit
سلام توسعه دهندگان عزیز در این مقاله به بررسی مقایسه کتابخانه Volley و Retrofit می پردازیم قبلا هرکدام از کتابخانه های Volley و Retrofit ار توضیح داده در این مقاله بیشتر به بررسی مزایا و معایب کتابخانه های Volley و Retrofit می پردازیم با ما همراه باشید تا فرق اصلی کتابخانه های Volley و Retrofit را متوجه شوید.
در این مطلب تنها به بررسی سرعت و تفاوت کتابخانه ها می پردازیم و نمیگیم از Retrofit استفاده کنید یا Volley بسته به برداشتی که خواهید داشت منوجه می شوید هرکدام برای چه بخشی و چه پروژه قابل استفاده تر , بهتر و بهینه تر است.
Volley یا Retrofit ؟
بهتره با هم سادق باشیم من اگر خودم باشم ترجیح میدم از Volley نسبت به Retrofit استفاده کنم (دلایل خودم را دارم) volley برای خیلی از کار مثل دریافت عکس از اینترنت یا دریافت اطلاعات (مثل Json و Xml) از اینترنت فوق العاده است در سوی دیگر Retrofit برپاییه OkHttp کار می کند ولی volley برپاییه Apache, HttpUrlConnection, Apache-4 و OkHttp کار می کند یعنی بروی این نوع شبکه ها قابل پیاده سازی است شاید پیاده سازی تعداد Request های بالا با کتابخانه Retrofit خیلی ساده تر باشد چون تمامی Request ها در یک فایل Handle خواهند شد.
کدام کتاب خانه (Volley یاRetrofit) راحت تر پیاده سازی می شود ؟
شاید در ابتدا فکر کنید کتابخانه Volley جواب درست است اما اشتباه کردید Retrofit ساده تر از Volley است اگر فکر می کنید Volley راحت تر است پس هنوز نحوه درست استفاده از کتابخانه Volley را یاد نگرفته اید ! اگر فکر می کنید پیاده سازی Volley کپی و پیست است اشتباه می کنید کمی دقیق تر در مورد این کتابخانه تحقیق کنید. گوگل تنها چند کد ساده برای تست و قرار داده است هرچند که در StackOverflow می توانید بیش از هزاران کد در رابطه با کتابخانه Volley پیدا کنید.
از ویژگی های کتابخانه Volley می توان به موارد زیر اشاره کرد
- Volley از صدا زدن تکرای جلوگیری می کند در صورتی که Retrofit این کار رو نمی کند.
- کتباخانه Volley بعد از منتشر شدن آپدیت نشد ولی Retrofit به صورت ماهانه بروزرسانی می شود پس هنوز مشکلاتی دارد.
- Volley براساس Caching کار می کند اگر یک Request چندین بار به صورت مداوم یک نتیجه را برگرداند از Cache به جای دانلود اطلاعات استفاده می کند.
- کتابخانه Volley حجم کمتری نسبت به Retrofit دارد.
توصیه من برای استفاده از کتابخانه سمت سرور
اگر مثلا می خواهید چند عکس را نمایش دهید از کتابخانه ION استفاده کنید ! اگر اپلیکیشن شما از RESTful استفاده می کند بهتر است از کتابخانه Retrofit استفاده کنید و درگیر پیچیدگی های کتابخانه Volley نشوید اگر می خواهید Json پارس کنید Volley را پیشنهاد می کنم هرچند که در Retrofit با استفاده از Gson در چند ثانیه می توانید عمل پارس را انجام دهید بعد از تمامی گفته بالا باید حقیقت را پذیرفت که در بیشتر موارد Retrofit برنده اصلی خواهد بود.
به صورت شخی یک سرویس ساده بروی localhost خودم ایجاد کردم و سرعت هرکدام از کتابخانه ها را بررسی کردم (منظور از سرعت دریافت یک Response به صورت Raw است.)
خروجی که برگشت داده می شود از وب سرویس ساده من 8 آیتم (8 خبر روز از یک سایت ایرانی بود) تمامی تست ها بروی emulator با Api 23 تست شده است.
نتیجه به شکل زیر شده است
Retrofit برای دریافت اطلاعات 41ms زمان سپری کرد.
Retrofit همراه با Caching (ذخیره در حافظه جانبی) 21ms سپری کرد.
Retrofit برای Post اطلاعات (3 اطلاعات همان خبر ها) 14ms زمان سپری کرد.
Volley برای دریافت اطلاعات 40ms زمان سپری کرد.
Volley همراه با Caching تنها 13ms زمان سپری کرد.
Volley برای Post اطلاعات 15ms سپری کرد.
یک توضیح در مورد سیستم Caching کتابخانه های Volley و Retrofit بدم Volley برای Caching از سیستم memory cache استفاده می کند و Retrofit برای Caching از سیستم Disk Caching استفاده می کند Volley سریعتر است ! شاید بگوید چندین میلی ثانیه را نمی توان به بهتر بودن کتابخانه Volley نسبت به کتابخانه Retrofit دانست و حرف کاملا درست و منطقی است تمامی تست های بالا به صورت Local بوده است و نمی توان ملاک دانست چون براساس سروری که استفاده می شود تمامی محاسبات بالا تغییر خواهند کرد.
نتیجه گیری
همانطور که در ابتدا گفتم مقایسه دو کتابخانه تنها رساندن نظر شخی نویسنده به خواننده است مثل این می ماند که بخواهیم سیب و پرتغال رو باهم مقایسه کنیم کتابخانه Volley و کتابخانه Retrofit دارای function های مختلفی هستند ولی چون روی مبحث Networking کار می کنند باید واقع بینانه یکی از آنها را انتخاب کنید و آخرین نصیحت ابتدا الزامات رو بررسی کنید سپس از هرکدام از کتابخانه ها استفاده کنید.
لینک های مفید
کتابخانه Volley چیست؟
آموزش Volley در برنامه نویسی اندروید
Retrofit چیست ؟
آموزش Retrofit در برنامه نویسی اندروید
موفق و پیروز باشید.
سلام. خیلی ممنون از سایت فوق العادتون. من یکی از بازدید کنندگان همیشگی شما هستم.
متن فوق العاده ای بود تنها چند اشتباه تایپی وجود داشت که لازم دونستم اطلاع دهم.کلمات شخصی به صورت شخی نوشته شده و صادق به صورت سادق نوشته شده و متوجه در قسمت ابتدایی به صورت منوجه نوشته شده.
لازم به تایید این نظر نیست و بنده صرفا برای اطلاع رسانی بیان کردم. به امید موفقیت
باتشکر
سلام و درود
خیلی ممنون از نظر شما
طبق تحقیقاتی ک دیدم تو سایت های خارجی انجام شده سرعت رتروفیت خیلی بیشتر از والی هستش شما مطمئن هستین ک خودتون چنین آزمایشی رو انجام دادین دوست عزیز؟https://image.slidesharecdn.com/retrovsvolley2-160623111332/95/retro-vs-volley-2-5-638.jpg?cb=1466687221
نظرت درباره AndroidNetworking چیه؟ باهاش کار کردم… گویا از این دوتا خیلی بهتره…
سلام دوست عزیز
من یک برنامه ای میخوام بنویسم که ازسمت سرور تمام اطلاعات رو میخواد بخونه من چه چیزهای رو بایدتوی اپم پیاده کنم ؟
باید با وب سرویس ها بتونید کار کنید مانند همین والی و رتروفیت