معرفی Xamarin Forms

دوشنبه 28 دی 1394

در این مقاله می خواهیم مفاهیم اولیه Xamarin.Forms را معرفی کنیم. Xamarin.Forms جایگزین خوبی برای ایجاد واسط کاربری در ابزارهای همراه می باشد، که در آن از زبان #C و دات نت فریم ورک استفاده شده است.

معرفی Xamarin Forms

Xamarin.Forms در سال 2014 راه اندازی شد،  و پلت فرمی است که بر روی Xamarin اجرا می شود، در واقع به صورت یک کیت از ابزار UI بوجود آمد که به برنامه نویسان اجازه می دهد به راحتی یک رابط کاربری مشترک در اندروید، iOS و ویندوز فون را ایجاد کنند.

 Xamarin.Forms به زبان #C نوشته شده و امکان ایجاد یک نمونه سازی سریع از برنامه های کاربردی پیچیده را فراهم کرده است. برنامه های کاربردی Xamarin.Form برنامه های بومی هستند، و محدودیت های Toolkit ها را ندارد.

اپلیکیشن هایی که با استفاده از Xamarin.Forms  نوشته شده اند، قادر هستند از هر یک از ویژگی های API و یا یک پلت فرم پایه ، مانند CoreMotion، PassKit و StoreKit در iOS؛ NFC و Google Play روی آندروید، Tiles و ویندوز فون، استفاده کنند. این بدان معنی است که می توانید اپلیکیشن هایی ایجاد کنید که شامل  بخش هایی از رابط کاربری خودتان با Xamarin.Forms باشد، در حالی که بخش هایی از ابزار toolkit را نیز دارد،
اپلیکیشن های Xamarin.Forms  شبیه به معماری اپلیکیشن های multiplatform سنتی با معمول ترین شیوه برای قابل حمل بودن کتابخانه ها یا پروژه های مشترک ایجادمی شوند. و بعد اپلیکیشن هایی برای پلت فرم های ویژه ایجاد می شوند که کدهای مشترک را استفاده می کنند.  

دو تکنیک برای ایجاد رابط کاربر (UI) در Xamarin.Forms وجود دارد:


1. ایجاد UI در سورس کد با استفاده از API ارائه شده توسط Xamarin.Forms،
2.  با استفاده از XAML (نرم افزار زبان نشانه گذاری قابل گسترش)، که مایکروسافت آن را به عنوان یک  زبان نشانه گذاری(markup language) اعلام کرده که برای توصیف رابط استفاده می شود،

رابط کاربری در یک فایل XAML و با استفاده از فرمت XAML تعریف شده است، در حالی که رفتار در زمان اجرا (runtime behavior ) در فایل code-behind و به صورت جداگانه تعریف شده است.

مزیت دستیابی به سیستم عامل های چند گانه با یک زبان برنامه نویسی این است که توانایی اشتراک گذاری کد بین برنامه های کاربردی وجود دارد.

قبل از این که یک کد به اشتراک گذاشته شود باید برنامه ای برای این هدف ایجاد شود و به کمک الگوی معماری MVVM یک View از یک پلت فرم مشخص، جدا شود. این همان کدی است که نیاز به تعامل با یک پلت فرم  API  و model و View-Model مستقل دارد.

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


    Shared Asset Project (SAP) : یک سری فایل های کد و اجزای در دسترس پروژه های دیگر می باشد، که به سادگی استفاده می شوند.
Class Library های قابل حمل (PCL): شامل تمامی کدهای مشترک در یک کتابخانه پیوند پویا (DLL) می باشند ، که می تواند در پروژه های دیگر رفرنس داده شوند؛

صرف نظر از متد استفاده شده، این کد مشترک به Class Library های دات نت فریم ورک دسترسی دارد، پس شما می توانید عملیات I / O  را با  فایل ها، globalization ، دسترسی به وب سرویس ها، تجزیه فایل های XML و غیره انجام دهید.


این بدان معناست که می توانید یک solution منحصر به فرد در ویژوال استودیو ایجاد کنید که شامل چهار پروژه #C هدفمند در سه پلت فرم اصلی همراه (با دسترسی به SAP مشترک و یا پروژه PCL) می باشد، و یا می توانید از زامارین استودیو  برای دستگاه های آیفون و آندروید نیز استفاده کنید.

بنابراین یک اپلیکیشنXamarin.Forms  ترکیبی از سه پروژه جداگانه برای هر سه پلت فرم می باشد با یک پروژه چهارم که شامل کد های رایج(common) است. نمودار زیر سناریو را به تصویر می کشد:

پروژه های این3  پلتفرم کوچک بوده و اغلب فقط شامل کدهای مقدار دهی اولیه هستند.

Shared Asset Project (پروژه های کمکی به اشتراک گذاشته شدهSAP ) و یا  Class Library های قابل حمل شامل بیشتر کد های اپلیکیشن از جمله کد رابط کاربر  هستند .
Xamarin.Forms.Core 
و کتابخانه های Xamarin.Forms.Xaml  برای پیاده سازی Xamarin.Forms API  می باشند. بسته به  پلت فرم استفاده شده، کتابخانه Xamarin.Forms.Core یکی از کتابخانه های پلت فرم زامارین را استفاده می کند.
این کتابخانه ها عمدتا مجموعه ای از کلاس های ارائه شده هستند که رابط کاربری اشیاء  Xamarin.Forms  ، را به پلت فرم رابط کاربر خاص تبدیل میکنند.
همچنینXamarin.Forms    از XAML  مایکروسافت  به عنوان یک زبان نشانه گذاری برای اهداف عمومی و برای معرفی و مقداردهی اولیه اشیاء ،پشتیبانی می کنددر زیر مثالی از کد   XAML وجود دارد:

 <?xml version="1.0" encoding="utf-8" ?>  
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="HelloXamarinFormsWorldXaml.StackLayoutExample1" Padding="20">  
        <StackLayout Spacing="10">  
            <Label Text="Stop" BackgroundColor="Red" Font="20" />  
            <Label Text="Slow" BackgroundColor="Yellow" Font="20" />  
            <Label Text="Go" BackgroundColor="Green" Font="20" />  
        </StackLayout>  
    </ContentPage>

با وجود کمک زیادی که Xamarin.Forms  در ایجاد برنامه های کاربردی برای پلت فرم مستقل ارائه می دهد، اما نمی تواند یک جایگزین کامل برای برنامه نویسی  API باشد.

اگر اپلیکیشن شما متکی به ویژگیهای API  بومی، مانند انواع خاصی از کنترلها یا ویجت ها باشد ، ممکن است نیاز باشد که از Xamarin.iOS، در Xamarin.Android، و یا ویندوز فون API.  نیز استفاده کنید.

همچنین شاید بخواهید از API های بومی برای اپلیکیشن هایی استفاده کنید که به گرافیک برداری یا تراکنش  های لمسی احتیاج دارند. نسخه فعلی  Xamarin.Forms کاملا آماده ارائه این ویژگی  ها ، در سطح پیشرفته نیست.

اما از سوی دیگر، Xamarin.Forms برای نمونه سازی و یا ایجاد سریع اپلیکیشن های تجاری فوق العاده استو هنگامی که شما آن را انجام دهید، ممکن است دریابید که می توانید با استفاده از منابع  Xamarin.Forms   یک نرم افزار کامل بسازید.

حتی اگر شما شروع به ساخت یک برنامه با Xamarin.Forms  کنید و سپس پیاده سازی بخش های بزرگی از آن را  با  پلت فرم APIs ، انجام دهید، می توانید آن را در فریم ورکی انجام دهید که اجازه دهد کد ها و روش های ساخت یافته را برای هر پلت فرم خاصی به اشتراک بگذارید.


چگونه می توان تشخیص داد که در چه زمانی از Xamarin.Forms یا Xamarin.iOS یا Xamarin.Android استفاده  کنیم؟

پلت فرم Xamarin.Forms  برای موارد زیر مناسب است  :

     اپلیکیشن های ورود داده ها و اطلاعات
     نمونه های اولیه و اثبات مفاهیم،
     اپلیکیشن هایی که  کمتر به قابلیت های پلت فرم خاصی احتیاج دارند.
      اپلیکیشن هایی که در آن Source به اشتراک گذاشته شده از UI آن مهم تر است.


Xamarin.iOS یا Xamarin.Android  برای موارد زیر مناسب است:

   برنامه های کاربردی که نیاز به تعامل تخصصی دارند،
   برنامه های کاربردی که طراحی خاص و تخصصی دارند.
   برنامه های کاربردی که بسیاری از API های خاص یک پلت فرم استفاده کرده باشد.
   برنامه هایی که در آن ها UI سفارشی از کد مشترک مهم تر باشد.
 

دوره های آموزشی زامارین 

دوره برنامه نویسی اندروید با سی شارپ ( Xamarin )

آموزش متریال دیزاین در زامارین

آموزش Xamarin Forms

دوره Xamarin Form پیشرفته

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید