استفاده از Swift با WinUI در ویندوز
یک ابزار منبع باز جدید از شرکت مرورگر به ما کمک میکند تا برنامههای Swift را از iOS و macOS به ویندوز منتقل کنیم.
شاید فکر کنید که Swift فقط یک زبان برنامهنویسی برای macOS و iOS است. این نتیجهگیری طبیعی است زیرا Swift بهطور نزدیک با محیط توسعه Xcode اپل مرتبط است. اما یک بخش از داستان Swift اغلب نادیده گرفته میشود: Swift یک زبان برنامهنویسی چندپلتفرمی است که از لینوکس، اندروید و ویندوز پشتیبانی میکند.
بیشترین سردرگمی به دلیل ارائه ابزار رابط کاربری اپل برای سیستمعاملهای خود است. برای سایر سیستمعاملها، Swift به عنوان یک زبان برنامهنویسی سیستمهای قابل حمل در نظر گرفته شده است که به شما اجازه میدهد منطق کسب و کار را از دستگاههای تلفن همراه و دسکتاپ به ابر منتقل کنید و APIها را برای انتهای وب اضافه کنید. اگر شما به یک رابط کاربری نیاز دارید، به یک مرورگر وب نیاز خواهید داشت، زیرا تعدادی از چارچوبهای وب برای Swift وجود دارد که عمدتاً بر روی سیستمعامل لینوکس منتشر میشوند.
استفاده از Swift در ویندوز
یکی از مزایای استفاده از Swift به عنوان یک زبان برنامهنویسی در ویندوز این است که جایگزینی امنتری برای C ارائه میدهد و بسیاری از ویژگیهای Objective-C را داراست. برخلاف بسیاری از زبانهای کامپایل شده، Swift از استفاده از یک محیط اشکالزدایی و تست مبتنی بر REPL (Read-Eval-Print Loop) پشتیبانی میکند. شما میتوانید کد را قبل از کامپایل ارزیابی کنید و از امکانات اشکالزدایی Xcode برای کشف ساختارهای پیچیدهتر استفاده کنید. این رویکرد "اشکالزدایی در حین نوشتن کد" (debug while you code) بهبود بهرهوری توسعهدهنده را تقویت میکند و اشکالزدایی را به عنوان بخشی از جریان کار روزمره شما جای میدهد و در کدی که نوشته میشود، خطاهای فشردهسازی را حفظ میکند.
در ویندوز، عدم وجود یک لایه کاربری (UI) باعث میشود که Swift مانند یک شهروند درجه دوم در این سیستمعامل احساس شود. اگر برنامهنویسی در سطح سیستم را میخواهید، بهتر است از زبان C# برای نوشتن برنامههای کنسولی استفاده کنید. برای وظایف پیچیدهتر در سطح سیستم، معمولاً نیاز به زبانهای مانند C++ یا Rust است که مایکروسافت در حال حاضر از آنها در پلتفرم Azure استفاده میکند.
بازگشت به "bridges" ویندوز 10
اگرچه انتظار نمیرود که Swift برای ویندوز تجربه کامل کاربری macOS یا iOS را پیادهسازی کند، وجود ابزارهای رابط کاربری مناسب میتواند انتقال برنامهها و ابزارهای مختلف macOS به ویندوز را آسانتر کند. مایکروسافت نیز به عنوان بخشی از پروژه "پل" ویندوز 10، یک راه حل مشابه برای Objective C را در پروژه Islandwood (که در حال حاضر یک پروژه منبع باز در GitHub است) امتحان کرده است. این پروژه، که در نهایت به نام WinObjC شناخته میشود، پروژههای موجود Xcode را دریافت کرده و آنها را به پروژههای Visual Studio تبدیل میکند و کنترلها و سرویسهای مشترک را با معادل ویندوزی خود نقشهبرداری میکند.
اگرچه WinObjC هنوز در دسترس است، اما تقریباً منسوخ شده است و از زمان انجام آخرین تغییرات عمده، که بیش از چهار سال پیش بود، بهروزرسانی نمیشود. هر دو استراتژی توسعه برنامههای Apple و مایکروسافت از زمان عرضه اولین نسخه WinObjC توسط مایکروسافت به طرز قابل توجهی تغییر کردهاند و بیشتر از همه، ابزارهای رابط کاربری آنها نیز تغییر کردهاند.
برنامه ویندوز SDK و پیشبینی زبان
مایکروسافت در طول دهه گذشته استراتژی رابط کاربری خود را بازنگری و بازنگری کرده است. در ابتدا، WinRT در ویندوز 8 با کنترل مترو معرفی شد. این باعث تبدیل پلتفرم و کتابخانه رابط کاربری ویندوز به WinUI شد. با تغییر در داستان توسعه ویندوز، WinUI نیز تکامل یافت و به شکل WinUI 3 که امروزه در دسترس است، رسید. به عنوان بخشی از برنامه ویندوز SDK، WinUI 3 کنترلهای مدرن را برای هر محیطی که ویندوز در آن اجرا میشود، فراهم میکند.
مدل WinUI که برای پشتیبانی از توسعه XAML طراحی شده است، بر پایه XAML آشنا ساخته شده است و طراحی را از کد جدا میکند. طرحها از کنترلها ساخته میشوند با استفاده از یک زبان اعلامی برای تعریف قوانین و اتصالات. این یک ابزار قدرتمند است که با الگوهای طراحی مختلف به خوبی کار میکند. با گذشت زمان، WinUI از وابستگی به ویندوز جدا شده و در حال حاضر به عنوان بخشی از برنامه ویندوز SDK بهروزرسانی میشود.
اگرچه WinUI شاید به عنوان یک ابزار برای توسعه XAML شناخته شده باشد، اما به محیطهای دیگر ویندوز نیز انتقال یافته است، از جمله پروژههای C++/WinRT. پروژه C++/WinRT یک کتابخانه سرآمد فایل هدر را فراهم میکند که به شما اجازه میدهد از APIهای برنامه ویندوز SDK با هر کامپایلر سازگار با استانداردها مانند Clang از LLVM یا حتی GCC استفاده کنید.
این تغییر نشان دهنده تمایل مایکروسافت به استفاده از پایههای منبع باز است و مزایای آن را نشان میدهد. ابزارها و فناوریهای توسعهدهندگان پایه مانند WinUI میتوانند توسط شرکتهای دیگر برای ایجاد و استفاده (و به اشتراک گذاری) نسخههای مشتق شده خود و همچنین برای پورت برنامهها به دسکتاپ ویندوز که در غیر این صورت ممکن است قابل پورت نباشند، تنظیم و استفاداز آوردن شوند.
WinUI در Swift در ویندوز
چند هفته پیش، در یک توییت، میگوئل دی ایکازا، یکی از سازندگان پروژه مونو، به من نشان داد که شرکت مرورگر از ابزار CppWinRt برای ساخت مجموعه پیشبینیهای خود در زبان Swift برای اضافه کردن پشتیبانی WinUI استفاده میکند. این به آنها امکان میدهد بدون نیاز به بازنویسی کامل کد Swift موجود، مرورگر جدید و ساخته شده خود را به ویندوز بیاورند.
این یک نیاز مهم برای یک تیم کوچک است. اگر تنها چیزی که باید تغییر دهید رابط کاربری است، نیازی نیست که توسعه هسته را دو برابر کنید و مجبور باشید از یک مدل برنامهنویسی به مدل دیگر ترجمه کنید که باعث افزایش سطح حمله میشود. به جای آن، میتوانید مانند شرکت مرورگر بر روی ساخت یک جایگزین برای کروم، گاکو و وب کیت تمرکز کنید که با استانداردهای وب هماهنگ است و هم به کاربران ویژگیها و سرعت مورد انتظار را ارائه میدهد، بدون نیاز به منتشر کردن نسخههای مختلف برای هر پلتفرم.
تیم سازنده نسخه ویندوز مرورگر Arc از Swift با استفاده از COM استفاده کرده است، بنابراین داشتن زبانهای بستهبندی شده بر اساس ابزار C++ WinRT یک گام بزرگ نیست. کد مورد نیاز برای ارائه یک رابط کاربری ویندوز با این پیوندها برای هر کسی که برنامههای ویندوز را با استفاده از یک زبان مدرن ساخته است، آشنا به نظر میرسد. این نحو کاملاً سریع است و اضافه کردن اجزای رابط کاربری به برنامه شما بسیار شبیه به آنچه برای ارائه یک تجربه iOS یا macOS استفاده میشود.
از Swift به WinUI از طریق WinRT
از آنجا که WinUI از رابطهای WinRT استفاده میکند، پروژه Swift projection بر روی تعاریف رابط WinRT ساخته شده است و زبان C++/WinRT را به فراخوانیهای تابع ترجمه میکند. اگرچه میتوانید با استفاده از قابلیتهای همکاری (interop) Swift مستقیمابا WinUI ارتباط برقرار کنید، اما بهتر است از CppWinRT استفاده کنید تا بتوانید به راحتی و با کمترین تلاش تمام قابلیتهای WinUI را در Swift بهره ببرید.
CppWinRT یک ابزار مبتنی بر C++ است که رابط WinRT را به زبانهای دیگری از جمله Swift صادر میکند. با استفاده از CppWinRT، میتوانید کد خود را در Swift بنویسید و از ویژگیها و قابلیتهای WinUI استفاده کنید.
برای استفاده از CppWinRT در پروژه Swift خود، ابتدا باید CppWinRT را نصب کنید. سپس میتوانید تعاریف رابط WinRT را به کد Swift خود اضافه کنید و از آنها استفاده کنید.
مراحل عملی برای استفاده از CppWinRT در پروژه Swift به شرح زیر است:
1. نصب CppWinRT: ابتدا باید CppWinRT را از منبع معتبری مانند GitHub دریافت و نصب کنید.
2. تعریف رابط WinRT: در پروژه Swift خود، فایلهای IDL رابط WinRT را تعریف کنید. این فایلها شامل تعریفهای رابط و توابع WinRT هستند که میخواهید در Swift استفاده کنید.
3. تولید کدهای C++: با استفاده از ابزار CppWinRT، فایلهای IDL را به کدهای C++ تبدیل کنید. این کدها شامل تعاریف کلاسها و توابع WinRT است.
4. اضافه کردن کدهای C++ به پروژه Swift: کدهای C++ تولید شده را به پروژه Swift خود اضافه کنید و با استفاده از قابلیتهای همکاری Swift، آنها را به صورت مستقیم فراخوانی کنید.
5. استفاده از قابلیتها و ویژگیهای WinUI: با داشتن تعاریف رابط WinRT در پروژه Swift خود، میتوانید از قابلیتها و ویژگیهای WinUI به طور مستقیم استفاده کنید و رابط کاربری WinUI را در برنامه خود پیاده سازی کنید.
با استفاده از این روش، میتوانید بدون نیاز به بازنویسی کامل کد Swift خود، پشتیبانی WinUI را به برنامههای خود در ویندوز اضافه کنید.
منبع : infoworld.com