یکی از دغدغههای جدی امروزه توسعه دهندگان نرم افزار در سمت Front end، توسعه برنامههای Cross Platform است. در این سری آموزشی به صورت قدم به قدم و پروژه محور میخواهیم برنامهای را برای Android/iOS/Windows توسعه دهیم که روی کامپیوتر، تبلت و موبایل به خوبی کار کند.
انتخاب ابزار درست برای شروع به کار از اهمیت شایانی برخوردار است و بد نیست در ابتدا به بررسی دلایل انتخاب ابزارهایی بپردازیم که قرار است در این دوره از آنها استفاده شود.
۱- زبان برنامه نویسی: CSharp
CSharp با وجود امکاناتی مانند Generics، Lambda Expressions، Linq، Async و ... که تا حدودی در سایر زبانها هم هستند، زبانی خوش ساختار و کاربردی است. همچنین اضافه شدن امکانات جدیدی مانند ref returns و ... نشان دهنده این است که این زبان رو به جلو در حرکت و در برخی موارد پیشرو است. اما در توسعه یک برنامه Cross Platform مواردی اهمیت پیدا میکنند که شاید توسعه دهنده نرم افزار مستقیما با آنها درگیر نشود، ولی از آنها تاثیر میپذیرد. در زبان CSharp مواردی مانند P/Invoke ،Pointers، Extern و ... جزء این دست از موارد هستند که کمک میکنند CSharp به یکی از لذت بخشترین زبان هایی تبدیل شود که قابلیت فراخوانی 100% امکانات زبانهای دیگر را بدون اما و اگرهای فراوان داشته باشد.
در سایر زبانهای Cross Platform اگر کتابخانههای توسعه داده شده و ترکیب زبانهای برنامه نویسی استفاده شده در آنها را بررسی کنید، میبینید که اگر قرار است کتابخانه مربوطه مثلا در JavaScript استفاده شود، توسعه دهنده کد، درصدی از کد را با Java، درصدی را با Swift و درصدی را با JavaScript توسعه داده است! اگر معادل همان کتابخانه را برای CSharp پیدا کنید، میبینید که تمامی قسمتهای مربوط به اندروید، iOS و ویندوز به زبان CSharp است.
برای مثال در ادامه کدهای مربوط به پروژهای را میبینید که هدف آن، ارائه متدهایی ساده برای کار با امکانات مختلف دستگاه، به صورت Cross Platform هست. مثلا برای بررسی وضعیت باطری بنویسید:
var state = Battery.State; // Charging, Full, Discharging, ...
که تماما با CSharp توسعه داده شده است.
اما معادل چنین پروژهای در هیچ زبان دیگری به صورت 100% با خود آن زبان توسعه داده نشدهاست و بیشتر مواقع با چنین چیزی مواجه میشوید:
این مسئله وقتی حائز اهمیت میشود که در پروژهتان به سمت کارهایی حرکت کنید که کمی خاص باشند و نتوانید کتابخانهای را پیدا کنید که نیازهای شما را پوشش دهد و یا از کیفیت خوبی برخوردار نباشد و ... و خلاصه بخواهید کمی بیشتر دست به کد شوید. در چنین مواقعی شما عملا درگیر چندین زبان و محیط توسعه و سیستم عامل و Debugger و ... میشوید. به هر میزان که برنامه شما خاص باشد، این هزینه افزایش پیدا میکند تا جایی که ممکن است ادامه توسعه نرم افزار را غیر ممکن کند.
در CSharp شما به صد در صد امکانات سیستم عاملها (Android/iOS/Windows/Linux/Mac/Tizen) دسترسی دارید.
۲- اجرا کننده برنامه: NET.
انتخاب NET. و کتابخانههای آن مانند Task Parallel Library - Entity Framework(Sqlite) - Noda - JSON.NET که در هر زمینهای بالاترین کیفیت ممکن را به شما ارائه میکنند به خودی خود منطقی به نظر میرسد. اما تمامی اینها در کنار سرعت اجرای NET. به صورت Native و همچنین قابلیت اجرای NET. در تمامی سیستم عاملها و همچنین امکان اجرای آن در مرورگر به کمک استاندارد Web Assembly آن را به انتخابی فوق العاده بدل میکند. سرعت گسترش محبوبیت و استفاده از NET. در دنیا نیز دلیل دیگری است برای اطمینان خاطر از انتخاب درست.
۳- Xamarin forms
Xamarin forms همه آن چیزهای پایهای است که برای نوشتن یک برنامه لازم داریم. کنترل هایی مانند ListView، Button و ...به همراه Binding - Navigation و ...
در عمل میتوانید آن را معادل Angular & Angular Material بدانید. وقتی شما فرمی را با Xamarin Forms توسعه میدهید و درون آن دکمهای است که از فرم اول، شما را به فرم دوم میبرد، میتوانید آن را در هر جایی که Xamarin forms پشتیبانی میکند، استفاده کنید. پشتیبانی Xamarin forms برای Android/iOS/Windows خوب و برای Linux/Mac/Tizen و Web در مراحل اولیه است.
در Xamarin forms شما UI کاملا Native خواهید داشت.
۴- Prism Patterns & practices
Prism همه آن چیزی است که برای نوشتن یک برنامه با کیفیت، با قابلیت نگهداری بالا و تست پذیر احتیاج داریم.
با نقش Bit و کمکهای آن در طول مسیر آموزش بیشتر آشنا خواهیم شد.
در قسمتهای بعدی به آموزش نصب و نحوه دیباگ کردن کد و ارائه پابلیش در Android-iOS-Windows خواهیم پرداخت و سپس وارد کدنویسی شده و پروژه اولیه را خواهیم ساخت و در قسمتهای بعد از آن هم کار با دیتابیس کلاینت ساید، ارتباط با سرور و ... را آموزش میبینیم.
اگر قبلا Xamarin Forms را تست کردهاید و به علت مسائلی مانند حجم بالای خروجی برنامه و یا کندی در توسعه برنامه یا اجرای آن در دستگاه مشتری آن را کنار گذاشتهاید، توصیه میکنم بار دیگر آن را با ما تست کنید و با رعایت چند نکته ساده از نوشتن برنامه Cross Platform به بهترین شکل لذت ببرید و خروجی خوبی را در نهایت به مشتریان سیستم ارائه کنید.