عن تحديثات أعلنت عنها مايكروسوفت 9/12/2013

إصلاحات وإضافات مايكروسوفت للنسخة الأخيرة
إصلاحات وإضافات مايكروسوفت للنسخة الأخيرة

فى البداية من يرى سعى مايكروسوفت فى التسارع فى عملية الإصدارات , يقول لك :- يبدو أن مهندسى مايكروسوفت يعانون من مشكلة الفراغ 🙂 يحاولون شغله بالإصدارات المتتالية, لم ينتظروا حتى موعد إصدار النسخة الحديثة من visual studio , بل سارعوا إلى إصدار يحمل إسم x.1 .

فى الحقيقة, ليس الأمر كذلك, الفكرة, أن هذة التحديثات, مجرد ترقيع إن صح التعبير للمزايا المضافة منذ شهرين فى النسخة الأخيرة من Visual Studio, أو بعبارة أخرى, معالجة السقطات أو ماتم نسيانه أو ربما ما طالب مجتمع المطورين به, ولا ننسى ذكر أن هناك بعض المشاكل التى آتى التحديث بعلاجها. على كل حال , لدينا فى هذا التحديث نوعين من التحديثات :-

  • إضافة جديدة

  • معالجة خطأ

ولنأخذ نظرة سريعة على كلاً منهم وما جاء به :-

إضافة الجديد

تضمنت التحديثات إضافة إلى كلاً من :-

  • ASP.NET MVC 5 تحت إسم ASP.NET MVC 5.1 .

  • ASP.NET Web API تحت إسم ASP.NET Web API 2.1 .

ما هذة التحديثات ؟

العارف بهما , يعلم أنهما مشتركان فى كثير من الأمور , بل إن Web API قد بنيت إستناداً على MVC , ولهذا ما يتم إضافتة فى الأولى من السهل أن يضاف فى الثانية والعكس صحيح أيضاً, لهذا نجد أن هناك إضافة ً واحدة مشتركة إلى MVC و Web API فى هذا التحديث كانت كالتالى :-

  • ظهر فى الإصدار الأخير MVC5 و Web API 2 ما يعرف بـ Attribute Routing وهو عبارة عن ضبط الـ Routing من خلال مجموعة من Attributes , والحقيقة فى هذا , أنهم قد آخذوا خبرتهم فى عملية الـ routing الأصلية التى تسمى Convention-based Routing والتى مازالت موجودة حتى الآن وتعمل جنباً إلى جنب Attribute Routing ونسخوها وقدموها بطريقة آخرى وهى أن يتم ضبطها وعملها بواسطة مجموعة من الـ Attributes, مثال Route و Route Prefix , فطالب مجتمع المطورين بوجود ما يعرف بـ Version Routes , أى السماح لنا بتعريف version للـRoute , بمعنى أننا إذا كان لدينا عنوان مثال api/customer فإنه يمكن مع تحديد الـ Version يمكن أن يذهب إلى أكثر من Controller , حسب الـ Version المحدد , حيث يتم تحديد الـ Route مصحوباً برقم يسمى Version(الأصدار) مثال التالى :-

Route(“api/customer”, 2 )

حيث يتم بعد ذلك إرسال رقم الـ version ضمن الـ Request Header .

  • إضافة آخرى فيما يخص Routing وهى موجودة بالفعل فى MVC ولكن لم نجدها هنا فى Web API وهى Ignore Route وتخص تجاهل العناوين المحددة, والكثير منا يعرفها.

  • كذلك تمت إضافة إمكانية ملئ DropDownlist بقيم قادمة من Eunm وكذلك تقديم EunmHelper وذلك داخل الـ Views فى MVC بالطبع .

  • إضافة آخرى إلى Views داخل MVC وهى دعم العمل مع boostrap فى الحقل Editor والفكرة أنهم أضافوا إمكانية قبول الحقل Editor لمتغير يمثل html attributes والأصل فيها هو إمكانية إضافة css class كما يلى :-

@Html.EditorFor(model => model, new { htmlAttributes = new { @class = “form-control” }, })

شهدت Web API مجموعة أكبر من الإضافات , ورأينا منها بالأعلى Attribute Routing , وأضف على هذا التالى :-

  • معالجة الأخطاء لعموم التطبيق وتسجيلها, ولعمل هذا قاموا بإضافة ما يعرف بـ Logger أى مسجل الأخطاء على مستوى التطبيق .

  • بعض التحسينات إلى صفحة التوثيق أو المساعدة لـ Web API والتى تعرف بإسم Help Page .

  • تقديم Formatter يدعم البيانات من نوع BSON ودعم العمل مع كلاً من HttpClient الذى يمثل الـ Client , وكذلك Web API Controller و التى تمثل الـ Server .

  • دعم العمل مع Action Filter من خلال Async , أى إجراء Action Filter تعمل بنظام Asynchronous , وذلك من خلال إمكانية العمل مع كلاً من async , await  داخل الـ Action Filter  .

  • دعم تحليل ومعالجة Query String فى Http Client وذلك من خلال معرفة القيم المرسلة فى العنوان وتجميعها بل وإمكانية الإضافة والتعديل عليها من خلال ما يعرف بإسم HttpValueCollection .

معالجة الأخطأء

شملت معالجة الأخطاء كلاً من Web API وMVC وكذلك Web Pages و Razor ,, وسأعطيك رابطاً بصفحة بها كامل الأخطاء التى تم معالجتها.

أما الآن فدعونا نثرثر قليلاً عن ما يحدث :-

لماذا بهذة السرعة , وهل الموضوع بهذة الدرجة من المرونة والسهولة كذلك ؟ …….. أم أنهم يعملون على قدمٍ وساق حتى يقوموا بهذا العمل ؟ ………………… الحقيقة, كل هذة الأمور وزيادة عليها ليست بالعمل الشاق ,ولعلك تندهش حينما أخبرك بأنه فى الأصل ,عملية إخراج كلاً من Web API وقبلها MVC أيضاً إلى النور لم تكن بالعمل الشاق !!!! , فمن الأولى أن تكون التحديثات ومعالجة الأخطاء أمراً يسير.

بالفعل هم كذلك , الأصل فيهما , أنهما قد تم بنائهما على خلفية وجود ASP.NET Framework فكانا بمثابة إنشاء Handler و Module , بالفعل هم كذلك , Routing Module و MvcHandler فى MVC وhttpMessageHandler فى Web API , وتم العمل بداخلهم بإستخدام Reflection للوصول إلى الـ Controller وما يحتويه من Actions , وهذا هو إختصار موجز لتعريف كلاً من MVC ,Web API.

الروابط :-

رابط الإعلان عن التحديثات :- http://goo.gl/fg2Jxk

رابط شرح المزايا المضافة وكذلك الأخطاء التى تمت معالجتها :- http://goo.gl/qNjVPj

وفى الختام نسأل الله التوفيق للجميع .

2 thoughts on “عن تحديثات أعلنت عنها مايكروسوفت 9/12/2013”

  1. مقال مفيد جدا جزاك الله خيرا , ولكن اختلف معك استاذي في ان التحديثات ووضع ال mvc , api
    ليست بالعمل الشاق , اعتقد انه يتطلب قدر من الدقة والتركيز يفوق جهد المبرمج العادي لانها تقدم لملايين المطورين , والاضافة الي التحسينات التي نلاحظها في بيئة العمل والالوان وتحسينات محررات الكتابة بالنسبة ل css او javascript
    ممكن اختيار لون او خلفية معينة يستغرق المزيد من الوقت والتغيير , بس عندك حق الناس دي فاضية😀

    1. 🙂
      كلامى هذا , من واقع معرفتى بكيفية عمل MVC و API وما يحدث وراء المشهد , لا شئ جديد , غير أن هناك فكرة , وطريق عمل معينه , ومن ثم عمل Framework متكامل معتمدين فيه على ASP.NET بشكلها العام .
      فكان يمكن أن تقوم أنت بإنشاء Web API بشكلها الحالى وكذلك MVC بشكلها الحالى , بإستخدام ما إتيح لك فى Web Forms ولكن ينقصك بعض الوقت , وكما ذكرت فى المقال , فقط كل ما تريده هو Module و Handler .
      أذكر كلامى هذا لأستشهد به أن العمل ليس به الكثير من المشقة ولكنه رائع .

      أما عن تحديثات المحرر فهذا أمراً جيداً بل رائعاً , بل Razor كله أكثر من رائع وإن كان الامر أيضاً بإمكانك فعله بنفسك🙂 , بإمكانك أن تقوم بعمل Engine خاص بك , بعيداً عن Razor وASPX وغيرهم , الحقيقة تكمن فى الـ Compiling للمحتوى وهكذا , ولعل Razor Engine من ألهمنا بهذا , فى النهاية , الموضوع يحتاج فعلاً جهد .

      أما موضوع إن الناس دى فاضية لازم نروح نشوف مايكروسوفت على الطبيعة🙂

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s