چرا برنامه نویسی موبایل؟
با افزایش روزافزون SmartPhone ها و تبلتها، بازار تکنولوژی به این سمت سوق پیدا کردهاست. از این رو شرکتهای ارائه دهنده نرم افزاری، از این موقعیت استفاده کرده و هر کدام پلتفرم متفاوتی را برای برنامه نویسی بر روی این اسمارت فونها ارائه دادهاند. یکی از بزرگترین دغدغههای امروزه شرکتهای برنامه نویسی و توسعه نرم افزار موبایل، انتخاب درست پلتفرم برای توسعه نرم افزار میباشد. در این مقاله قصد دارم یکی از این پلت فرمها را بررسی کرده و معرفی کنم.
شرکت xamarinکار خود را در سال 2011 با ارایه نسخه Cross Platformپلتفرم .Netبه نام Monoآغاز کرد. بعد از ارایه این نسخه از .Net، زامارین به کمک Monoتوانست پیاده سازی بر روی Androidو IOSرا به نامهایMonoForAndroid و MonoTouchارایه دهد. بعد از این نسخهها برنامه نویسان توانستند بر روی سیستم عاملهای اندروید و آی او اس به صورت Nativeکد خود را به زبان C#نوشته و آنها را اجرا کنند.
چرا باید از Xamarinاستفاده کنم؟
در ادامه مقاله قصد دارم شما را با برخی از ویژگیهای زامارین آشنا کرده و مزایای استفاده از آن را بیان کنم.
Xamarinامکانی را فراهم کردهاست که برنامه نویسان به دو روش متفاوت قادر خواهند بود برنامههای خود را بنویسند:
Xamarin Native :1
زامارین به شما این امکان را میدهد که بتوانید به صورت مستقیم برای هر پلتفرم به صورت جداگانه برنامه نویسی کنید. در اندروید اینکار با Xamarin.Droidو در IOSاینکار با Xamarin.Touchامکانپذیر است. مزیتهای استفاده از این روش عبارتند از:
· بهره گیری از یک زبان برنامه نویسی
همانطور که میدانید یادگیری یک زبان برنامه نویسی هزینهی زیادی را برای یک سازمان و یا یک شخص به همراه دارد. در زامارین این امکان فراهم شدهاست که با استفاده از تنها یک زبان برنامه نویسی مانند C#، برنامه نویسان بتوانند برای پلتفرمهای مختلف برنامه بنویسند. در نظر داشته باشید که UIدر هر پلتفرم به صورت جداگانه پیاده سازی میشود. به طور مثال در اندروید به وسیلهی Android Xmlمیتوانید ظاهر برنامه خود را پیاده سازی کنید و منطقهای خود را با زبان C#برای تمامی پلت فرمها به صورت یکسان بنویسید.
· تجربه کاربری Native
زامارین به شما این امکان را خواهد داد که با استفاده از کنترلهای Nativeهر پلتفرم به تجربه کاربری همان پلت فرم دسترسی پیدا کنید و اپلیکیشنی با ظاهر و UXهمان پلتفرم بسازید.
· استفاده 100%از امکانات هر پلتفرم
زامارین به دلیل Nativeبودن این امکان را به برنامه نویسان ارائه میدهد که با استفاده از یک زبان و با بکارگیریCycle Lifeمخصوص هر پلتفرم، به 100% امکانات و APIهای هر پلتفرم دسترسی پیدا کنند.
· Performance
به دلیل اینکه برنامههای زامارین به صورت Nativeاجرا میشوند Performanceبالایی دارند.
· دسترسی به APIهای موجود در .Net
شما قادر خواهید بود با دانش موجود مانند Entity Framework Codeو.. به فریم ورک .Net دسترسی پیدا کرده و از APIهای درون آن استفاده کنید. زامارین از یکی از پیاده سازیهای .Net Standardاستفاده میکند.
· استفاده مجدد از کد
در زامارین قادر خواهید بود که از کدهای خود، استفاده مجدد کرده و این امر سبب مدیریت بهتر بر روی کد، کد نویسی کمتر، هزینه نگهداری کد کمتر، توسعه راحتتر اپلیکیشن و ... میشود.
· تست خودکار
در زامارین شما میتوانید برای کدهای خود تست خودکار نوشته و آنها را به صورت خودکار تست کنید.
· Bindکردن Libraryهای Objective-Cو Java
زامارین طوری طراحی شدهاست که دست شما را در هیچگونه شرایطی نخواهد بست. شما میتوانید به صورت مستقیم کدهایی را که به زبان هایJava و Objective-Cنوشته شدهاند، به پروژه اضافه کرده و هیچگونه نگرانی از بابت کدهای از قبل نوشته شده که به زبانهای Objective-Cو Javaهستند، نداشته باشید.
· Designer
در زمارین این امکان وجود دارد که در هر پلتفرم از طریق Designerمخصوص به آن پلتفرم، UIخود را طراحی و پیاده سازی کنید.
· Async
در برنامه نویسی غیر همزمان ( Asynchronous Programming ) این امکان وجود دارد که برنامه شما بدون توقف، یک قسمت از کد را اجرا کرده و منتظر اجرای قسمتهای دیگر کد نشود؛ یا به اصطلاح برنامه از حالت Response خارج نشود. در زبانهای Java ، Objective-C و Swift اینکار باید با CallBack و به صورت Manual مدیریت شود؛ اما #C این امکان را فراهم آورده است که به راحتی اینکار را انجام داده و برنامه خود را همیشه در حالت پاسخ دهی نگه دارید.
public async Task<List<FeedItem>> GetFeedItems(DateTime date) { var feed = "http://planet.xamarin.com/feed/"; var response = await httpClient.GetStringAsync(feed); var items = await ParseFeedAsync(response); return items.Where(item => item.Published.Date == date).ToList(); }
· Parallel Programming
در برنامه نویسی موازی(Parallel Programming) برخلاف برنامه نویسی MultiThreadکه بر روی یک هسته CPUاجرا میشود، بر روی چندین هسته CPUبه صورت موازی اجرا میشود. زامارین از این نوع برنامه نویسی پشتیبانی میکند.
Xamarin.Forms: 2
پس از معرفی Xamarin Forms APIشما میتوانید علاوه بر مزیتهایی که در بالا اشاره شد، کدهای Logicخود را با زبان C#و کدهای UIخود را با زبان XAMLپیاده سازی کردهو با یک بار نوشتن کد، در پلتفرمهای مختلف خروجی خود را مشاهده کنید. مزیت استفاده از Xamarin Formsعبارتند از:
· استفاده از کد واحد برای پیاده سازی UIو Logic
یکی از بهترین مزیتهایی را که میتوان به آن اشاره نمود این است که شما کافیست یک بار کد خود را بنویسید و Xamarin Formsکد شما را در پلت فرمهای متفاوت پیاده سازی خواهد کرد.
<?xml version="1.0" encoding="UTF-8"?><TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MyApp.MainPage"><TabbedPage.Children><ContentPage Title="Profile" Icon="Profile.png"><StackLayout Spacing="20" Padding="20" VerticalOptions="Center"><Entry Placeholder="Username" Text="{Binding Username}"/><Entry Placeholder="Password" Text="{Binding Password}" IsPassword="true"/><Button Text="Login" TextColor="White" BackgroundColor="#77D065" Command="{Binding LoginCommand}"/></StackLayout></ContentPage><ContentPage Title="Settings" Icon="Settings.png"><!-- Settings --></ContentPage></TabbedPage.Children></TabbedPage>
برای پیاده سازی UIدر Xamarin Formsباید از XAMLاستفاده کنید. همچنین مانند روش قبلی میتوانید از زبان C#برای پیاده سازی منطق، استفاده نمایید.
با استفاده از Xamarin Formsشما تجربه نوشتن کد Cross Platformرا در کنار Nativeبودن آن خواهید داشت.
· استفاده از یک کنترل مخصوص یک پلتفرم در بین کد(Embedding)
در Xamarin Formsاین امکان وجود دارد که اگر شما خواستید یک کنترل مخصوص IOSرا در بین کدهای خود استفاده کنید، بتوانید به راحتی اینکار را انجام دهید.((Embedding
اگر به تصویر بالا دقت کنید متوجه خواهید شد که در یکسری از کنترلها، تصاویر متفاوت هستند. در نسخه اندروید یک Action Buttonدر قسمت پایین صفحه مشاهده میکنید که در نسخهی IOSآن موجود نیست. یعنی به صورت مستقیم کنترل Action Buttonکه مختص به پلت فرم اندروید میباشد، درون Xamarin Formsاستفاده شده است.
· دسترسی به هر پلتفرم به طور مستقیم
شما قادر خواهید بود به طور مستقیم به هر پلت فرم دسترسی پیدا کرده و به طور مثال در هر پلتفرم، UIمخصوص به خود را با Propertyهای مخصوص به خود طراحی کنید.
· UITestو Test Cloud
در Xamarin Forms میتوانید برای UIخود تست نوشته و آنها را به وسیله Xamarin Test Cloudبر روی صدها Deviceمتفاوت تست کنید. (این امکان فقط برای Androidو IOSوجود دارد.)
· Life Cycleمشابه در تمامی پلتفرم ها
همانطور که میدانید پلتفرمهای مختلف، Life Cycleهای متفاوتی برای مدیریت اپلیکیشن دارند. یکی از مزیتهای استفاده از Xamarin Formsاین است که شما میتوانید برای تمامی پلتفرمها بهوسیلهی یک Life Cycleیکسان کد بنویسید.
· Previewer
یکی از بهترین قابلیتهایی که در Xamarin Formsاضافه شدهاست این است که شما قادر خواهید بود به صورت Real Timeخروجی فایل XAMLخود را به وسیله Previewerمشاهده نمایید.
· Performance Profiler
به وسیله Xamarin Profilerشما میتوانید میزان مصرف حافظه، Performanceو ... را در اندروید و IOSاندازه گیری نمایید.
نکات قابل توجه:
Ø استفاده همزمان از Xamarin Formsو Xamarin Native
شما میتوانید کدهای خود را با حداکثر Reusabilityنوشته و در صورت لزوم با کدهای Xamarin Nativeترکیب کنید.
Ø Documentationخیلی خوب
زمارین مستنداتجامع و کاملی را در سایت خود گردآوری کرده که میتوانید به راحتی از آن برای فهم تمامی قسمتهای Xamarinاستفاده کنید.