ولدت Net . فلم تعد البرمجة بعدها كما كانت .....
بسم الله الرحمن الرحيم
أعزائي المبرمجين ومصممي صفحات الوب رواد سوالف سوفت...
تحياتي القلبية لكم ...
بدعوة من صديقي العزيز MrMatrix المبدع انضممت لهذه المجموعة الرائعة من المطورين العرب ..
وأتمنى أن أفيدكم بشيء ما بقدر ما سأستفاد منكم ..
بصراحة استفسار طرحه MrMatrix قبل أسبوع أو أقل هو ما أردت الرد عليه ....
( لو طلب منك عمل برنامج ويب ضخم بمواصفات عالية
فما هي اللغات التي ستقوم باستعمالها في هذا البرنامج
بغض النظر عن اللغات التي تعرفها أنت ولن تستطيع البرمجة إلا بها )
أعزائي المبرمجين والمطورين ...
لست أعرف بالضبط كم منكم سوف يصوت ضد فكرتي ... وخصوصاً أنها نابعة من محبِ لمايكروسوفت ومنتجاتها .. ولكن أتمنى أن تكونوا عمليين في هذا النقاش .. ولنحاول أن نستفيد معاَ ..
سأوضح خياراتي هنا وبصورة مبسطة وأتمنى أن أجد ردودكم لنثري هذا النقاش …
لطالما راهن عمالقة الكمبيوتر على أن الجيل القادم من خدمات الإنترنت سوف يتركز ويتمحور حول البرمجة المرتكزة على الويب ، فقدمت Hewlett-Packard برنامجها E-Speak ، أما IBM فقدمت لنا Websphere ، وكلها عبارة عن تطبيقات لتطوير المواقع تركز على ما يسمى بالبرمجة الثلاثية الطبقات Three Tier System Architecture وهي الصيغة القياسية الحديثة التي تتجه نحوها عالم برمجيات الإنترنت ، وحجر الزاوية لهذه الفلسفة الجديدة يا رفاق هو الزبون ، أي أن هذه التقنية تتفاعل مع المستعرض الهدف وتحمله بعضاَ من أعباء العمليات المطلوبة وفي نفس الوقت تكون استجابة الموقع للهدف مخصصة به إلى أقصى درجة ، و مفصلة بحيث تناسبه تماماَ. وفي هذه الأثناء اتجهت العيون إلى عملاق عالم المعلومات مايكروسوفت وهم يتساءلون ماذا عساها تمنح العالم هذه المرة ؟؟ وجاء الجواب على هذا السؤال في مؤتمر مايكروسوفت للمطورين المنعقد أورلاندو The Professional Developers Conference (PDC 2001) الذي أعلن عن ولادة الأطر الجديدة لمايكروسوفت تحت مسمى ..
(.Net Framework) ، وقد كانت هذه الولادة فعلاَ بعداَ أخر لعالم البرمجيات والتطوير السريع .. وفعلاً أبصرت .Net النور فلم تعد البرمجة بعدها كما كانت ( لو سمحتم لي بالإستعارة .. ) ...
أتت أطر .Net مكونة من عنصرين أساسيين الأول مخصص لتصميم برامج سطح المكتب وأسمه WinForms والأخر مخصص لتطوير تطبيقات الإنترنت بالإسم الكودي ASP.net كلاهما غني بالمميزات ويعتبران بيئة تطوير سريعة مع محرر للواجهات سهل الاستخدام ويطبقان نظرية WYSIWYG ( ما تراه هو ما ستحصل عليه ) ، هذا بالإضافة إلى العديد من المزايا التي أتحفت بها مايكروسوفت عشاقها ودافعي ضرائبها لكي تقنعهم بقدرتها على المحافظة على عرشها ، وبالفعل أيقن العديدون بأن .Net أكثر من مجموعة لغات برمجية عالية الكفاءة وللعديد من المبرمجين أصبحت هذه الأطر بمثابة دينهم البرمجي الجديد . لماذا ..؟؟ هذا ما سنطرحه ونناقشه ..
قبل أن تصل .Net إلى أيدينا عانينا من العديد من المشاكل في عالم تطوير برامج ومواقع الإنترنت ، انطلقت مايكروسوفت تسجل ملاحظاتها على هذه الثغرات في عالم التطوير مدعمة بجيوش من ملايين المستخدمين والمبرمجين والمطورين المخلصين حول العالم ، ومن ثم قدمت لنا كل هذه الحلول وأضافت عليها تسهيلات وميزات رائعة لم تراود المطورين إلا في أحلامهم. و لكي نطلع على هذه المزايا لنلقي نظرة سريعة على ما كان ينقصنا في عالم التطوير الشبكي والتي سنسردها من خلال هذه النقاط :
1. التفاعل الحقيقي بين السيرفر والزبون وهو الذي تحتاجه برامج الإنترنت وليس مجرد ملفات كوكيز تخزن في حاسبة الزبون لكي نتذكره ، الحقيقة المرة هي أن السيرفر عندما يستجيب لطلب صفحة محددة للمستعرض ينهي الإتصال مباشرةَ ، ولو طلب الزبون نفس الصفحة بعد ثواني لأعاد السيرفر ( بكل غباء) نفس الخطوات السابقة كلها .وذلك لعدم وجود أية معلومات ( في جهة السيرفر ) تحافظ على مرجعيات الإتصال .
2. قلة معلومات التي من الممكن أن تتبادل بين السيرفر والزبون وذلك لاختلاف بيئات التشغيل واللغات البرمجية والنصوص التي تعمل عليها مختلف أنواع المستعرضات ، ولم تكن جافا صاحبة شعار إكتب مرة وشغل في كل مكان ( write once and run evry where ) هي الحل الذهبي لهذه المشكلة وذلك لأنها وبكل بساطة تعتمد على Virtual Machine لو منح لـ (صخر بيسك) كان أدى نفس أدائها ( مع إحترامي لمبرمجي جافا و شركة صخر J ) ، وذلك لأن الإعتمادية على المستعرض الزبون في تحليل الشفرة أصبح أمراَ كلاسيكياَ في عالمنا المعاصر .
3. العديد من النصوص البرمجية مثل JSP أو حتى ASP التي هي الأصل لفكرة صفحات السيرفر البرمجية ، أو حتى غيرها من النصوص البرمجية المستخدمة بكثرة على ضفاف الوب كانت من النوع الثقيل ، فلكي تبرمج عملية Validition يلزمك جرافة لنقل أطنان الكود المستخدم ضمن صفحتك عبر الشبكة !! وبوجود أطنان الكود الغبي على السيرفر فإن هذا المسكين أصبح يعاني من بطء الفهم وبطء الإستجابة والإدراك ، وعلى المدى البعيد أصبح مهدداَ بشلل الأطفال J .
4. البرنامج المستعرض (Web Browser) كان في حد ذاته إحدى الكوارث الكونية التي عانى منها المبرمجون لفترة طويلة ، نظراَ لتفاوت أنواعها وقدراتها في حين أن المطور المسكين كان يطمع دائماَ ببرنامج شبكي يعمل على كل المستعرضات ، ولذلك كان يسهر الليالي ليجرب موقعه الخدمي على قائمة طويلة من المستعرضات المشهورة والغير مشهورة والمعاقة كذلك ، ليأخذ بالإحتمال كافة الفرص الممكنة للنجاح .
5. قواعد البيانات (Database) هي أيضاً إحدى الفقرات الغير سارة إطلاقاً في عالم البرامج المرتكزة للويب ، اليوم حتى صفحة الدخول لمواقعكم الشخصية صارت تحتاج لربط خلفي مع قاعدة بيانات ( ولو للمبالغة ..!) ، وهذه تحتاج للقليل من الخبرة سواء في ADO ( ActiveX Data Object) أو ODBC أو حتى غيرها من خدمات البيانات المزعجة التي تضيع وقتنا وتستهلك من مصادر أجهزتنا أكثر مما تستهلك زوجتي من مصروفي الشخصي التي تعطيني إياه بعد أن تستلم راتبي ! . ناهيك عن الأخطاء القاتلة في البيانات والتي تتسبب بغلق خدمات موقعك وتعطيلك لمدة طويلة .
مايكروسوفت وبكل تواضع حلت هذه المشاكل تماماً من خلال أطرها الجديدة (.Net) وصدقوني لم يسبق لي أن عملت مندوب دعاية لمنتج ما ، ولكن مع Visual Studio .Net أنا مستعد لهذه الوظيفة مقابل نسخة مجانية منه J. ولكي نتعرف عن قرب على روعة هذه التقنية فلنلقي نظرة على القلب النابض لهذه الأطر ..
Common Language Runtime أو (CLR) وهي المحرك الحقيقي لهذه التقنية (والبديل لنظرية الـ Virtual Machine القديمة ) وهي التي تتولى الإهتمام بكافة العمليات الجانبية مثل تجميع البرنامج Compiling و الإختلاق Instating أو الوراثة Inheritance ، وكذلك التنفيذ الآمن لمكونات خارجية أخرى .والأن سيتمكن المطورون من كتابة برامجهم مستفيدين فائدة كاملة من الإندماج العالي لوظائفية الواجهات العامة لـ .Net ، ليحرروا ما يحلوا لهم من Class أو Functions أو حتى إستغلال وأعادة بناء سطورهم البرمجية القديمة ، إلى جانب أن .Net تأتي مع عدة لغات برمجية أهمها C# و VB.net وكذلك ASP.net إلى جانب العديد من اللغات الأساسية القديمة ( مثل كوبول وفورتران وغيرها ) التي أصبحت تزهو اليوم بأنها تحمل الإمتداد .net ( فأصبحت كوبول .net ) ، وبكل بساطة ذلك يعود لقدرة .Net على إستيعاب اللغات البرمجية ودمجها ضمن إطار النظام . وسأطرح هذا الموضوع لاحقاَ في مجال أخر لذلك فلنعد للحديث عن المميزات العامة للغات الرئيسية الثلاثة ( إن صح القول ، فإن ASP.net تعتبر متميزة عن البقية لضرورة تواجدها مع C# و VB.net عندما يعملان على تطبيق شبكي ، أي أنها ليست منفصلة بحد ذاتها ولكنها أساس الخدمة الشبكية في .Net ) ، ومن أهم المميزات :
1. لم يعد هناك داعي للمعاناة وسط تعددية المستعرضات الشبكية ، فأي تطبيق شبكي ينفذ بإستخدام .Net يمتلك القدرة على التعرف على معلومات المستعرض المستهدف ويجيبه بأنسب طريقة له لتعرض المعلومات على واجهتها جميعا بشكل واحد ( بلغة أبسط .. إكتب سطور برنامجك مرة واحدة ليتولى .Net ترجمته لحظياَ على السيرفر إلى صيغ مختلفة تناسب مختلف المستعرضات ).
2. يمتلك تطبيق .Net القدرة على متابعة حالة الصفحة على متن المستعرض عبر العديد من الأحداث التابعة لهذه الميزة ، بعكس نظرية ( سلم الطلب وأنصرف ) القديمة فإن .Net يتابع الحالة ويمنحك العديد من الخيارات كمبرمج لاستمرار الإتصال مع المستعرض الزبون .
3. لم تكن مايكروسوفت ستستغني عن نظرية البرمجة الحدثية (Event Driven Programming) بأي حال من الأحوال بعد التقدم التي حققته في هذا المجال ، فأضافت هذه الميزة إلى .Net اليوم فأصبح بإمكانك إضافة أحداث إلى كل عنصر في صفحة الوب دون أن تهتم بعمليات الأحداث التي سوف تبحر عبر السيرفر والمستعرض بأقل عدد من الرحلات عبر منظومة .Net التي تتعامل بذكاء مع هذه الأحداث من حيث الوقت والمصادر المستهلكة على المستعرض .
4. بغض النظر عن المتحكمات القديمة (OCX) التي أخذت حصة غير قليلة من سوق التطوير فإن لـ .Net القدرة على إعادة إستخدامها جميعاً إلى جانب المتحكمات المتوفرة به أصلا وبكميات هائلة ، ناهيك عن إمكانية تصميم هذه المتحكمات عبر .Net أو خلق متحكم جديد من مزاوجة مجموعة من المتحكمات القديمة . ( فعلاَ الحياة سعيدة في جنة.Net ).
5. نسخة جديدة من ADO تسمى ADO.net تسهل العمل وتجعل التعامل مع قواعد البيانات المختلفة أشبه برحلة سياحية ممتعة. سهولة عالية في التوجيه وثبات رائع في الإتصال وتشفير أمني عالي الكفاءة .
6. تحكم خرافي في عملية الذاكرة المخبئة Cashing على الأجهزة المستعرضة . سهولة في التوجيه وقدرة متقدمة في تحديد العمليات الخلفية للمستعرض .
7. XML وطوطمية جديدة منفردة في نوعها من مايكروسوفت ، ولن أطيل في الحديث عنها لأن للحديث شجون ، كل ماهنالك أنها ستكون اللغة النصية الأولى للبيانات لأنها ولدت لكي تسود .
8. نموذج برمجي جديد ومختلف تماما عما سبق وأن أصدرته مايكروسوفت ، ربما يتفق معي مبرمجوا VB و VC++ و ASP أن هذه اللغات البديلة VB.net و C# و ASP.net تختلف جذرياَ عن اللغات القديمة ولكن الشيء الذي سيلاحظونه تقلص عملاق في الكود اللازم لعملية معينة عندما تقارن بين النسختين . (it is magic of .Net) .
9. الدعم الغير محدود لتقنيات الواب (WAP) برمجياَ وشبكياَ مما يرشح هذه البيئة للقب أفضل بيئة تطوير على الإطلاق لكافة الأجهزة الذكية المحمولة .
هذا كان سرداً سطحياً لقدرات .Net القادمة من عملاق البرمجة مايكروسوفت كهدية القرن الجديد الذي يبدأ بالنسبة لنا المطوري بلغات مايكروسوفت يوم ولادة هذه البيئة القوية . لقد إستغرقت من مايكروسوفت مدة سنتين لكي تنتج هذا المشروع الرائع وهذا المنتج البديع ، ولازالت تتحفنا بالعديد من المميزات القاتلة بأدائها المميز . يمكنني القول بأن السر في روعة .Net هو هيكليتها المحكمة التي تمكن المبرمج من الكتابة بلغته المفضلة والإستفادة من أداء .Net مرة أخرى وبدون أن يخسر خبراته. يكذب من يقول أن .Net ليس لها مستقبل حافل ، بل إن صوتك لن يسمع في الشبكة خلال السنوات الخمسة القادمة إذا لم تكن تتكلم بلغة .Net
وهذا مع إحترامي لكل ما ذكره الأخرون ( وكل ما ذكرته أنا ) رأي شخصي .
أتمنى أن تكونوا أستفدتم بشكل أو بأخر ...
على العموم لم أتطرق للكثير من الميزات بإنتظاركم ..
فالتفاعل الخلاق هو ما يبني المعرفة البشرية ..
ولكم مني تحية ...
__________________
Only those how see the invisible…
Can do the impossible…