سلام
این نوشته فقط جمع بندی تجربیات شخصی و حرف های دوستان و همکاراس. ممکنه شما نظر دیگه ای داشته باشید.
فکر میکنم مقایسه ی جالبی بشه.
برای ارسال درخواست های client تو اندروید راه های زیادی وجود داره و کتابخونه های زیادی ارائه شده. اما سه تا از اونا خیلی سرو صدا کردن و اکثر آموزش های موجود تو اینترنت روی یه سه مورد تمرکز دارن. توی این مقاله میخوام این سه تا رو با هم مقایسه کنم و ببینیم کدوم یکی از اینا بدردبخور تره. البته اینم فراموش نکنید که اول و آخر شما از چیزی باید استفاده کنید که باهاش راحتین و این یه مقاله خیلی نباید روتون تاثیر بزاره.
کتابخونه ی Volley از طرف گوگل ارائه شد. خیلی سبکه و کار باهاش خیلی سخت نیست. مشکل کم نداره و امکانات زیادی در اختیار شما قرار نمیده و یک مقدار هم کند عمل میکنه. درواقع خیلی نمیخوام روی این کتابخونه مانور بدم چون که خودم یه مدت ازش استفاده کردم و خوشم نیومد. طرفدارای کتابخونه ی volley خیلی متعصبن چون به هرحال مال گوگله. به نظر من والی معروف شد چون توسط یه برند معروف ارائه شد. اما قرار نیست هرچی از طرف گوگل بود خوب باشه که. اگر بخوایم نظر برنامه نویسای حرفه ای رو بدونیم باید یه سر به Github کتابخونه بزنیم و ببینیم برنامه نویسا چقدر توی توسعهی اون فعال بودن.
توی گیت هاب، Volley فقط 2400 تا لایک، 591 fork و 1 Branch داره که در مقابل موارد دیگه اصلا حرفی برای گفتن نداره. به نظرم اگر دارید ازش استفاده میکنید تجدید نظر کنید.
سبک، سریع، قدرتمند، سه ویژگی بزرگ این کتابخونس.
کتابخونه ی مورد علاقه ی من توی گیت هاب 10500 تا لایک، 4288 تا Fork و 3 تا Branch داره. البته تعداد Branch ملاک نیست ولی خوب در حد اطلاعات میگم. کار کردن با AsyncHttpClient خیلی راحته و خیلی سریع میتونید اونو یاد بگیرید. سرعتش نسبت به والی بیشتره و باگ های اونو نداره. با همه ی متدها براتون کار میکنه، مهمترین ویژگی ای که داره اینه که درصد Process انجام شده رو بهتون میده ( البته به صورت بایت میده و خودتون باید درصدش کنید ). براتون فایل دانلود میکنه و درصدش رو بهتون بدون نیاز به ابزار های اضافی بر میگردونه. امکان ست کردن Agent، قابلیت Retry کردن Request که جای دیگه ای ندیدم والا، براتون عکس لود میکنه، فایل آپلود میکنه، جواب درخواست ها رو به صورت String یا Json object , Json array میده و شاید نون هم بگیره نمیدونم.
عزیز دوست داشتنی من تا امروز جواب همه ی نیازهای شخصی من رو داده و هنوز دلیلی برای رد کردنش ندارم. خیلی ها بهم گفتن رتروفیت که تو مورد بعد دربارش میگم رو استفاده کنم و برام دلایلی هم آوردن اما برای اکثر کارهای خصوصا شخصی و پروژه های غیر شرکتی ( شرکت های بزرگ ) از این استفاده میکنم. شما هم استفاده کنید ضرر نمیکنید.
برای اینکه دلتون قرص بشه اینم بگم که Instagram، Pinterest، Frontline Commando (Glu Games)، Heyzap، Pose هم دارن از AsyncHttpClient استفاده میکنن دیگه تصمیم با خودتون.
مگه میشه JakeWharton تو یه کاری مشارکت داشته باشه و محصول خروجی بد باشه؟ اگر 5 تا کتابخونه ی درست درمون برای اندروید ساخته شده باشه 4 تاش برای این آقاس. JakeWharton یه جورایی پدر توسعه دهنده ی اندروید محسوب میشه و تاثیر زیادی روی اون داشته.
کتابخونه ی Retrofit در واقع برای تیم ( یا شایدم شرکت ) Square بوده اما توسعه دهنده ی اصلیش بدون شک جیک وارتونه. نحوه ی کار رتروفیت اینجوریه که با حاشیه نویس ها ( Annotations ) کار میکنه و بخاطر همین سرعت بهتری ارائه میده. کار کردن باهاش نسبت به دوتای قبلی سخت تره اما به قدری حرفه ایه که توی پروژه های بزرگ که قراره کارها خیلی اصولی پیش بره واقعا حرف اول رو میزنه. استاندارها و قوانین خاص خودش رو داره.
قابلیت addConverterFactory یکی از ویژگی های جالب اونه که مثلا اینجا میتونید یه GsonConverter ست کنید تا خروجی تو قالب کلاس های Gson قابل استفاده باشه. امکان ترکیب کردن با RxAndroid بقیه ی کتابخونه ها رو از سر راه کنار زده و اینکه میتونید Reactive کد بزنید دیگه انتخاب دیگه ای بهتون نمیده. اگر میخواید حرفه ای کار کنید حتما برید سمت رتروفیت چون شرکت های بزرگ توی استفاده ازش تعصب دارن.
رتروفیت 60000 تا لایک، 6100 تا Fork و 10 تا Branch داره و جالبه بدونید که 129 نفر توی این پروژه دارن مشارکت میکنن. دیگه ازین بهتر نداریم، باور کنید.
بازم میگم بستگی به خودتون داره که از کدوم استفاده کنید اما به نظرم هم AsyncHttpClient و هم Retrofit رو قشنگ یاد بگیرید، شرکت های برنامه نویسی عمدتا روی رتروفیت تمرکز دارن و اینجا هم دیدیم که از بقیه سرتر بود. چالش های خاص خودش رو داره اما لذت بخشه.