چرا برنامه نویسی موبایل؟
با افزایش روزافزون 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 استفاده کنید.