إضافة تعليق جديد

Hello New World!

يشكل نظام ويندوز الجديد  windows 8 نقلة نوعية من حيث التصميم، حيث اعتمدت ميكروسوفت على نموذج/ فلسفة  الميترو  Metroالذي طبق في الويندوز فون والذي كان واضحاً من مقدار الاعجاب والفخر الشديد بهذا النموذج الجديد في التصميم أن مايكروسوفت ستمضي به إلى مستويات أعلى.
windows8_2

واجهة المستخدم والرسوميات ليست الشيء الوحيد الجديد في win 8 بل هناك هيكلة جديدة لل API معدة للاستخدام من قبل تطبيقات المترو وهو ما سمي Windows Run Time أو WinRT التي نستطيع تلخيصها بأنها تطوير وترقية لبرمجة COM التي لطالما كانت بمثابة (الجوكر) الذي يمكن أن يستعمل ويشاهد من مختلف التقنيات و البرامج التي تعمل في ويندوز. تقنية ال COM أخذت –بطريقة ذكية جداً- إلى مستوى أعلى في الويندوز 8 أو ما سماه البعض ( leveraging) وهي الكلمة المفضلة لدى الامريكيين بالمناسبة. لا نستطيع القول أن WinRT هي COM بالمعنى الكلاسيكي لبرمجة COM التي كان يهيمن عليها مفهوم ال Interface بينما هنا في WinRT لدينا ال Class-Constructor-Event… بمعنى أخرى كل (عدّة) البرمجة غرضية التوجه  OOP والطريقة (الماكرة) في إظهار هذا ال API الجديد للعالم الخارجي تجعله متاحاً للاستعمال المباشر و السريع من قبل لغات Native مثل C++ - لا أعتقد أن هناك ما يمنع من تدخل لغات أخرى هذا المضمار- ومن قبل لغات Managed مثل C#,VB و من قبل لغات Dynamic مثل Java Script والمخطط التالي يوضح هذه الالية.
Windwos8_1 
المتابع لمجتمع مايكروسوفت لا يستطيع إلا أن يعجب بالطريقة التي جمعت بها مايكروسوفت مجموعة من أذكى (الاختراعات\ الانجازات) البرمجية التي قامت بها خلال هذا العام والعام الماضي (Metro-Async-Dynamic-Contracts…) و دفعتها باتجاه انتاج منصة عمل جديدة من حيث التصميم و أيضاً API جديدة و بيئة تشغيل Windows Run Time تصلح للاستخدام على مختلف الاجهزة (Pc-Phone-tablet…) مع بعض التعديلات الطفيفة ربما ،مما يسهل العمل على مبرمجين ويندوز و يوسع سوق برامجهم هذا السوق الذي تطمح مايكروسوفت لان تكون شريكاً فيه عن طريق App Store جديد خاص بويندوز وسيكون المكان الوحيد الذي يمكنك عن طريقه تحميل أو تثبيت برامج الميترو في جهازك.
رغم أن نسخة فيجوال ستوديو المرفقة مع نسخة العرض لويندوز8 تحوي بعض المشاكل و تعاني من بعض التوقفات المفاجئة التي نستطيع كمبرمجين تفهمها كونها نسخة pre Beta، لكن هذا لا ينفي أن النسخة القادمة من فيجوال ستوديو ستحوي مزايا مهمة للغاية ستجعل من الصعب على أية شركة أو منصة تطوير أخرى منافستها في مجال برامج الميترو. من هذه المزايا: هي ان ال Blend Designer المتميز قد اعتمد الان في فيجوال ستوديو –ليس بكامل مزاياه وإنما الاساسية فقط- وهذا أمر أعجبني جداً حيث انه برغم ان ال Designer كان محسناً كثيراً في VS2010 عنه في VS2008 ولكن مع ذلك كان تصميم برامج WPF و Sliverlight باستخدام الماوس و لوحة الخصائص أمرأً متعباً وغير احترافي و عن نفسي كنت غالباً أستخدم كتابة التصميم بواسطة XAML لأنه كان (أقل إزعاجاً) وفي بعض الاحيان أكثر دقة. الآن وجود Blend Designer في VS11 سيسمح بالبقاء ضمن بيئة الفيجوال عند الرغبة بتصميم برامج WPF/Silverlight/Metro طبعاً نسخة Blend الجديدة تحوي مزايا جديدة هائلة –خصوصاً على صعيد JavaScript- أيضاً لمن يستطيع اقتناء الاداتين معاً. ال Blend Designer المدمج سيكون متاح حتى في النسخة المجانية لفيجوال Expression ليس هذا فحسب بل كثير من المزايا الجديدة ستكون متاحة أيضاً في النسخة المجانية وهذا أمر يدل على مدى اهتمام مايكروسوفت باكتساب مزيد المبرمجين والمستخدمين لتقنياتها الامر الذي لايتوفر -على الاقل ليس بنفس الزخم- لدى شركات أخرى. وال Blend Designer  بأمكاناته التصميمية المزهلة لن يبقى ميزة وحكراً على مبرمجي الدوت نت فقط بل سيكون متاحاً لمبرمجي C++ حيث أصبح بالمكان الان تصميم برامج مترو بواسطة C++ و XAML في النسخة الجديد من فيجوال ستوديو. الأمر الجميل الآخر هو آلة الاختبار الافتراضية Simulator المرافقة للنسخة الجديدة لفيجوال ستوديو (حتى في النسخة المجانية) و هي أداة ضرورية لمن لا يملك شاشة لمس (Touch Screen) ليتأكد من عمل برامجه بشكل جيد مع تلك الشاشات.
Simulator1
وهناك الكثير أيضاً من المزايا الجديدة في هذه النسخة التجريبية من فيجوال ستوديو التي يصعب تغطيتها في مقال واحد. لذلك لننتقل للتجريب العملي كوننا كمبرمجين نحب الكود أكثر من الشرح.
عند تشغيلك للنسخة التجريبية من فيجوال ستوديو ستلاحظ أن تطبيقات المترو تطغى على هذه النسخة، فيمكنك إنشاء مشروع جديد لتطبيق مترو وفق أكثر من نموذج جاهز template وبأربع لغات C#,VB,C++,JavaScript   بالنسبة لهذا الاختبار البسيط دعونا نختار C# ومن ثم لنختر Application وهو أبسط نموذج لانشاء تطبيق مترو.
VS11_NewProject
أول شيء جديد ستلاحظه هو وجود ملف جديد في مستكشف المشروع اسمه Package.appxmanifest لهذا الملف دور كبير جداً في بناء وفي آلية عمل تطبيقات المترو وهو بالاساس ملف خصائص بصيغة Xml ولكن عند النقر المزدوج عليه ضمن مستكشف الفيجوال ستفتح صفحة جديدة ضمن الفيجوال ستوديو تضمن ازرار و قوائم تمكنك من إعداد خصائص البرنامج بطريقة سهلة بدل كتابتها بصيغة xml . في هذا المثال البسيط والسريع سنقوم ببضع تغيرات طفيفة مثل تغيير اللوغو الافتراضي للبرنامج و اسمه كما توضح الصورة التالية:
appxmaifist
الان وبمجرد أن نقوم بتنفيذ البرنامج يقوم فيجوال ستوديو بتسجيل البرنامج وتثبيته ضمن برامج الميترو للجهاز –آلية التسجيل يمكن التطرق لها في مقال آخر- كيف تتأكد من هذا؟ فقط قم بتشغيل البرنامج ومن ثم إيقافه. انتقل إلى واجهة المستخدم ستجد إيقونة البرنامج أو وفق مصطلحات ميترو الجديدة Tile –لا أدري هل يصح تعريبها قرميدة؟- موجودة بين بقية (قرميدات) البرامج المثبتة الاخرى.
app_installed


الان و من باب الاختبار البسيط ل API الجديدة و حتى يتكون لديك صورة واضحة عن الفلسفة الجديدة في تصميم الميترو سنقوم بإضافة زر إلى الصفحة الرئيسية كما يلي:

<UserControl x:Class="HelloNewWorld.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="768" d:DesignWidth="1366">
   
    <Canvas x:Name="LayoutRoot" Background="#FF0C0C0C">
        <Button Name="btnTest" Margin="5" Content="Test" Click="btnTest_Click"/>
    </Canvas>
   
</UserControl>


ذا الزر سيقوم بإظهار رسالة إلى المستخدم. تعودنا في .net أن نقوم بذلك سابقاً عن طريق الصنف MessageBox الموجود في في System.Windows ومن ثم استدعاء التابع (الستاتيكي) Show . هذا كان سابقاً أما في (العالم الجديد) فالأمر مختلف كلياً. نحن بحاجة إلى الصنف MessageDialog الموجود في Windows.UI.Popups وبما أن الميترو تطغى عليه التوابع والاجرائيات غير المتزامنة Async سنستخدم تابع ShowAsync لإظهار الرسالة. وهنا أنت بحاجة لاستعاب طريقة عمل ال Async و طريقة استعماله. وهي بالمناسبة طريقة سهلة وعبقرية التصميم تجعل منها الطريقة الاسرع و الاسهل –حسب رأيي- لبناء و استدعاء توابع multithreads و إن كانت –وهذا عن تجربة شخصية وعملية- برمجة ال multithreads في تطبيقات ال native -وأنا أتحدث هنا عن دلفي تحديداً- أفضل أداء و أكثر جدارة وهذا عن تجربة شخصية لبرنامج نفذته ب C# ومن ثم بدلفي. إذا لاظهار الرسالة للمستخدم يكفي كتابة الكود التالي وهي ستكون رسالة بالانكليزية كون اللغة العربية – تعاني من مشاكل في الاظهار في برامج الميترو وفي XAML حصراً :

private async void btnTest_Click(object sender, RoutedEventArgs e) { MessageDialog dlg = new MessageDialog("Hello new World!");   await dlg.ShowAsync(); }


و للتضح الصورة أكثر عن حجم التغيير في ال API الجديدة لنجرب هذا الكود بعد تشغيل البرنامج، النتيجة ستكون كما يلي:
HelloNewWorld
بالتأكيد بعد هذا المشروع و المثال البسيط لابد أن الصورة قد اتضحت بعض الشيء حول هذا (العالم الجديد) و حجم العمل الذي يلزمك للتتقن أدواته و مفاهيمه الجديدة في حال أحببت التوجه ببرامجك إليه.

--عصام

Articles Categories: