برسی مزایا و معایب تولید و توسعه اپلیکیشن با Xamarin


همیشه وقتی صحبت از تولید اپلیکیشن برای گوشی ها هوشمند می‌شه ذهنمون میره سمت ObjC - Swift و Java که معمول ترین روش برای تولید اپ های iOS و Android هستن. گرچه توی سال های اخیر تکنولوژی های دیگه ای برای تولید اپ معرفی شدن که هر کدوم خوبی‌ها و بدی‌های خاص خودشون‌رو دارن. این تکنولوژی ها به سرعت در حال پیشرفت هستن و هر کدوم سعی دارن که یجورایی کمبودهای تولید اپلیکیشن Native رو بپوشونن و کدنویسی برای این پلتفرما رو راحت‌تر کنن و مرز بین تولید اپلیکیشن‌های iOS و Andorid رو باریک‌تر کنن، تا جایی که بتونن محوش کنن. این تفکر ازونجایی شکل گرفت که این ایده مطرح شد:

یه بار اپ بنویس و روی همه پلتفرما رانش کن!

زامارین چیه؟

ایده زامارین اولین بار سال ۲۰۰۱ توسط برنامه نویس های Mono بر اساس "تولید نرم‌ افزار های کراس پلتفرم بر پایه DotNet" مطرح شد و درنهایت در سال ۲۰۱۱ کمپانی زامارین تاسیس شد و شروع به کار کرد.

مایکروسافت زامارین رو در سال ۲۰۱۶ خرید، اون رو Open Source و مجانی کرد و به صورت رسمی به Visual Studio اضافه‌ش کرد. وقتی حرف از راه های کلیدی تولید اپ میشه، نمی‌شه زامارین رو نادیده گرفت. زامارین ابزاریه برای تولید Cross-Platform اپلیکیشن ها که به برنامه‌نویس‌ها این قابلیت رو میده که بیش از ۹۰٪ کدبیس اپلیکیشن رو به صورت یک لایه جدا بین پلت‌فرم‌های مختلف به اشتراک بذارن.


حالا بهتره که بپردازیم به این که آیا زامارین روش خوبی برای تولید اپلیکیشن هست یا که نه!

و برای این کار مزایا و معایب زامارین رو برسی می‌کنیم و در نهایت تصمیم نهایی رو می‌سپاریم به شما:

مزایای زامارین

۱. عملکرد زامارین توی اجرا و مدیریت حافظه خیلی خوب و نزدیک به Native هست.

۲. زبان برنامه نویسی برای همه پلتفرمها C# هست که خب اگه بخوایم مزایای .Net رو هم در نظر نگیریم، همین یکی بودن زبان برنامه‌نویسی باعث میشه Learning curve خیلی بهتری داشته باشه.

۳. مگه میشه مزایای دات نت رو نادیده گرفت؟ دات نت فوق العاده‌س. شما وقتی از زامارین برای تولید اپلیکیشن استفاده می‌کنید، به همه کتابخونه های دات نت درسترسی دارید و میتونید ازش استفاده کنید.چیزایی مثل Lambdas, LINQ, Asynchronous programming

۴. ۹۰٪ از کدبیس همه پلتفرما یکیه و نیازی نیست که برای هر پلتفرم یسری کد های پایه رو تکرار کنید و خب همه‌ی کدها روی یک لایه جدا که روی بخش Native هر پلتفرمی هست قرار میگیره و Share میشه.

۵. تجربه کاربر از کار کردن با اپ زامارین، بر خلاف اپ های هایبریدی، مشابه تجربه کاربر از استفاده اپ نیتیو هست.

۶. زامارین Open Source هست.

۷. نصب و راه اندازی SDK ها و IDE خیلی راحته، و روی مک و ویندوز قابل استفاده هست (برای iOS نیاز به سیمولاتور XCode هست)

۸. چیزی به نام Xamarin Forms هم وجود داره که شما از طریقش می‌تونید واسه همه پلتفرما یه UI و یه کد بزنید که خب البته میشه همون داستان WebView و هایبریدی ها که خب ما توی این مقاله قصد نداریم وارد اون بحث شیم.

۹. با زامارین میتونید واسه مک و واچ او اس هم اپ بنویسید.

۱۰. درسترسی و ساپورت کامل سخت افزار و سنسور های هر پلتفرمی.

معایب زامارین

۱. تاخیر توی دریافت آپدیت های SDK برای هر پلتفرمی.

۲. جامعه برنامه نویس های زامارین خیلی کوچیکتر از برنامه نویس ها نیتیو iOS و Android هست و اگه به چالشی بربخورین، کمک گرفتن برای حلش میتونه خیلی سخت تر باشه.

۳. شما برای برنامه نویسی هر پلتفرمی نیاز به دانش اولیه برنامه نویسی برای همون پلتفرم رو دارید. چرا؟ زامارین عملا فقط SDK هر پلتفرمی رو یجورایی در قالب DotNet جا داده و خب شما صرفا نمیتونی بگی من زامارین بلدم و واسه هر پلتفرمی میتونم کد بنویسم.

اگه قبلا برای پلتفرمی اپ Native تولید کرده باشید، بعد از ساختن اولین پروژه با زامارین متوجه می‌شید که این که دقیقا همونه! فقط سی شارپه! به فایل ها و کد های مثال زیر دقت کنید:

پروژه Native صفر ساخته شده با XCode
پروژه Native صفر ساخته شده با XCode


پروژه Xamarin صفر ساخته شده با Visual Studio
پروژه Xamarin صفر ساخته شده با Visual Studio


ما گفتیم که زامارین فقط یک لایه Shared Code اضافه می‌کنه که شما توی همه پلتفرما می‌تونید ازش استفاده کنید. که خب اونم میتونه سرویس هایی باشه مثل کار کردن با دیتابیس لوکال یا برقراری ارتباط با بک اند سرور و کلا هر پروسسی که اپ به صورت لوکالی قراره انجام بده.

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

۴. زامارین عملکردش توی اپ هایی با پردازش گرافیکی سنگین اصلا خوب نیست و اگه می‌خواید بازی تولید کنید اصلا سمتش نرید.

۵. اپلیکیشن های تولید شده با زامارین به طرز وحشتناکی پرحجم هستن و سایزشون زیاده. یه اپ Hello World یه چیزی نزدیک به ۱۶ مگابایت می‌شه!


6. اگه عادت به استفاده از کتابخونه های شخص سوم (!) و pod های مختلف دارید و یا اصلا پروژه اینو می‌طلبه، سمتش نرید چون که نمی‌تونید از کتاب خونه های Native پلتفرما استفاده کنید. گرچه خود زامارین پکیج های خاص خودشو داره ولی خب خیلی محدود تر از پکیج های Native هستن.