Category Archives: ASP.Net

ASP.Net controls , Components ,Configuration And More ………

احترف ASP.NET بالعربية, وبالفيديو, ومن أى مكان.

احترف ASP.NET بالعربية, وبالفيديو, ومن أى مكان.

دورات فى برمجة مواقع الإنترنت بالعربية وبأسعار مناسبة للجميع

من داخل مصر :- 1150 جنية مصرى  بدلاً من 1350 جنية مصرى .

من خارج مصر :- 750 ريال سعودى  بدلاً من 850 ريال سعودى .

كما يمكنك الحصول على أى دورة  منهم بشكل مستقل , وتجد التفاصيل فى الروابط بالأسفل

لا تتردد , وتميز فى ASP.NET , فإن فى المعرفة قوة

تفاصيل الدورات
ASP.NET Web Forms Course : http://goo.gl/xMBFg7
ASP.NET MVC 5 Course : http://goo.gl/2hw7Y1
ASP.NET Web API 2 Course : http://goo.gl/YnHeiz
ِKnockoutJs with ASP.NET : http://goo.gl/o2Sho6

للإشتراك

أو يمكنك أرسال رسالة على AhmedMoosaCourses@yahoo.com , وأبلغنى بما يدور فى خاطرك  لنساعدك على أخذ قرار .

تم فتح باب التدريس الخاص عبر الإنترنت

Originally posted on ASP.Net:

تم فتح باب التدريس الخاص عبر الإنترنت لموضوعات مستقلة خارج الدورات, حيث يمكنك الآن إختيار الموضوع الذى ترغب أن يتم شرحه لك, ومن ثم نقوم بتحديد موعد مناسب وعدد الساعات المناسبة لهذا الموضوع, فعلى سبيل المثال , قد ترغب فى أن يتم شرح التالى لك :-
- Unit Testing
- JQuery
- LINQ
-ASP.NET Identity
أو أى موضوع تقوم بتحديده وكان فى الإمكان شرحه فى عدد ساعات محدودة.

بالتوفيق للجميع

للحجز والإستعلام :-

View original

الملف المكتوب من الدرس الآول من دورة ASP.NET Web API 2

ASP.NET Web API Course

الدرس الأول

تعرف على ASP.NET Web API

الهدف من الدرس

التعرف على ASP.NET Web API ولماذا وجدت وفى أى حالة يمكن إستخدامها وكيف يمكننا بالفعل إستخدامها فى تطبيقاتنا وما الهدف من وجودها فى الأصل , وما هى آلية عملها.

محتويات الدرس

  • مقدمة
    • Service

    • Service Types in .NET

  • ما هى ASP.NET Web API؟
  • التعريف بـ HTTPومما يتكون ؟
  • التعريف والتفصيل لكلاً من HTTP Request , HTTP Response؟
  • HTTP Methods

  • HTTP Status Code

  • HTTP Headers

  • HTTP Body

  • لماذا التفصيل فى HTTP؟
  • العودة إلى ASP.NET Web APIوالتعريف بها ؟
    • لماذا سأقوم بإستخدام ASP.NET Web API؟

    • التعريف بـ ASP.NET Web APIمن ناحية فنية وماذا تقدم لنا ؟

  • العلاقة بين Web APIوبين Web Form , MVC .
  • كيف أقوم بإستخدام ASP.NET Web API؟
  • تمرين فى كيفية بناء ASP.NET Web API .

مقدمة

فى كثير من المشروعات نحتاج إلى أن يكون المشروع الذى نعمل عليه قابلاً لإن يتواصل مع تطبيقات آخرى , هذة التطبيقات ربما تكون بلغات برمجة مختلفة وتعمل فى بيئات مختلفة عن التى نعمل عليها وعن اللغة التى نعمل بها, ولهذا لزم علينا إيجاد وسيلة للتواصل بين التطبيقات , ولابد لنا أن نعرف أن هذا التواصل لا يتم إلا فى وجود ما يعرف بإسم “Serviceأو الترجمة العربية لها خدمة” , ومن هذا نستخلص قاعدة :-إنه لابد من وجود Serviceليتم التواصل بين أكثر من تطبيق, وهذا التواصل , ما هو إلا , تمرير بعض البيانات بين التطبيق والتطبيق الآخر, بغض النظر كما ذكرنا من قبل عن نوع التطبيق ولغة وبيئة العمل التى بهما أنشأ التطبيق .

Service

فما معنى Service؟ …………… المعنى , خدمة يقدمها شخص أو مؤسسة , لأشخاص أو مؤسسات آخرى , مثال , شخص إشترى ماكينة لإسال رسال قصيرة SMS , فأوصل هذة الماكينة بالكمبيوتر , وكتب برنامجاً يستطيع أن يتواصل مع هذة الماكينة لتمكينه من إرسال رسائل قصيرة , وأراد هذا الشخص أن يجعل آخرون غيره يتمكنون من إستخدام هذة الماكينة لإرسال رسائل قصيرة , فماذا عليه أن يفعل ؟ …….. من المنطق أن يقوم بكتابة كود برمجى يعمل كحلقة وصل بين الماكينة وبين تطبيقات المستخدمين الاخرين , هذا الكود البرمجى له القدرة على إستقبال طلبات خارجية , والرد عليها , هذة الطلبات من البديهى أن تحمل بيانات تعمل كمدخلات لهذا الكود البرمجى , وبالفعل تعود للطالب ببعض البيانات نتيجةً لطلبه, وتكون هذة هى المخرجات التى يقدمها الكود البرمجى. هذا الكود البرمجى , يطلق عليه إسم Service ”. ولعلك سمعت بأمثلة كثيرة مثال خدمة تحويل العملات , وخدمة معرفة أحوال الطقس ودرجات الحرارة وغيرهم ,فالفكرة تكمن فى أن لدينا كود برمجى نريد أن يستطيع الآخرون الدخول عليه وتنفيذه من خارج التطبيق وربما نقل بعض البيانات منه وإليه .

ولكن كيف يتم التواصل بين الكود البرمجى وبين التطبيقات الآخرى ؟ ……. هذا الآمر يختلف حسب الطريقة المتبعة فى كيفية التواصل , وسنتعرف على هذة الكيفية فى الدروس القادمة إن شاء الله , ولكن هذة التواصل له طرق عدة , منا ما سنذكرة فى النقطة القادمة وهى أنواع الخدمات داخل .NET .

Service Types in .NET

فى البداية , تم إيجاد ما يعرف بإسم XML Web Service , ومنها إلى WCF Serviceومؤخراً كانت ASP.NET Web API , وكلاً منهم له دوره,وقد تشترك WCFمع Web APIفى نفس الهدف ولكن تبقى هناك بعض الحالات والإختلافات,وقد نذكر ذلك لاحقاً إن شاء الله رب العالمين, وفى هذة الدورة سنركز على ASP.NET Web APIوالله المستعان. فما هى ASP.NET Web API؟

ASP.NET Web API

نقول وبالله التوفيق , هى Framework لبناء خدمات قائمة على HTTPبإستخدام بيئة عمل .NET, فما معنى كلمة Framework؟ ………. يتم التعريف بإنه مجموعة من Classesالتى يعاد إستخدامها” ,وقد وضحنا من قبل ما المقصود بكلمة Serviceأو خدمة , فما معنى HTTP؟ …….. هو إختصار لإتفاقية نقل النصوص المتشعبة , وهو Hyper Text Transfer Protocol , ولا شك أننا نراه حين نتعامل مع مواقع الإنترنت , فهو المستخدم فى التواصل بين المتصفحات ومواقع الإنترنت المنتشرة ,ومثال على ذلك :-

http://www.asp.net/web-api

ولا يقتصر فقط على صفحات الإنترنت, بل يمتد إلى طريقة لنقل بيانات بين التطبيقات, وتقديم خدمات بين التطبيقات , ومن هذا نخرج بإن ASP.NET Web APIقائمة على HTTP , وعليه وجب علينا التعرف أكثر على HTTP , والله المستعان .

HTTP

كما ذكرنا من قبل , أنه إختصار Hyper Text Transfer Protocol , والمعنى إتفاقية لنقل النصوص المتشعبة , وهو وسيلة إتصال بين المتصفحات ومواقع الإنترنت , ويمتد ذلك إلى وسيلة لنقل البيانات بين التطبيقات بإختلاف أنواعها , سواءً كانت Webأو Client , أو ربما MobileأوTabletأوغيرهم من الإجهزة الحديثة , فالكلُ , ما دام أنه يفهم HTTPفلابد من أن تتم عمليه التواصل بنجاح.

HTTP Response / HTTP Request

التواصل هنا يتم بتقديم طلب من طرف ومن ثم الرد على هذا الطلب من الطرف الآخر , الطلب هنا يسمى Requestوعليه فهو HTTP Requestوالرد يسمى Responseوعليه فهو HTTP Response.

وكما رأينا عند كتابة العنوان التالى وهو :- Http://www.asp.netفى المتصفح , فإنه يقوم بإرسال Http Requestلهذا العنوان , وتفصيل هذا العنوان كما ترى :-

الإتفاقية (البرتوكول) المستخدمة فى نقل النصوص المتشعبة بين الأجهزة والتطبيقات.

HTTP

World Wide Web , وهو شبكة الإنترنت , والتى تسمى الشبكة العنكبوتية

WWW

يسمى Domainو Company Namrوhostوهو إسم الموقع المراد الإتصال به

asp.net

HTTP Request

فعند كتابة هذا العنوان فى المتصفح والضغط على Enter , فإننا بذلك نرسل طلباً إلى العنوان المحدد , ويتكون هذا الطلب من ثلاثة أجزاء ,وهم كما هو مبين بالشكل التالى :-

[Method ] [Path] [Version]

[Header]

[Body]

وكما ترى فلدينا ثلاثة أجزاء:-

[Method ] [Path] [Version]

فالجزء الأول, عبارة عن تحديد نوع الطلب من خلال تعريف Method , وكذلك تحديد المسار المراد وهو عنوان المصدر(Resource) المطلوب , وآخيراً , تحديد إصدار HTTPالمراد العمل به.

[Header]

والجزء الثانى, عبارة عن تحديد معلومات عن الطلب الصادر من الـ Client إلى الـ Server , وبه نحدد بعض البيانات التى يستخدمها الـ  Server فى تحديد المسار المطلوب وكيفية التفاعل معه .

[Body]

والجزء الثالث , عبارة عن المدخلات التى يرسلها الـ Clientإلى الـ Server ليستخدمها الأخير فى معالجة الطلب .

وهناك تفصيل أكثر من ذلك ولكن فيما بعد إن شاء الله , وإليك مثال على ذلك , لنأخذ العنوان التالى ( http://www.asp.net/web-api ) ليكون الطلب بالشكل التالى :-

GET web-api HTTP /1.1

Host : www.asp.net

هذا هو الشكل البسيط لطلب للعنوان المذكور بالأعلى , وجاء الآن وقت التفصيل فى هذا الطلب :-

Method

GET

Path

web-api

Version

HTTP /1.1

Host

Www.asp.net

Body

لايوجد

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

Accept : text/html, application/xhtml+xml, */*

Accept-Language : ar-EG,en-US;q=0.5

User-Agent : Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)

Accept-Encoding : gzip, deflate

Host : http://www.asp.net

Proxy-Connection : Keep-Alive

ويمكن أيضاً أن يحتوى الطلب على بيانات Cookieومعلومات آخرى عن الطلب وما نريده .

            للإشتراك فى  دورة ASP.NET Web API 2  من هنـــــــــــــــــــــــــــا

HTTP Request Methods

رأينا بالأعلى مثالاً عليها وهى الدالة GET, ولابد أن يحتوى كل طلب على واحدة من هذة الدوال , والتى بدورها تدل على نوع الطلب , وفى حالة أن الطلب يحمل الدالة أو الأمر GETوتسمى إنجليزياً (Method , Verb ), يعنى ذلك , أن الطلب تم إرساله للحصول على بعض البيانات, وأنه ينتظر أن يرد عليه الـخادم ببعض البيانات , وإليك الدوال الرئيسية التى يستخدمها HTTPفى تعريف نوعية الطلب:-

الوصف

Method/Verb

لإخبار الـ serverأننا نريد الحصول على بعض البيانات

GET

لإخبار الـ serverأننا نريد إضافة بعض البيانات

POST

لإخبار الـ serverأننا نريد تحديث بعض البيانات

PUT

لإخبار الـ serverأننا نريد حذف بعض البيانات

DELETE

لإخبار الـ serverأننا نريد معلومات عن الـ HTTP Header

HEAD

HTTP Request Header

يمثل الـ Header فى الطلب كحامل معلومات إلى الخادم , فمنها على سبيل المثال كما رأينا , Host والتى تشير إلى العنوان المطلوب , ويوجد أيضاً Accept والتى نستخدمها فى إخبار الـ Server بنوع البيانات الذى ينتظره الـ Client , وكذلك يوجد  User-Agent والتى بدورها تحدد نوع المتصفح (Client) الذى قام بإرسال الطلب, وإليك بعضاً منها :-

الوصف

Header

لتعريف العنوان المراد الوصول إليه

Host

لتحديد نوع البيانات المنتظره من الـ Server

Accept

لتحديد الـ Encodingوويقدم حلاً لمشاكل تحميل الموقع بشكل أسرع.

Accept-Encoding

لتحديد الـ Character setsوله فائدة فى حل مشاكل اللغة العربية فى العرض

Accept-Charset

لتحديد الجهة السابقة القادم منها الطلب ,وبه نعرف من أى موقع قدم إلينا الزائر

Referer

لتحديد البيانات المخزنة فى الـ Cookieالمرسلة من المتصفح إلى الخادم .

Cookie

لتحديد اللغات التى يقبلها المتصفح

Accept-Language

لتحديد حجم البيانات المرسلة فى الـ Bodyإلى الـ Serverإن وجد

Content-Length

لتحديد نوع البيانات المرسلة فى الـ Bodyإلى الـ Serverإن وجد

Content-type

نستخدمها فى تعريف طلبات تتم بإستخدام AJAX.

X-Requested-With

وغيرهم كثير, وسأرفق لك إن شاء الله ملفاً مستقلاً يبين Headersوآخر يبين Methodsضمن ملفات الدرس.

HTTP Request Body

كما ذكرنا من قبل, أنه, عبارة عن المدخلات التى يقوم المتصفح بإرسالها إلى الخادم , وتكون هذة المدخلات من النوع الذى تحدده فى الـ Content-Type الذى يتم تعريفه فى Header , ولابد على الجهة الآخرى أن يتعرف الخادم على هذا النوع من البيانات , فقد تقوم بعمل نوع خاص بك وتعالج ذلك على الخادم , فمثال على الأنواع المتعارف عليها , أن تكون المدخلات من نوع string أى نص عادى , وربما يكون JSON أو ربما  XML أو نوع مخصص مثل csv , وتلعب الـ Serialization دوراً مهماً على الخادم فى فهم هذة المدخلات وتحويلها إلى CLR Object , أى تقوم بتحويلها إلى Objects تعمل مع بيئة .NET. و سنرى أمثلة لذلك كثيرة جداً فى الدروس القادمة , بل على مدار دروس الدورة إن شاء الله .

HTTP Response

يرد الخادم على الطلب مهما كان الناتج , أى أنه يرد حتى وإن لم يكن المصدر(على سبيل المثال , صفحة , ملف , صورة أو غيرهم ) المطلوب موجود , ففى كل الأحوال يقدم رداً , ولكن يختلف محتواه , وإليك رسماً لمحتوياته

[version] [status] [ reason]

[headers]

[body]

وكما ترى هنا أيضاً , لدينا ثلاثة أجزاء , مثلما كان فى محتويات الـ Request مع وجود بعض الإختلافات, ولكن يبقى المعنى واحد.

[version] [status Code]

فالجزء الأول, يحتوى على تحديد إصدار HTTP وكذلك حالة الطلب, والحالة (Status ) هنا يقصد بها النجاح أو الفشل أو ربما غيرهم , مع الرسالة المصاحبة للحالة (ٍStatus) وسنفصل بعد قليل.

[headers]

والجزء الثانى, هو لتحديد بعض المعلومات عن الرد الناتج من الـServer بناءاً على طلب المتصفح (Client) ويختلف مع الـ  Header الخاص بالـ Request فى بعض الخصائص.

[Body]

والجزء الثالث , عبارة عن المخرجات التى يرسلها الـ Serverإلى الـ Clientليستخدمها الأخير فى معالجة الرد , وعرضه للمستخدم إن أمكن ذلك.

HTTP Response Status Code

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

  • الأرقام التى تبدأ من 100إلى 199تحمل رسالة بها معلومات عن الطلب ومراحله.

  • الأرقام التى تبدأ من 200إلى 299تحمل رسالة تفيد نجاح الطلب والرد عليه.

  • الإرقام التى تبدأ من 300إلى 399تحمل رسالة تفيد بإن هناك عملية إعادة توجيه Redirection .

  • الأرقام التى تبدأ من 400إلى 499تحمل رسالة تفيد بإن هناك خطأ فى المتصفح (Client ).

  • الأرقام التى تبدأ من 500إلى 599تحمل رسالة تفيد بإن هناك خطأ فى الخادم (Server ) .

وإليك بعضاً من هذة الأرقام وسيتم إرفاق ملفاً بمجمل هذة الأرقام ضمن محتويات الدرس إن شاء الله رب العالمين

الوصف

Code

يبين أن الطلب تم الرد عليه بنجاح.

200 OK

يبين أن الطلب تم بنجاح , وأنه تم إنشاء Resourceجديد

201 Created

يبين أن العنوان المطلوب تم تغير مكانه بشكل دائم , ويجب الوصول إليه من خلال العنوان الجديد المعطى ضمن الرد.

301 Moved Permanently

يبين أن الـ Resourceالمطلوب لم يتم تحديثه بعد آخر مرة تم وضعه فى الـCache, ولذلك يمكن إستخدام النسخة الموجودة منه فى الـ Cache.

304 Not Modified

يبين أن المستخدم لايملك الصلاحية المطلوبة للدخول على هذا الـ Resource (ملف , صفحة , صورة , وغيرهم ).

403 Forbidden

يبين أن الـ Resourceالمطلوب غير موجود .

404 Not Found

يبين أن الخادم لديه مشكلة ما

500 Internal Server Error

يبين أن الخادم لا يستطيع تنفيذ الـ Request Method , مثال (GET, put , وغيرهم , ولكن هذا وفقاً لما نقوم بضبطه فى الخادم وسنعرف ذلك فى درساً قادم إن شاء الله , كأن نمنع آحد من تحديث بيانات , أى نمنع العمل بإستخدام Put ).

501 Not Implemented

بقية الأرقام والرسائل تجدهما فى الملف المرفق ضمن محتويات الدرس إن شاء الله .

            للإشتراك فى  دورة ASP.NET Web API 2  من هنـــــــــــــــــــــــــــا

HTTP Response Header

كما أشرنا من قبل , أن الـ Header هو بيانات عن الطلب المرسل من الـمتصفح (Client ), كذلك فى هذة الحالة هو بيانات عن الرد المرسل من الـخادم ( Server ), وقد تعرفنا على بعضا ً من الخصائص المستخدمة فى تعريف الـ Header , لذلك لن نكرر , ولكن سنورد ما يخص الـ Response .

الوصف

Header

نعرف منها حالة ناتج الطلب, وهى المعروفة بـ Status Code.

Status

نجدها فى حالة أن الطلب تم بـ Postوكذلك مع وجود الحالة 201Created , وكما أشرنا ,أنه فى هذة الحالة , فقد تم إنشاء resourceجديد , وعليه فستجد عنوان الـResourceالجديد فى هذة الخاصية.

Location

نعرف من خلالها إسم الخادم مثال ,IISأو Apache .

Server

نعرف من خلالها بأى تقنية تم إنشاء الموقع مثال , ASP.NETأو PHP.

X-Powered-By

يمكن من خلالها إسناد قيم إلى الـ Cookies , والتى نريد إن نرسلها إلى المتصفح.

Set-Cookie

كما أسلفنا التعريف لهذة الخصائص , أنها تخص المحتوى الموجود فى الـ Bodyومنها نوع وحجم وتشفير البيانات المرسلة من الخادم إلى المتصفح.

Content-Type , Content-Length , Content-Encoding

HTTP Response Body

لاشك أن الطلب قد يحمل رداً به محتويات, قد يكون الرد بملفاً معداً للتحميل وذلك فى حالة عمل download, أو ربما عرضاً لعناصر HTML وذلك فى حالة إستعراض صفحة ما , أو ربما يرد بـ Object يحمل بعض البيانات وذلك فى حالة إرسال الطلب بإستخدام Ajax , أو ربما بيانات من نوع XML أو غير ذلك .

ولاشك أنه لابد من وجود حالة من التوافق بين المتصفح والخادم فى فهم البيانات المرسلة بينهما, ويتولى أمر المعالجة لهذة البيانات كلاً من لغة JavaScript فى المتصفح ,ولغة C#/vb فى الخادم , وغير ذلك , ستكون البيانات لا فائدة منها , لإنها حينها تكون غير مفهومة .

لماذا التفصيل فى HTTP؟

تدور هذة الدورة حول دراسة  ASP.NET Web API وهى فى جورها تعتمد إعتماداً كلياً على HTTP, لذلك فإننا لابد علينا أن ندرك المفاهيم السابق التفصيل فيها مثل Request, Response,Header,Status ,ولاشك Body, وفهمها من الآن يتيح لك إدارك الكثير من الأمور على مدار الشرح للدروس القادمة إن شاء الله, وحرصت على أن أفصل فيها هنا عن قصد, حتى نأتى بالأمر من أوله ولا يشعر أحدكم أن هناك غموضاً فى شئ.

عودة إلى ASP.NET Web API والتعريف بها

إذاً, فـ ASP.NET Web APIعبارة عن Framework لبناء Serviceقائمة على HTTP “, وقد فصلنا معنى كلاً من Frameworkوservice وكذلك HTTP , والآن نأتى للتفصيل فى مجمل التعريف , نجدها مجموعة من الـ Classes تتيح لنا بناء Service وسبق لنا المعرفة بإن Service هى كود برمجى يقبل الدخول من الخارج من أكثر من مكان بغض النظر عن اللغة وبيئة العمل, هذة الـ Service تستقبل طلبات من الخارج , تكون هذة الطلبات عبارة عن HTTP Request , فيتم توجيه هذا الطلب إلى جزءاً معيناً من الكود , ويتم تنفيذه , بداخل هذا الجزء من الكود يتم إعداد الرد على هذا الطلب, ومن ثم تسليمه إلى المتصفح فى هيئة HTTP Response.

ومن هذا فكل المتصفحات على إختلاف أنواعها تستطيع أن تتفاعل مع ASP.NET Web API , وكذلك كل اللغات التى تمتلك القدرة على التعامل مع HTTP, يمكنها أيضاً أن تتفاعل مع ASP.NET Web API مثال لغة C# /VB ولغة Java وغيرهم , ولا يقتصر الأمر على تطبيقات الويب , بل يمتد إلى تطبيقات سطح المكتب وكذلك تطبيقات الهواتف الذكية , وكافة الإجهزة الحديثة.

لماذا سأقوم بإستخدام ASP.NET Web API؟

من الفقرة السابقة , يتضح لنا أن ASP.NET Web API , يمكنها أن تصل إلى العديد من الأجهزة مما يوفر لها إنتشاراً دون قيود , ليتمكن الجميع على إختلاف لغاتهم وتطبيقاتهم من إستخدام الـ   Service الخاصة بك فى تطبيقاتهم , وهذا يعطى للخدمة التى تقدمها ميزة سعة الإنتشار دون قيود “.

ولكن ما الغرض الذى يجعل التطبيقات الأخرى على إختلاف أنواعها فى حاجة إلى ASP.NET Web API؟ وكأنك تسأل ماذا يجعل التطبيقات تحتاج إلى Service؟……. فقد تقدم شرحاً لمعنى كلمة Service وما الهدف من وجودها , أما ما الذى يجعل إستخدامنا لـ ASP.NET Web API بالتحديد دون غيرها ؟ ….. تأتى الإجابة على هذا السؤال فى التعريف بها من ناحية فنية , لنرى ماذا تقدم لنا Web API , فى النقطة التالية .

التعريف بـ  ASP.NET Web API من ناحية فنية

ظهرت Web APIمع ظهور MVC 4 , حيث تم بنائها إعتماداً على آلية عمل ASP.NET MVC , وعلى ألية عمل الـ Routing على وجه الخصوص, فتم الإعتماد على وجود Controller وبه مجموعة من Action Methods وعليه يتم توجيه الطلب إلى إحدى هذة الـ Methods , لتقوم بدورها بإعداد الرد على الطلب القادم وإرساله للطالب مرة آخرى.

وكما سبق وأشرنا, أنها تعتمد على HTTP, فهذا يعطيها ميزة على غيرها, فتستقبل الطلب مع تحديد نوع الطلب إن كان بإستخدام GETأو DELETEأو POST أو غيرهم , ومن ثم توجهه إلى الـ Action Method الخاص بها داخل الـ Controller الذى هو بدوره يمثل لنا الـ Web API .

وحيث أن الـ Web API قائمة ضمن حقبة ASP.NET فلاشك , أن لـASP.NET أثر كبير عليها , ومن هذا الأثر , نجد التالى :-

  • دعم Model Binding كما هو الحال فى   Web Forms و MVC .
  • دعم Model Validation كما هو الحال مع إستخدام Data Annotation .
  • دعم التفاعل مع HTTP من حيث الأخطاء (HTTP Exceptions ) وبها تستطيع أن تتحكم فى الأخطاء الناتجة عن الطلبات القادمة ومن ثم الرد على الطالب بخطأ HTTP يكون قادراً على فهمه .
  • دعم التفاعل أكثر مع HTTP من حيث القدرة على إنشاء وفهم كلاً من HTTP Request و HTTPResponse , مما يجعلك تتحكم فى كلاً من Headers و Body و Status Code وغيرهم .
  • دعم  Action Filters الموجودة فى MVC مما يمكنك من تنقية الطلبات القادمة والتحكم بها .
  • دعم Content Negotiation وهو ما يمكن به التحكم فى المخرجات لتكون بالنوع الذى نريد.
  • توفير وسيلة إتصال بنفسها من خلال ما يعرف بـ HttpClient , حيث أنه يساعد فى إتصال بقية التطبيقات بها داخل إطار .NET مع توفير الكثير من المزايا والمرونة .

كل هذا ويزيد سنتطرق إليه فى دروس قادمة مع المزيد من التفصيل إن شاء الله رب العالمين.

            للإشتراك فى  دورة ASP.NET Web API 2  من هنـــــــــــــــــــــــــــا

ASP.NET Web API in Code

إذا تحدثنا عن Web API فى الكود, فنجد أنها عبارة عن Class لها ثلاثة شروط :-

الشرط الأول :-أن تحمل إسماً ما, ولا يشترط إسما بعينه, ولكن يشترط أن يتم إلحاق كلمة Controller بهذا الإسم, مثال ProductController و CustomerController.

الشرط الثانى :- أن ترث من ApiController, حيث أنها بدورها ستعطيها صفات Web API.

الشرط الثالث :- أن تحتوى على مجموعة من الدوال, بحيث تتوافق هذة الدوال بالإسم أو بالصفه مع Http Methods مثال :- GET و POST و PUT و DELETE و  HEAD وغيرهم.

سترى بعد قليل مثالاً لـWeb APIبشكلها البسيط (فى الصفحة التالية ).

ASP.NET Web API in Project

كما ذكرنا أن Web API فى المشروع تمثل Class ,ولكن لابد, أن نقوم بإضافة بعض المكتبات حتى تتخذ هذة الـ Class صفة Web API , تقوم هذة المكتبات بضبط الإعدادت مثال الـ Routing وكذلك إعطاء آلية عمل الـ Web API وتعاملها مع HTTP.

هذة المكتبات يمكن أن تضاف تلقائياً عند إنشاء مشروع يحتوى على Web API أو يمكن كذلك أن تضاف بإستخدام Nuget (يوجد لـ Nuget درساً على مدونتى http://tinyurl.com/mlfgpo9 ), وهذة المكتبات كالتالى :-

الوصف

Assembly

يقدم مكتبات أكواد للتعامل مع Messages .

System.Net.Http

يقدم البنية التحتية لعملية الإستضافة

System.Web.Http

يقدم مكتبات أكواد لدعم Model Binding

System.Net.Http.Formatting

يقدم مكتبات عامة كما يظهر من إسمه .

System.Web.Http.Common

يقدم مكتبات أكواد للإستضافة داخل ASP.NET

System.Web.Http.WebHost

يقدم مكتبات أكواد للإستضافة داخل التطبيق الموجود به ASP.NET Web APIونستخدم ذلك لإستضافتها داخل Client Application .

System.Web.Http.SelfHost

يقدم DataControllerوبها نجد عمليات حفظ وإستعلام وتحديث وحذف للبيانات من خلال Entity Framework

System.Web.Http.Data

تدعم السابق فى التعامل مع البيانات .

System.Web.Http.Data.EntityFramework

أكواد عامة لدعم Data API (التعامل مع EF ).

System.Web.Http.Data.Helpers

مثال على Web API فى الكود

public class ValuesController : ApiController

{

// GET api/values

public IEnumerable<string> Get()

{

return new string[] { “value1″, “value2″ };

}

// GET api/values/5

public string Get(int id)

{

return“value”;

}

// POST api/values

public void Post([FromBody]string value)

{

}

// PUT api/values/5

public void Put(int id, [FromBody]string value)

{

}

// DELETE api/values/5

public void Delete(int id)

{

}

}

العلاقة بين Web API وبين Web Form , MVC

العلاقة بينهم تتمثل فى أنهم كلهم ضمن إطار ASP.NET , قد تختلف طريقة العمل فى أحدهما دون الآخر, ولكن الكل يتشارك مزايا ASP.NET , فعلى سبيل المثال لا الحصر , الكل يملك Model Binding , صحيح أن هذا الأمر ظهر مع ظهور MVC, إلا إن ذلك قد فتح الباب أمام إضافتها فى Web Forms والإستعانة بها عند ظهور Web API.

كيف أقوم بإستخدام ASP.NET Web API؟

فى البداية إستخدامها ليس قصراً على Web Forms أو MVC , فيمكن إستخدامها بمفردها, أو ضمن أحدهم , ولكن لابد أن نفرق , بين أن ننشأ Web APIوبين أن نستخدم Web API, فيمكننا أن نقوم بإنشاء Web API منفصلة فى تطبيق خاص بها , وممكن أن تكون مدمجة مع تطبيق آخر مثال Web Forms أو MVC أو حتى Client Application, أما الإستخدام فنقصد به استدعائها وتنفيذ أكواداها, فيمكن إستخدامها وتنفيذ أكوادها من الخارج من أى مكان لإنها بطبيعتها Serviceوأعدت لهذا الغرض, وذكرنا من قبل أنه, طالما أن هناك قابلية للعمل مع HTTPفإن هناك قابلية للعمل مع ASP.NET Web API.

يتيح Visual Studio إنشاء Web API والعمل معها, ومن ثم يمكننا نشرها على إستضافة خارجية أو داخليه على حسب الحاجة, وحينها يمكننا إستدعائها من أى تطبيق نشاء ولكن دعنا نوضح هذا الأمر قليلاً ومن ثم يأتى التفصيل فى الدروس القادمة مصحوباً بالتطبيق إن شاء الله .

أى لغة أو تقنية تستطيع أن ترسل طلبات للخادم بإستخدام HTTP فهى مؤهلة أن تتعامل مع Web API وتنفذ ما تريد منها من مهام , وإليك الحالات التالية التى لاشك أنك ستقابلها فى حياتك العملية :-

  • لدينا تطبيق سيعمل على الإنترنت بغض النظر عن كونه Web Forms أو MVC , فلا يهم النوع الإن , المهم لدينا هنا , أننا , نريد أن نقوم بتخزين نموذج قام المستخدم بملئه ,ونريد حفظ فى قاعدة البيانات , ولكن بدون حدوث Postback أى بدون إرسال كامل الصفحة إلى الخادم , فهنا تستطيع أن تنهى الأمر بإستخدام JQuery , وحيث Jquery لديها القدرة على التعامل مع HTTP من خلال الدوال الخاصة بـ Ajaxفتستطيع أن ترسل طلبات (Requests ) إلى Web API وتعطيها ما تريد أن تقوم بتخزينه, ومن هنا نستخلص أن , JQuery تستطيع التفاعل مع ASP.NET Web API .

  • حالة آخرى , لدينا تطبيق Client Application سواءً كان Windows Forms أو WPF Forms أو حتى Console Application , ونريد أن نتفاعل مع Web API موجودة على خادم بالخارج أو بالداخل ونقصد هنا بخارج الشبكة أو بداخلها , فكيف يستطيع الإتصال بها ؟ …….. وفرت لنا Microsoft ما يسمى HTTP Client وهى مكتبة أكواد(Library) تستطيع من خلالها التعامل بمرونة مع ASP.NET Web API من إرسال وإستقبال بيانات إليها. مع العلم بوجود مكتبات أكواد تستطيع التعامل بهما مع HTTP مثال HttpWebRequest و WebClient من قبل داخل .NET إلا أن HTTP Client تحمل المزيد من المرونة, غير أنها أعدت خصيصاً لخدمة Web API , بالإضافة إلى دعمها لإجراء طلبات من نوع Asynchronous ( أى بدون توقف البرنامج حتى يصل الرد).

  • حالة ثالثة آخرى , لدينا تطبيق Mobile Application , ونريد أن يتفاعل مع خدمة موجودة على خادم خارجى , فإن كان Windows Phone Application , فلدينا HttpClient , لإننا حينها نكون ضمن إطار .NET , وإن كان Android Application فيمكن أن ننظر ماذا تقدم لنا Java , وكذلك الأمر مع OS ومعها Objective C وغيرهم.

خلاصة الأمر, فى التطبيق العملى, أمامك طريقتان, إذا كنت داخل Web Application فلديك JavaScript أو أحد مكتباتها مثال, JQuery و مثال   AngularJS و emberJs وغيرهم .وإذا كنت فى Client App فلديك  HttpClient وما تقدمه لك فى كيفية إتصالك بـ Web API , وإن كنت فى Mobile Application فهناك إختياران, إن كنت فى بيئة .NET فيمكنك العمل مع HttpClient, وإن كنت فى بيئة غير . NET , فإنظر ماذا تقدم لك اللغة التى تستخدمها من طرق للتواصل مع HTTP.

تمرين فى كيفية بناء ASP.NET Web API

ظهرت Web API مع MVC4 ولذلك عندما نحتاج أن نعمل مع Web API فإننا نقوم بالعمل مع تطبيق MVC 4 , ولكن هذا عند العمل مع Visual Web Developer 2010 , فعند إنشاء مشروع جديد , تظهر لك النافذة التالية , ولاحظ الإختيارات التى قمنا بها :-

صورة

بعد الضغط على  Ok تظهر لنا النافذة التالية :- 

صورة

بعد الضغظ على OKنرى أنه قد قام بفتح التطبيق الجديد , ونرى فيه التالى :-

صورة

كما ترى من الصورة السابقة , أننا لدينا مشروع MVC , مضافاً إليه ValueController , تصفح بذلك بنفسك لترى الإضافات , فى مجلد Controllerوكذلك مجلد Referencesوآخيراً مجلد App_Startلترى فيه مجلد WebApiConfig .

بإستخدام Visual Studio Ultimate 2013

بعد إختيار New Project تظهر لنا النافذة التالية ولا حظ الإختيارات فيها :-

صورة

ومن ثم الضغط على Okلنرى النافذة التالية :- 

صورة

لاحظ أنه فى هذة الصورة , قد قام بتحديد MVCو Web APIتلقائياً فى الجزء الأسفل , عند تحديد Web APIفى الجزء الأعلى , وبعد الضغط على OK , يبدأ بفتح المشروع على الهيئة التى ترى أمامك :-

صورة

فى الدرس القادم إن شاء الله, سنقوم بالتفصيل أكثر وأكثر فى Web APIوسنتعرف على إنشاء Web APIمن الصفر ووكيفية ضبط إعدادتها وكيفية بنائها فى تطبيقات Web Formsو كذلك فى WPF Application ,وسنتعرف على أداة رائعة وهى Fiddlerونفصل فيها ونستخدمها فى الـ Debugging. والله المستعان .

            للإشتراك فى  دورة ASP.NET Web API 2  من هنـــــــــــــــــــــــــــا

ما هو الإختلاف بين دورة MVC 5 ودورة MVC 3 &4

السلام عليكم

قابلت سؤالاً من الإخوة المشتركين فى دورة ASP.NET MVC 3 & 4 , وهو ما هو الإختلاف بين الدورة الجديدة MVC 5 وبين الدورة السابقة MVC 3 &4 .

بدايةً جميع الدورات تشمل ملفات مكتوبة وملفات فيديو وملفات صوت وأكواد , وإليك الإختلاف :-

 

هذة الدورة هى تحسين لدورة  , ASP.NET MVC 3 & 4  ,  حيث ستجد أن  :-
الملفات المكتوبة
متشابهة فى الدورتين  بدايةً من الدرس الآول إلى الدرس الثامن , وتبدأ الملفات المكتوبة الجديدة من الدرس التاسع إلى النهاية , مع توسع فى الشرح , وكذلك ذكر نقاط جديدة , فيما يخص التالى على سبيل المثال :-

  • ASP.NET Identity
  • Front-End Development
  • Localization ,
  • Diagnostics & Error Handling – Elmah
  • Grids
  • Attribute- Routing
  • MsTest , NUnit , Moq
  • Deploying
  •  Cloud Computing  ,  Windows Azure

الدروس الفيديو
كلها جديدة بداية ً من الدرس الأول إلى النهاية إن شاء الله , مدة تسجيل الفيديو كبيرة , وتشمل نقاط كثيرة, وهناك تطبيق عملى أكثر من الدورة السابقة, لنقاط كثيرة جداً, تم ذكرها بشكل نظرة فى الدورة السابقة , ولكن هنا تم ذكرها بالتطبيق العملى مع الإستفاضة أكثر , و كذلك يتم إستخدام  Bootstrap على مدار جميع الدروس , بداية من الدرس الأول إلى النهاية إن شاء الله , وتطبيقه فى المشروع القائم خلال دروس الدورة , والآتى ذكره فى النقطة التالية.

المشروع
تحتوى الدورة على مشروع مدونة, تم ذكره بشكل مصغر فى الدورة السابقة, ولكن هنا فى هذة الدورة يوجد توسع أكثر, وتطبيق على مدار دروس الدورة بداية من الدرس الخامس
هذا المشروع يتم إنجازه أمامك بالفيديو

الملفات الصوتية
أكثر تلخيصاً, كل درس يحتوى على ملف صوتى لا يتجاوز الثلاث دقائق , على عكس الدورة السابقة, كانت الملفات الصوتية أكثر مدة , فكان التطويل فى مدة الملف الصوتى لا حاجة له , فمن أجل تحسين جودة الدورة , تم تقليص مدة الملف الصوتى , وجعله ملخصاً فقط, من دقيقة أو دقيقتين ويزيد , بحيث لا يتجاوز ثلاث دقائق .

 

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

لو محتار تبدأ فى دورة ASP.NET Web API ___________ ومش عارف تحدد , ممكن نساعدك .

لو محتار تبدأ فى دورة ASP.NET Web API  ___________ ومش عارف تحدد , ممكن نساعدك .

س: هل كل مطور ويب لازم يعرف إزاى يستخدم
ASP.NET Web API ؟
؟
؟
؟
ج: صحيح, لازم يعرف إزاى يستخدمها.

س: طيب هيا أصلاً بتعمل أيه ؟ وبستخدمها فى أيه ؟
؟
؟
؟
ج: مممم, طيب
ASP.NET Web API = Service

س: طيب هيا تفرق أيه بقى عن
Web Service , WCF Service ؟
؟
؟
؟
ج: تفرق إنها بسيطة, مش محتاجة إى إعدادات علشان تشتغل, وكمان بتضمن لك إنتشار واسع, لإنها معتمدة فى شغلها على
HTTP
فأى تطبيق من أى نوع بأى لغة يقدر يرسل ويستقبل
HTTP Request /HTTP Response
قادر ينادى عليها ويستفيد منها , فدا الإنتشار الواسع اللى نقصده .

كمان بتدعم ما يعرف بإسم “التفاوض على المحتوى”, طيب يعنى أيه يعنى ؟ ____________ يعنى تقدر ترسل عنوان زى ده :

http://www.servicesite.com/Products

ومرة تقوله محتاج منك
XML
وممكن مرة تانية تقوله محتاج منك
JSON

مش بس كده, لا دى مبنية على أسس
MVC
يعنى هتلاقى عندك
Controller
وهتلاقى
Model
طيب ودا معناه أيه ؟ ؟ ؟ __________ دا معناه, إنك هتلاقى حاجات كتير موجودة فى
MVC
زى
Routing
Model Validation
Action Filters
Authentication & Authorization
Model Bindings
Formatters
زى حاجات كتيييييييييييييييييير بنتكلم فيها فى دورة
ASP.NET Web API

س: طيب هل إستخدامها بيكون داخل
MVC
بس ؟
؟
؟
؟
ج: لا طبعاً, تقدر تستخدمها بشكل مستقل, وتقدر تستخدمها داخل
MVC
أو
Web Forms
كمان .
أو حتى داخل
Windows Application
!!!!!

س: يعنى ممكن أستخدمها داخل
Web Forms
من غير ما أعرف MVC ؟
؟
؟
؟
ج : أيوه طبعاً, ومفيش قلق, لإننا عملنا حسابنا فى ده وإحنا بنشرح دورة
ASP.NET Web API

إحنا على مدار 15 درس إتكلمنا كتيير عن
ASP.NET Web API
وعملنا مشروع كامل ___ بالتطبيق العلمى _____ بالفيديو ___ وحلينا مشاكل كتيييييييييير ______ هتستفيد منها , لإنها بتحاكى الواقع العملى , اللى المفروض تقابله فى شغلك وإنت بتكتب كود.

وكانت من أمتع وأفضل الدورات, وأكثرهم معلومات من الواقع العملى, وجرب بنفسك , إو إسأل حد إشترك فى الدورة دى .

وتقدر تشترك فيها من هنا : http://goo.gl/YnHeiz

تم فتح باب التدريس الخاص عبر الإنترنت

تم فتح باب التدريس الخاص عبر الإنترنت لموضوعات مستقلة خارج الدورات, حيث يمكنك الآن إختيار الموضوع الذى ترغب أن يتم شرحه لك, ومن ثم نقوم بتحديد موعد مناسب وعدد الساعات المناسبة لهذا الموضوع, فعلى سبيل المثال , قد ترغب فى أن يتم شرح التالى لك :-
- Unit Testing
- JQuery
- LINQ
-ASP.NET Identity
أو أى موضوع تقوم بتحديده وكان فى الإمكان شرحه فى عدد ساعات محدودة.

بالتوفيق للجميع

للحجز والإستعلام :-

ASP.NET MVC 5

السلام عليكم ورحمة الله

دورة عبر الإنترنت فى 5  ASP.Net MVC
العمل يتم على اصدارات 2013

(ملحوظة الدورة غير مجانية )

MVC Course

حتى تكون على دراية بأخر التحديثات والإصدارات , نقدم لك هذة الدورة  فى ASP.NET MVC 5 وهو آخر إصدار من ASP.NET MVC , وسنلقى الضوء على كل مستجداتها, من خلال شرح يأتيك فى ملفات مكتوبة , وعدد لا محدود من ملفات الفيديو ذات الدقة العالية فى جودة الصوت والصورة, حيث ستجد فيهم التطبيق العملى للدرس وكذلك تمارين وممارسات حسنة , والله المستعان, كذلك ستجد ملف mp3 قصير يقدم لك ملخص الدرس فى دقائق معدودة, وآخيراً ستجد مجلد الآكواد الذى قمنا بالعمل عليه فى الدرس .

عدد الدروس : 15 درساً
السعر :-   400  جنية  لمن  داخل  مصر , 250 ريال سعودى  أو  70 دولار  لمن خارج مصر .

تابعنا على صفحة الدورات على فيس بوك , وهتعرف معلومات كتير عن الدورات

https://www.facebook.com/AhmedMoosaCourses

مزيد من التفاصيل فى الجدول التالى :-

5 ASP.NET MVC

إسم الدورة

15درساً

عدد الدروس

ملفات مكتوبة وملفات صوتية وملفات مرئية ومجلد أكواد

مكونات الدرس الواحد

+300صفحة مكتوبة

عدد الصفحات المكتوبة

+15 ساعات فيديو

عدد ساعات الفيديو

+1ساعة صوت فقط

عدد ساعات المسموعة (Audio)

يوجد مع كل نقطة شرح مثال مصاحب لها

الأمثلة

http://goo.gl/y0Grgo

نموذج على الدروس

400جنية للمقيمين داخل مصر

250ريال لجميع الدول العربية

أو 70دولار

رسوم الدورة

داخل مصر : إيداع عن طريق مكتب البريد

خارج مصر : حوالة عن طريق أقرب بنك

خارج مصر : حوالة عن طريق أحد مكاتب ويسترن يونيون

طرق سداد رسوم الدورة

الفهرس :-

الدرس الأول :- MVC 5 Introduction

الدرس الثانى :- Controllers in Depths

الدرس الثالث :- Inside Views

الدرس الرابع :-Razor Engine

الدرس الخامس :- Models and Entity Framework

الدرس السادس :- HTML Helpers

الدرس السابع :- Model Binding

الدرس الثامن :- Modal Validation

الدرس التاسع :- ASP.NET Identity

الدرس العاشر :- Convention-Based Routing & Attribute-Based Routing

الدرس الحادى عشر :-Front-End Development

الدرس الثانى عشر:- Important Topics
Localization – Diagnostics & Handling Errors – Grids -  MVC Life cycle – ……

الدرس الثالث عشر :- Testing in MVC 5

الدرس الرابع عشر :- Cloud Computing  & Azure , Deployment

الدرس الخامس عشر :-  Project

الدرس السادس عشر :- How To

- Master – Details in MVC

ملحوظة هامة :- الدورات ليست ملفات مكتوبة وفيديو وصوت فقط ______ بل يصاحبهم دعم فنى طوال فترة دراستك للدورة, فيمكن أن تقوم بإرسال أسئلتك وإستفاراتك, بإستخدام أحد وسائل الإتصال المتاحة مثال الهاتف , البريد الإلكترونى , سكايب , وغيرهم, فالمجال مفتوح , فالهدف أن تجد حلاً لمشكلتك ________ فلن ينقطع الإتصال بيننا بمجرد حصولك على الدورة, بل نظل على إتصال دائم على حسب حاجتك.

للإشتراك فى الدورة :-

بالتوفيق للجميع

ماذا على مطور ASP.NET المبتدئ أن يفعل ؟

 BiggnerGuy

 مقدمة :-

هل تعرف أحد فى أى مجال لم يكن مبتدئاً يوماً ما؟ ………. لا أحد يولد عالماً, فإنما العلم بالتعلم, ولكن طرق العلم تختلف, والكثير من الناس قد وجد التشتت والإحباط له طريقا , والكثير من الأخطاء يقع, والكثير من الوقت والجهد يضيع, وذلك لغياب النصيحة والاستفادة من خبرات الآخرين, ولهذا كان حديثنا فى هذا الموضوع, والهدف منه, تقديم النصح, وعرض التجارب, ورسم طريق نأمل أن تجد فيه الإفادة,حيث ستجد فى هذا الموضوع, تعريف بطبيعة مهنة مطور ASP.NET , وماذا يجب عليه أن يعرف, وكيف يتعلم, وأخيراً, كيف يقوم بإنشاء موقع من الصفر حتى النشر ليراه القاصى والدانى, وسأميل للتلخيص, وكذلك سأسعى لإستخدام أبسط العبارات لتصل إلى مستوى المبتدئ, والله المستعان .

من هو المطور الذى نتحدث عنه ؟

مطور مواقع الإنترنت, هو كائن حى يجلس أمام شاشته, ليقوم بإخراج موقع إنترنت, ينحصر عمله بين Client – Server ذهاباً وإياباً, يفكر, يكتب كود, يختبر إنجازاته, يتعاطى المنبهات :).

DeveloperWithNoMoney

ما هى مهام مطور مواقع الإنترنت ؟

تتعدد مهامه فى أن يقوم بإنشاء موقع من الصفر, أو ربما تحديث موقع موجود من قبل, أو صيانة موقع , أو ترقية موقع من إصدار إلى إصدار أعلى منه, أو تحويل برنامج عادى إلى موقع إنترنت,أو ربما إنشاء خدمة (Service) يستطيع أن يستخدمها بقية مطورين المواقع الإخرى , فهذة هى مهامك التى تنتظرك ……………. فاستعد لها.

Ben10 cartoon network

ماذا يجب على مطور ASP.NET أن يعرف ؟

إذا أردت أن تبنى صفحة إنترنت, فأول ما تحتاج أن تعرفه هو HTML, وذلك لأن وظيفتها بناء (تصميم) صفحة إنترنت, فعلى سبيل المثال,مربع النص الذى تكتب فيه البريد الإلكترونى ,أو الصورة التى تراها أمامك, والجدول الذى ستراه بعد قليل , ما هم إلا عناصر HTML, وغير ذلك كثير من هذة العناصر التى تتكون منها صفحة الإنترنت, وإذا ما أردت أن تقوم بتنسيق هذة العناصر فعليك بإستخدام CSS, والتنسيق هنا, هو ضبط الألوان والمحاذاة و الحجم لكلاً من النصوص, والصور, الجداول, وغير ذلك من عناصرHTML, وإذا ما أردت أن تضف المزيد من التفاعل مع هذة العناصر, فعليك بإستخدام Javascript, ولكن دعنا نفكرقليلاً ………… هذة الصفحة تم إرسالها من الـ Server إلى الـ Client وتم عرضها فى المتصفح, فتبقى هذة الصفحة بهذا الشكل ثابتة, لن تتغير إلا إذا قامت بالإتصال مرة أخرى بالـ Server لتحديث نفسها ………. فهنا يبدأ العمل على الـ Server حيث تجد أن IIS يستقبل الطلب الذى أرسله المتصفح, ويقوم بتوجيهه إلى ASP.NET, هذة البيئة البرمجية لبناء تطبيقات إنترنت, حيث لابد لك من معرفة لغة برمجة تكتب بها كود داخل هذة البيئة, ولديك خياران, إما #C أو Vb (سأستعمل #C فى حديثى), فتستطيع من خلال هذة اللغة (#C) من كتابة كود يتفاعل مع هذة الصفحة ويقوم بتحديثها, هذا التحديث, قد يكون بتزويد هذة الصفحة ببعض البيانات, هذة البيانات قد تكون مخزنة فى مكان ما, والشائع أن الجميع يستخدمون مخزن بيانات, يسمى SQL Database أو قاعدة بيانات SQL, ولا داعى للقلق ……. فـ #C تمتلك ما يعرف بـ ADO.NET وهى مجموعة من الأكواد الجاهزة التى يمكنك من خلالها الإتصال بقاعدة البيانات وإرسال وإستقبال بيانات منها………. ولكن هناك مشكلة!…….. وهى أن SQL لا تفهم #C ولكنها تفهم Transact-SQL……… لهذا تقوم #C بإستخدام ADO.NET لإصدار أوامر إلى SQL, هذة الأوامر تكون عبارة عن جمل مكتوبة بـ Transact-SQL, هذة الجمل تكون عبارة عن إرسال بيانات إلى SQL أو العكس, إحضار بيانات من SQL إلى #C, حيث تقوم بدورها بتسليمها إلى الصفحة التى يتم تسليمها هى نفسها إلى المتصفح ليراه المستخدم أمامه, وقد تم تحديثها…………….. فهذا ما يجب عليك معرفته لتكون مطوراً لمواقع الإنترنت . ونلخص هذا الكلام فى الجدول التالى حتى لا يختلط عليك شئ :-

الهدف منها

مكان التنفيذ

النوع

الآداة

تصميم صفحة إنترنت

المتصفح/Client

لغة

HTML

تنسيق صفحة الإنترنت,من ضبط للألوان, والصور والمحاذاة.

المتصفح/Client

لغة

CSS

إضافة مزيد من التفاعل لصفحة الإنترنت

المتصفح/Client

لغة

Javascript

ملف قاعدة البيانات - وهو مستودع للبيانات

الخادم/Server

ملف

SQL Database

إستضافة وإدراة قواعد البيانات

الخادم/Server

software

SQL Server

مخاطبة قواعد البيانات

الخادم/Server

لغة

Transact-SQL

بيئة برمجية لبناء وتطوير مواقع الإنترنت

الخادم/Server

بيئة برمجية

ASP.NET

كتابة كود يتم تنفيذه على الـ server

الخادم/Server

لغة

C#

الإتصال بقواعد البيانات

الخادم/ Server

تقنية

ADO.NET

ما تم ذكره فى الجدول هو الأساسيات, وما زاد على ذلك فهو إضافات لتحسين العمل, فلربما تسمع عن LINQ و Entity Framework و Jquery وأشياء آخرى, فإعلم إنها إضافات, يمكنك تعلمها فيما بعد.

 كيف أتعلم هذة الأشياء ؟

هنا تكمن المشكلة…… بالفعل, المشكلة فى طريقة التعلم, فى البداية, الطريق صعب, ولكن مع الإرشادات من ذوى الخبرة تقل صعوبته, فإحرص على إستشارة ذوى الخبرة, والآن سأبين لك ما أراه مفيداً إن شاء الله, فى كيفية سلوك هذا الطريق :-

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

  • حدد مصدر جيد للتعلم:- ليس كل كتاب مفيد, فهناك من الكتب ما هو مضيعة وقت, قابلت أحدهم يوماً ما, وليس كل المقالات والدروس والدورات غنية وذات فائدة كبيرة , ولهذا عليك أن تسأل أولاً, ما هى المصادر الجيدة لتعلم كذا, وتستطيع أن تضع سؤالك هذا فى أماكن تجمع المبرمجين, أو ربما تتوجهة به لشخص تعرفه, ولا تنحصر المصادر فى شرح تقرأه أو تسمعه أو تراه, بل تمتد إلى أن ترى أكواد “, فإحرص على رؤية أكواد مشاريع الغير, وهناك مواقع بها الكثير من المشاريع Open Source , ولكن تصفح أكواد الغير فى هذة المشاريع خطوة متقدمة بعض الشئ, فلا تقدم عليها إلا بعد معرفتك بالإساسيات.

  • إحرص على التطبيق العملى :- لابد لك من أن تفكر فى مشروع ما, قد يكون خاصاً بك, أو بصديق , أو بأحد من أفراد العائلة, المهم, أن تقوم بتطبيق ما تعلمته فى هذا المشروع, ولا يهم إن كان موجوداً من قبل أم لا, أو إن كان صغيراً أو كبيراً أو متوسط الحجم, فالغرض منه التعلم والتطبيق العملى, ولا تُأخر هذة الخطوة .

 سأبد فى عمل مشروع …. ولكن هناك مشكلة ؟

لاشك أنك ستقابل بعض المشاكل بمجرد التفكير أو البدء فى إنشاء مشروع, وهنا سأوضح ما تيسر :-

  • مشكلة التصميم :- أغلب من رأيتهم من المبرمجين لا يحسن التصميم, وأنا منهم, لهذا, إشتكى الكثير منهم فى بداياته من أنه لا يستطيع إنشاء مشروع كامل له, لإنه لا يجيد التصميم, ولا يتوفر لديه تصميم مناسب للفكرة التى فى رأسه, فهل معنى ذلك إلا تقوم بالبدء فى المشروع ؟…… بالطبع لا , هناك دوماً حلول, فإليك الحلول التالية :-

    • شراء تصميم :- هناك العديد من المصممين الذين يبحثون عن من يقومون بتصميم موقع له, وليس هذا فحسب!……… هناك مواقع تقوم ببيع تصميمات رائعة بأسعار معقولة, يمكنك شراء واحداً منهم.

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

    • إستخدام Bootstrap:- فى البداية Bootstrap هى مجموعة تنسيقات Css وjavascript جاهزة , تقوم بتحسين شكل الصفحة, و يوجد الكثير مثل Bootstrap تستطيع الوصول إليهم من خلال البحث فى جوجل عن CSS Frameworks, فيمكنك إستخدام Bootstrap للحصول على تنسيقات رائعة للجداول والقوائم والخطوط والنصوص والأدوات الآخرى.

  • مشكلة الإستضافة :- قد تقوم بإنجاز موقع, وتحتاج إلى نشره, فتحتاج إلى إستضافة وربما تكون غير مستعد لدفع مصاريف الإستضافة, فماذا تفعل؟………. الحل فى إستضافة مجانية, حيث تستطيع أن تنشر موقعك عليها من دون أن تدفع شئ (ابحث فى جوجل asp.net free hosting).

  • مشكلات العمل داخل الموقع :- هناك نوعان من المشكلات ستقابلهما, أولهما, مشكلة المنطق,و كيفية إيجاد الحل, والمشكلة الثانية, مشكلة الكود, أما الآولى, فعليك بتعلم مهارات حل المشكلات, والثانية, بالمحاولة لمدة لاتزيد عن 30 دقيقة, وإن لم تجد حلاً, إطلب المساعدة, من صديق,أو من غيره, وأفضل صديق وجدته كان جوجل“, إنه حقاً يعرف كل شئ :D.

  • وأخيراً مشكلة التردد :- لا تترد وابدأ, لا تقول, سأنتظر حتى أكون محترفاً, فقط توقف وإنظر حولك لترى الكثير من التطبيقات الناجحة التى لم يكن أصحابها من المحترفين, إبدا, وهناك الكثير من الأماكن التى يمكنك ان تضع فيها سؤالك إن واجهت أمراً ليس لديك به علم, وستجد من يساعدك.

إنشاء موقع من الصفر إلى النشر

يوجد العديد من منهجيات إدارة المشروعات(إبحث فى جوجل عن Project Management ), ولكن لا يهم المنهجية التى تعمل بها مادمت مبتدئ, لإنك يوماً ما ستقوم بتحسين مهاراتك, فدعنا نتكلم فى العام دون التخصيص, فى البداية ما هو الموقع ؟ …………… هو مجموعة من الصفحات التى تراصت جنباً إلى جنب لتُكوّن موقع, يستطيع المستخدم التنقل من صفحة لآخرى عبر قائمة تضم أسماء هذة الصفحات وما بها من مهام, وهذة المهام , سيتم تحديدها فى مرحلة التحليل, بجمع المعلومات عن الفكرة التى تريد إنجازها, ومن ثم البدء فى الإنجاز ………….. ولكن هناك بعض المبادئ التى أريدك أن تتعرف عليها أولاً :-

  • إفهم الفكرة جيداً :- إن كان المشروع لغيرك, فلا تترك شيئاً للتخمين, عد وإسأله مرات ومرات, لتتأكد من أن ما تقوم بإنجازه هو مايريده العميل فعلاً , لإنه غالباً ما يخطئ فى التعبير عن ما يريد,فأحذر هذا…….. يمكنك مناقشة العميل والجلوس معه أكثر من مرة لتفادى المشكلات فيما بعد.

    CustomerandDeveloepr

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

CustomerandDreams

  • صمم قاعدة بيانات رائعة:- حُسن تصميم قاعدة البيانات من أكبر الأمور التى ستوفر لك المرونة فى العمل, والتصميم الجيد يأتى من معرفة جيدة بكافة جوانب المشروع, أى بالتحليل الجيد, ولتحسين مهاراتك قم بالتعرف على كلاً من (Normalization/De-normailzation).

  • أكتب أفضل كود :- إبحث عن أفضل الطرق فى كتابة الكود وتعلمها وطبقها فى مشروعك, لا تكن كصانع الكنافةأو كطباخ “Spaghetti”, لإنك أنت أول من سيجد المشقة مع هذا الكود, لذلك تعرف على مبادئ تصميم البرمجيات ومنها SOLID , كذلك إقرأ عن Design Patterns, وأسعى دوماً فى تحسين طرق كتابة الكود.

     spagett

البدء الفعلى فى المشروع

سأفترض فى حديثى الآن أن هناك عميل هو صاحب المشروع, وأنت المطور الذى سينجز هذا المشروع, ولا يوجد أحد غيرك, وذلك لإن كلامى هذا, إن تم توجيهه إلى مبرمج فى شركة برمجيات, سيختلف الحديث, لإن العمل سيتم توزيعه على أكثر من فرد, ولكن هنا أنت من ستقوم بكامل العمل, فما هى أول خطوة ستأخذها؟……… الجلوس مع العميل ومناقشته فكرة المشروع هى أول خطوة, وإن إستطعت ألا تجعل بينك وبينه وسيط فافعل, فلابد أن تعرف منه من هم الـ “Stakeholders”, أى من الآطراف المعنية بهذا البرنامج, ويجب أن تعرف منهم ماذا يريدون من هذا البرنامج أن ينجز لهم…… عندها كلاً سيقوم بإعطاءك متطلباته, وهناك من العملاء الجيدين, من يقوم بإعطاءك ملفاً نصياً مكتوباً به متطلباته وملاحظاته وهذا جيد, وإن لم يفعل, وكان المجال مسموحاً, فإطلب أنت منه ملفاً يوضح فيه متطلباته, ولاشك أنك ستناقشه فى هذا الملف, ولكن إن لم يكن المجال مسموحاً, فلا داعى لإن تطلب منه شئ لإنك لن تحصل عليه, وإكتفى بسماعه والجلوس معه وإكتب أنت ما تريد من ملاحظات, واستخدم أبسط العبارات معه, فقط قم بتدوين كل شئ.

تحليل المشروع :-

بعد أن تتضح الفكرة أمامك ………. ماذا ستفعل؟ ……. يُفترض الآن أن تقوم بتحليل المشروع لمعرفة المهام المطلوبة, وكتابتها على شكل وحدات (Units), وتُقسم هذة الوحدات إلى مهام, ومعرفة العلاقة بينهم.

فنقوم بتقسيم الواحدات على سبيل المثال التالى :-

  • Products

  • Product Categories

  • Product Images

  • Customers

  • Blog

    • Posts

    • Comments

وهكذا إلى أن تنتهى من سرد جميع الوحدات التى يتضمنها الموقع, وعلى قدر المعلومات التى قمت بتجميعها من العميل, يبنغى أن يكون التحليل وافى ولا يترك شئ, ومن هذا التحليل ستخرج قاعدة البيانات, وبها الجداول التى ينبغى أن تخدم المشروع, ولكن عليك أن تتبع المبادئ السابقة, وصمم قاعدة بيانات رائعة.

تصميم الواجهة

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

تصميم الكود

يمكنك الآن التفكير فى كيفية تصميم الكود, كيف سيكون؟ ……. خذ بعض الوقت فى تدوين كيفية سير العمل مع الكود, أى لابد أن تقوم بالتخطيط للكود, وهذا مهم جداً حفاظاً على الوقت.

بعد ذلك يمكنك الآن البدء بكتابة الكود, ويمكنك البدء بكتابة Data access (كود الإتصال بقاعدة البيانات), ومن ثم كتابة كود الـ Business Logic, وأخيراً, تبدأ بكتابة كود الـ Presentation, والبدء فى تركيب الكود على الواجهة (UI), ومن ثم تقوم بضبط الـCSS وما شابه, أى أنك تقوم بتركيب الـUI الذى رأه العميل ووافق عليه, ليخرج المشروع بشكله النهائى مبدئياً, لإننا لم نقم بعد بالإختبار.

الإختبار

إذا جاء وقت الحديث عن الإختبار, عليك التخطيط أولاً كيف ستقوم بالإختبار, وأى الحالات ستختبر, قم بتدوين المشاكل التى يمكن أن تتعرض لها كل مهمة داخل الصفحة, واذهب بعيداً بتفكيرك لتضع نفسك مكان المستخدم العادى الذى لا يعرف كيف يستخدم الموقع بشكل طبيعى, وكذلك ضع نفسك مكان مستخدم متطفل يريد أن يعبث بالموقع, ومن هذا كله, ستخرج بقائمة من الحالات (Test Cases ) التى يجب أن تختبرها.

جرت العادة أن تقوم بإستعراض الموقع فى المتصفح وتبدأ بالإختبار, ولكن بجانب ذلك يمكن إستخدام ما يعرف بـ Test Automation (أداوت لإختبار الكود بعيداً عن بيئة التشغيل), حيث توفر لك مرونة عالية عند إختبار الأكواد, ولكن للعمل معها يوجد بعض المتطلبات التى ستعرفها عند البدء فى تعلم ما هو الـ Test Automation , ولا غنى لك عن إختبار الموقع فى المتصفح, فكونك مبتدئ يمكنك الإختبار بالطريقة التى تجيدها.

التعاملات المادية

rich-guy-cartoon

بعد أن يفتح الله عليك من أبواب فضله, ويأتيك عميل لتتفق معه على مشروع, لاشك أنك ستواجه بعض الأمور المادية, حتى لا أطيل, فى البداية ينبغى أن تقوم بتقييم تكلفة المشروع(يمكنك البحث فى جوجل عن هذا لإن الموضوع يطول), لكن إحرص على أخذ نسبة ولتكن 25% بعد الإتفاق, ومن ثم 25% آخرى بعد الموافقة على التصميم (UI) , والـ50 % بعد التسليم, وإن كان المشروع كبير, يمكنك إستلام 25% دفعة ثالثة بعد فترة بعد عرض ما تم إنجازه على العميل, و25% الأخيره عند التسليم. تختلف الأساليب فى التعامل المادى, ولكن هذا التقسيم يضمن لك حقك, وإن كان لديك طريقة آخرى, فدعنا نعرفها وإتركها فى تعليق.

البحث فى جوجل

كل المطورون مهما كان محترفاُ وبل خبيراً, لابد له من أن يبحث, لا أحد قد جمع العلم كله, ولا أحد يعرف كل شئ, المختصر, أن الكل يبحث فى جوجل, ولكن هناك من يصل من أول محاولة, وهناك من يحاول ويحاول ولا يصل, وفى النهاية يجلس أيام مع مشكلة واحدة, ضع فى علمك, أنك لم تكن أول من يقابل مشكلة ولن تكون آخرهم, المعنى, أنه فى الغالب ستجد أن هناك من طرح سؤالاً فى نفس المشكلة التى أنت فيها, ولكن عليك أنت تصل إلى السؤال لتعرف الإجابة إن وجدت……. ما جعلنى أكتب هذة النقطة, هو أننى أريد أن ألفت إنتباهك إلى كيف تبحث ؟“……….تغيير صيغة البحث عامل مهم جداً فى إيجاد أفضل النتائج, وإختيار كلمات البحث أهم وأهم, فمثلاً جرب مثلاً : “Get Started with ………” أو “How to …..” أو “Using ….. to ….. ”, بدلاً من كتابة ما تريده بشكل مباشر, فمثلاً , لا تكتب asp.net وإنتهى , ولكن جرب “get started with asp.net ”, وإذا ما وقف أمامك مصطلح لا تعرف ما هو , فعليك بـ Wikipedia.

 الختام

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

الدورات المتاحة :-

دورة  ASP.NET Web Forms  تتكون من 20 درساً, التفاصيل هنـــــــــا

دورة ASP.NET MVC  تتكون من 15 درساً , التفاصيل هنــــــــــا

دورة ASP.NET Web API  تتكون من 15 درساً, التفاصيل هنــــــــــــا

كن واثقاً من كلامك وأنت تتحدث عن ASP.NET

تمهيد :-

كثير من الناس يتسائلون عن الفرق بين Web Forms و MVC ويوجد كثير من الخلط بينهم , وهل هم بدائل ؟, وماذا عن Web API ؟ وما هى SPA ؟ وماذا يعنى SignalR ؟ , هل كل هذا يعد ASP.NET ؟ , والكثير أيضاً يسأل , يقول أنا مبتدأ, بماذا أبدأ ؟, وغيره يقول, لا حاجة فى web Forms سأبدأ بتعلم MVC هذا هو الحديث, وغيره يقول, هل شرط أن أتعلم Web API بعد تعلم MVC ؟ , أم ماذا ؟ , الكثييير من الأسئلة التى سأحاول أن أضع إجابات مختصرة لها , والله المستعان .

Image

مقدمة :-

فى بداية الآمر, كنا لا نجد إلا ما يُعرف بـ ASP.NET فقط, حيث كنا نقوم بتعريفها, على أنها بيئة برمجية لتطوير تطبيقات الإنترنت والتى قمت بتقديم سلسلة دروس من ستة أجزاء كمقدمة تعريفية لها …وتوالت الإضافات على ASP.NET منذ نشأتها إلى يومنا هذا , حتى إزداد الأمر تعقيداً !, ففى ما يلى سأسرد لك هذة الإضافات والله المستعان.

 Web Forms

ظهرت العيوب على السطح , وإشتكى مجتمع المطورين من أمور عدة تفتقدها ASP.NET , بل وكان يحتقرها مطورى البيئات الأخرى مثال PHP وغيرها, والأسباب معروفة لدى الكل, وكانت الأسباب كالتالى:-

  • ASP.NET ليست إلا HTML Generator .

  • ASP.NET ليست إلا Drag-Drop , وليس لكم تحكم فى الـ HTML .

    • هذا الكلام يمكن أن يرد عليه بإنك تستطيع التحكم من خلال مرحلة الـ Rendering , وأيضاً من خلال الـ Source View, ولكن ليس بالقدر الكافى .

  • ASP.NET تمر بالعديد من الأحداث التى قد لا أحتاجها فى الكثير من الآوقات.

  • ASP.NET من الصعب إجراء Automation Testing عليها, إلا بمحاكاة HttpContext.

  • ASP.NET لا تتبع مبادئ ولا أنماط التصميم المتبعة فى تصميم البرمجيات, والتى نعرفها بإسم Design Patterns و Software Design Principles, ولعل التركيز الأكبر كان على مبدأ الفصل المعروف بإسم SOC.

  • ASP.NET , لا يوجد بها مرونة فى إمكانية إعادة الإستخدام و كذلك صيانة الكود .

كان الحديث كله يدور حول ASP.NET والتى باتت تعرف الأن بإسم Web Forms, أو ASP.NET Classic (ولاحظ إنى لا أقول ASP Classic بل أقول ASP.NET Classic ), وكان الهدف من وجود Web Forms بهذا الشكل, هو محاكاة تطبيقات الـ Event-Driven مثال Windows Form Application , فظلت المشكلة تنغص على مايكروسوفت فرحتها بإبداعاتها داخل Web Forms.

دورة فى ASP.NET Web Forms تتكون من 20 درساً  تجد التفاصيل هنـــــــــا

 MVC Framework

قرأت مرة أن Scott Guthrie حيث كان مدير قسم التطويرفى فريق ASP.NET حينها على ما أذكر , أنه كان مسافراً, وفى رحلته على متن الطائرة, فكر بتطبيق MVC Pattern داخل ASP.NET , حيث كان الجميع يتحدثون حينها عن هذا النمط (MVC) , وما يقدمه من مزايا فى العمل, رغم أن هذا النمط موجود من عشرات السنين, إلا أن الحاجة إليه باتت ملحة بالنسبة لمايكروسوفت , وذلك لإعجاب الكثيرين به عندما تم تطبيقه فى كثيرمن بيئات التطوير,فما كان من مايكروسوفت إلا أن تسعى لإيجاد حلاً لعلاج ذلك, فجائت له الفكرة, أن يقوم بتطبيق هذا النمط بإستخدام HttpHandler وHttpModule, ولكن كيف والنمط ينص على أن لكل صفحة مدير وحالة بيانات تنتقل منها وإليها, والصفحة هنا هى View والمدير هنا هو Controller وحالة البيانات هنا هى Model ,وهنا ستكون كل صفحة مصحوبة بـ Controller, ذلك الوصف قريباً مما يحدث فى aspx Page و Code-behind إلا أن الإثنان هنا لا يَعرفان بعضهما البعض, بمعنى إنهم غير مرتبطين ببعض كما فى aspx, أى أن الـ Controller لا يعرف شئ عن الـ View والعكس صحيح.

فظهرت الحاجة إلى وجود نمط آخر, يضمن وجود Controller لأكثر من View, فكانت فكرة تطبيق نمط آخر وهو Front Controller, وهو الذى ينص على وجود Controller واحد يخدم أكثر من View.

فأصبح لدينا نمطين أولهم MVC Pattern مبنى على الثانى وهو Front Controller Pattern .

 فكان نتاج هذا الأمر هو MVC Framework , والذى جاء ليعمل جنباً إلى جنب Web Forms, وليس بديل, وليس تحديث, وأعلنت مايكروسوفت من اللحظة الأولى لإنطلاقه, أنها ستدعم Web Forms ولن تتخلى عنه, ولكن قد قدمت لك طريقين لبناء تطبيقات إنترنت أحدهما Web Forms وثانيهما MVC , فأختر إيهما تسلك.

 وقد سألنى الكثيرون هذا السؤال لدى مشروع , فهل أستخدم Web Forms أم MVC ؟ “ ….. وتكون إجابتى دوماً بــ على حسب ” …فلابد أن تستجمع تركيزك لترد على هذة الإجابة بسؤال آخر , وهو على حسب ماذا؟ ” ……….. الحقيقة على حسب الكثيييير , ولكن سأسرد لك بعضها:-

  • إذا كنت تريد أن تتحكم أكثر فى HTML فعليك بـ MVC.

  • إذا كنت تريد أن تحصل على Re-usability أعلى , فعليك بـ MVC.

  • إذا كنت تريد أن تحصل على Maintainability أعلى , فعليك بـ MVC.

  • إذا كنت تريد أن تحصل على Testability أعلى , فعليك بـ MVC.

  • إذا كنت تريد Productivity أعلى مع إهمال ما سبق فعليك بـ Web Forms.

 ربما يقول قائل ماذا عن تطبيقMVP Pattern داخل Web Forms ؟ ”. مممم , حقاً تطبيق هذا النمط قد يجعل Web Forms تكسب كل هذة النقاط لمصلحتها…. الحقيقة, ربما, ولكن ما التكلفة ؟…………. التكلفة ستكون على حساب الـ Productivity وما سيأخذ ذلك التطبيق من وقت, حيث أن تطبيق MVP داخل Web Forms يتطلب عناءاً مع الوقت فى كتابة الكود, وقد قدمت مقالتين من قبل فى شرح هذا النمط وكذلك فى شرح Framework يسمى WebFormsMVP وكيفية إستخدامه.

 تلقيت سؤالاً أيضاً يقول أنا أريد أن أبدأ فى ASP.NET , هل أبدأ معWeb Forms أم MVC “ ……. التجربة أثبتت أنه لا فرق…………. إشترك فى دورة MVC معى يوماً مطوراً قادماً من PHP, وأخبرنى أنه إستطاع أن يقوم بإنشاء موقع كامل بعد الدرس الرابع, فلا شك أنه مجتهد,والشاهد من هذا, أنه لم يجد معاناةً فى التعرف على MVC مباشرةً دون العلم بـ Web Forms, فهذا جيد, فكل ما تريد فقط معرفته هو لغة البرمجة التى تستخدمها C#/VB, والبقية هو إجتهادك والله الموفق. هذة هى التجربة, أما عن رأيى , فلا أرى أى فرق, غير أن الفهم العميق لألية عمل MVC فيما وراء المشهد يتطلب معرفتك بـ ASP.NET Runtime وكيف تسير الآمور.

دورة فى ASP.NET MVC تتكون من 15 درساً , تجد التفاصيل هنــــــــــا

 ظهربعد ذلك ما يعرف بـ ASP.NET Web API .

Web API Framework

هى Framework لبناء Service مستندة فى عملها على ASP.NET وتستطيع الوصول إليها من خلال HTTP. بدايتها ظهرت مع WCF تحت إسم WCF Http Service, فبعيداً عن تعقيدات إعدادات (Configuration) WCF , كانت الحاجة لإستقلالها ومجيئها تحت إسم ASP.NET Web API, والهدف مازال واحداً وهو بناء Service قائمة على HTTP.

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

  • إذا أردت أن تقوم بتصميم خدمة (Service ) تعمل كمزود للبيانات فقط أو ما يسمى Data Point فعليك بـ Web API.

  • إذا أردت أن تقوم بتصميم خدمة تصل إلى كافة الأجهزة التى تملك إمكانية إرسال HTTP Request وإستقبال HTTP Response فعليك بـ Web API , ولاحظ أن ذلك يشمل , كافة الأجهزة الحديثة بإختلاف أنواعها من هواتف نقالة إلى أجهزة ذكية إلى مواقع إنترنت إلى تطبيقات سطح المكتب وغير ذلك .

  • إذا أردت مرونة فى العمل, ولا وجود لإى متطلبات غير HTTP فعليك بـ Web API.

  • إذا أردت أن تكون لديك خدمة تستطيع التفاوض حول المحتوى المطلوب, والمقصود هنا نوع البيانات على إختلاف أنواعها فعليك بـ Web API.

  • إذا أردت أن تتحكم بمرونة كافية فى طلبات العملاء (Http Requests ) والردود على هذة الطلبات (Http Response) فعليك بـ Web API , مما يجعلك وكأنك تتعامل مباشرةً مع HTTP.

 وقد سألنى أيضاً آخرون هل لابد من معرفتى بـ MVC حتى أتعرف على Web API ؟ ” …………. وإجابتى تكون…………. “الأفضل ذلك ولكن ليس شرطاً” ……. وذلك لمسته حقاً حينما كنت أقوم بشرح دورة فى Web API…….. فالإضافة التى ستجنيها من معرفتك أولاً بـ MVC , هى أنك, ستجد مرونة فى تقبل Web API بوقت أسرع, وذلك لسابق معرفتك ببعض الأمور المتشابة بين Web API و MVC .

 والسؤال الثانى … هل يمكن أن أقوم بإستخدام Web API مع Web Forms “ …….. إجابتى تكون نعم” …. وخذ فى إعتبارك أيضاً, أنه يمكنك أن تستخدمها فى Client -Applications.

 ساهمت Web API أيضاً فى جعل العمل مع Single Page Application أكثر مرونة .

دورة فى ASP.NET Web API  تتكون من 15 درساً , تجد التفاصيل هنــــــــــــا

SPA Concept

يأتى الإسم SPA إختصاراً لـ Single Page Application وهو مفهوم , وليسLibrary , وليس Framework, ويمكن أن نسميه إسماً آخر وهو JavaScript Application , أى تطبيق قائم على JavaScript, وكلمة SPA تخالف الواقع الذى يتم فيه تطبيق SPA, فالمعنى الحرفى هو, تطبيق الصفحة الواحدة, وهذا ليس واقعياً, فلاشك أن تقول, ربما تكون SPA لتطبيق يتكون من صفحة واحدة, أى تطبيق متناهى الصغر, الحقيقة لا!………. ولهذا نقول أن المعنى منافى للمراد, فالمعنى يقول تطبيق مكون من صفحة واحدة , والمراد, أن المستخدم سيتعامل مع التطبيق بصفحاته المتعددة وكأنه داخل صفحة واحدة لم يخرج منها, والمعنى لا يخفى عليك كمطور لتطبيقات إنترنت, فى أننا سنقوم بإخفاء Refresh, والعمل على إنشاء Data point على الخادم (Data point على سبيل المثال Web API ) ومن ثم نقوم بإستخدام أحد الـ Libraries أو Frameworks الخاصة بـ JavaScript للعمل داخل التطبيق , فعلى سبيل المثال , يمكن العمل مع AngularJs أو DurandalJs أو EmberJs أو غيرهم, أو ربما تفضل العمل مع مجموعة من المكتبات المنفصلة مثال KnockoutJs و SammyJs و RequireJs وغيرهم. والهدف من كل هذا, هو معالجة تفاعلات المستخدم من عرض البيانات التى يطلبها, أوإرسال للبيانات التى يُدخلها, وكذلك التنقل بين الصفحات, وغير ذلك من العمليات التى تتم فى التطبيق العادى, مع الأخذ فى الإعتبار, أن الذهاب إلى الخادم لن يكون إلا فى الضرورة,وأن كافة الأعمال فى التطبيق ستتم على الـ Client, يتطلب هذا إتباع طرق مختلفة لتحقيق هذا الهدف من تخزين للبيانات فى Cache وكذلك إستخدام Rendering Templates والطرق كثيرة وكل مطور يذهب فى الطريق الذى يعرف ويفضل, فالمجال مفتوح.

SignalR Library

فى البداية هى مكتبة أكواد جاهزة أحضرتها لك مايكروسوفت ,لتقوم بالعمل مع ما يعرف Real-time , والمعنى مختصراً, أن هذة المكتبة, تعمل على إرسال البيانات من جهاز الـخادم إلى جهاز العميل تلقائياً حينما تتوفر هذة البيانات, بإضافة آخرى…….. يمكن أن تقول, أنه بدلاً من أن يقوم المستخدم بطلب البيانات, سيقوم الخادم بإرسالها إليه متى كانت متاحة, وهذا الأمر, تجده ضرورياً فى التطبيقات التى تحتاج تحديث فورى للبيانات وكذلك دورى, وفورى معناه, أى فى نفس الوقت التى تتاح فيه, ودورى معناه , أى بشكل مستمر, أفضل مثال على إستخدامها, تطبيق المحادثة (Chat ) والذى لابد له أن يرسل لك البيانات التى أدخلها من يقوم بالمحادثة فى الطرف الآخر, كذلك تطبيقات الأسهم, والتى تحتاج إلى تحديث بأسعار الأسهم وإرتفاعها وإنخفاضها, فهذان مثالان يوضحان كيف أن SignalR تقوم بإرسال البيانات إلى جهاز العميل تلقائياً متى كانت متاحة دون أن يطلبها المستخدم.

Web Pages Framework

هى Framework لبناء صفحات إنترنت بسيطة, وجاءت لتوفر بيئة مبسطة لبناء هذة الصفحات بدون تعقيدات Web Forms أو غيرها, وتم إيجاد IDE بإسم WebMatrix وهو البرنامج الذى من خلاله تستطيع أن تقوم بإنشاء مثل هذة الصفحات, حيث تتكون الصفحة الواحدة من HTML ثابت ومحتوى يتغير من خلال الكود فى نفس الصفحة, مستخدماً فى ذلك Razor Syntax, وهذا لمن يريد أن ينشأ صفحات إنترنت بسيطة بدون سابق معرفة بـ ASP.NET , ولا ولن يحتاج أن يعرف عنها شئ .

الختام

فى النهاية , ليس هناك بديل لشئ, إنما الكل يعمل لديك, وكلها أدواتك, وهناك أوقات سيتم فرض العمل مع أحدهم عليك رغماً عنك, فلا غنى لك عن تعلم الجميع, على سبيل المثال, قد يأتيك تطبيقاً تم إنشائه بـ Web Forms منذ زمن, وتم طلب تعديلات أو ربما تحديثات, فهل يعقل, أن تخبر العميل, أو حتى المدير, أن نقوم بترقية التطبيق وإنشائه من الصفر ولكن بـ MVC, هذا غير وارد فى الأصل, وكذلك العكس, وربما كنت فى Web Forms فعلاً, ولديك إضافة تتطلب تحديث فورى للبيانات, فعندها SignalR تفى بالغرض, أو ربما تحتاج إلى Data Point داخل Web Forms, أو قد تحتاج إلى Service تقبل الإتصال من خلال HTTP لتدعم العديد من انواع الـ Clients, فحينها Web API هو الحل الأمثل.

خلاصة الأمر لا غنى لك بواحدة عن الآخرى, أنت فقط توظف معرفتك حيث تحتاجها.

 سأحاول أن أوضح كيف تعمل كلاً منهم , متعمقين فى ما يحدث وراء المشهد وذلك فى مقالات منفصلة فى أقرب وقت إن شاء الله.

 هذا وبالله التوفيق .

المراجعة :-
أتوجه بالشكر لـكلاً من “محمد مليجى” والذى تستطيع أن تصل إليه من خلال @meligy على تويتر,  و”محمد الشريف” والذى تستطيع أن تصل إليه من خلال @bashmohandes على تويتر أيضاً , على إعطائنا من وقتهم الثمين للمراجعة بعد النشر .

نموذج لسكربت كنت أشرحه فى درس فيديو

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

Image

إذا أعجبتك النقاط التى نتاولها , فيمكنك الإشتراك الآن فى الدورة …...الإشتراك من هنـــــــــا  ……. بالتوفيق للجميع

تم إنشاء صفحة على فيس بوك للدورات

السلام عليكم

يمكنك متابعة الصفحة الخاصة بالدورات لمتابعة العروض والدورات الجديدة , كذلك ستجد مقتطفات من الدروس , بل وستجد أيضاً نماذج لدروس من الدورات , إضافة إلى  أمثلة لفيديوهات شرح من هذة الدورات , والكثير من المقالات والأخبار التقنية فيما يخص Web Development , يمكنك الإنضمام إلينا عبر الرابط التالى :-
 https://www.facebook.com/AhmedMoosaCourses

بالتوفيق للجميع .

عن تحديثات أعلنت عنها مايكروسوفت 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

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

شكراً للثقة الغالية :)

شكراً للثقة الغالية  :)
إحساس رائع حينما أجد أن أحد المشتركين فى الدورات السابقة يتصل مرة ثانية وثالثة للحصول على الدورات المتاحة , وحينما قمت الإسبوع الماضى بالإعلان عن قرب إصدار دورة جديدة , فوجدت عدداً من مشتركين الدورات السابقة قد قاموا بالإتصال للحجز والإشتراك فى الدورة الجديدة وهى بعنوان ASP.NET Web API .

فأتقدم بالشكر للجميع لهذة الثقة وأسأل الله أن أقدم لكم علماً نافعاً ومادةً علمية غنية تمدكم بالتجربة والخبرة الكافية للتميز فى هذا العالم المليئ بالجديد كل يوم .
والسلام عليكم ورحمة الله وبركاته .

أحمد موسى

قريباً :- دورة فى ASP.NET Web API

السلام عليكم ورحمة الله وبركاته

دورة عبر الإنترنت فى ASP.NET Web API

ASP.NET Web API Course
ASP.NET Web API Course
قريباً إن شاء الله رب العالمين , دورة فى ASP.NET Web API وتحتوى على أمثلة لكلاً من JQuery و KnockoutJs و AngularJs. والغوص داخل HTTP ومعرفة أدوات تستخدم فى عمليات Debugging مثال Fiddler و Developer Tools , وكذلك العمل مع OData ومعرفة ما هى وأستخدامها ., نسأل الله التيسير والتوفيق للجميع.

الدرس الرابع من دورة ASP.Net Web Forms كاملاً

إسم الدورة :- ASP.NET Web Forms
عنوان الدرس :- أدوات التحقق من المدخلات , Validation Controls
رقم الدرس :- 4/20
المحتويات :-

 ما هى أدوات التحقق من صحة المدخلات ؟
كيف تقوم بإستخدام هذة الآدوات ؟
كيف تعمل هذة الآدوات من ناحية فنية ؟
Client Validation
Server Validation
ما هى الخصائص المشتركة بين هذة الآدوات ؟
Validation Controls
RequiredFieldValidator
RangValidator
CompareValidator
RegularExpressionValidator
CustomValidator

للتحميل من هنـــــــــــــــــــــــــــا

للإشتراك فى الدورة  من هنــــــــــــــــــــــا

نظرة سريعة على Serialization

شباب ::- كلمة Serialization عندنا فى البرمجة , معناها , تحويل حالة Object من صيغة إلى صيغة آخرى , أو بمعنى آخر , من Format إلى Format آخر , كمثال :- تحويل CLR Object وليكن Class Car إلى XML أو إلى JSON أو ممكن يكون إلى Text أو النوع إللى إنت تحدده .

أما كلمة Deserialization فدى معناها العكس , وبيها نقدر نحول XML أو JSON أو أى نوع , إلى CLR Object , يعنى ممكن نقوم بنحول XML إلى Class Car .

والسؤال هنا , هو إحنا ليه بنحتاج نعمل Serialization أوDeserialization ؟
والإجابة :- إننا بنعمل الكلام ده , لما بنحتاج ننقل Object من مكان لمكان عبر الشبكة , أو عبر التطبيقات , من تطبيق لآخر, أو ممكن فى نفس التطبيق الواحد , لما بنحتاج ننقل Object من الـ Server إلى Client والعكس.

مايكروسوفت قدمت للموضوع أكثر من Library بتعمل الكلام ده وهتلاقى مثال على كده :- XmlSerializer ودى بستخدمها مع XML , وكمان هتلاقى JavaScriptSerializer ودى بنستخدمها مع JavaScript (JSON) وكمان هتلاقى BinaryFormatter ودى مع Binary , وكمان هتلاقى SoapFormatter ودى مع Soap , وأخيراً هتلاقى DataContractJsonSerializer ودى برضه بنستخدمها مع JSON .

وهتلاقى أيضاً كـ Open-Source مكتبة كاملة للعمل مع JSON وإسمها JSON.net .

بالتوفيق للجميع .

نظرة سريعة على Single Page Application (SPA)

شباب مستقبل الويب متجه إلى SPA إختصار Single Page Application ,
والصفحة الرسمية له :- http://www.asp.net/single-page-application

والمعنى أن التطبيق مكون من صفحة واحدة , والفكرة هنا , أننا لدينا صفحة واحدة بالفعل هى التى سيتم عرضها للمستخدم , ولكن المحتوى سيتغير بدون حدوث Postback. وتغيير المحتوى سيتم بإستخدام Javascript ولكن ليس بطريقة مباشرة , بل سيتم إستخدام أحد مكتباتها أو framework تم إنشائه بإستخدامها , ومثال على ذلك Knockoutjs و Emberjs و BackboneJS و AngularJs وغيرهم كثير وإليك رابط يوضح بعضاً منها .

www.asp.net/single-page-application/overview/introduction/other-libraries

وفى المقابل , سنجد أن JavaScript ستحتاج أن تتفاعل مع الـ Server لهذا سنجد , أنه يمكننا العمل مع MVC Controller و كذلك Web-API أو HttpHandler أو WebService أوWCF Service
أو ربما SignleR. كما أوضحنا فى الفيديو السابق والذى شرحنا فيه “JQuery Ajax Functions” .

وجاء دورها هنا , لإن الإتصال بالـــServer سيكون عن طريق هذة الـFunctions “غالباً “, ولكن ليس فى الكل , لإنك ستجد على سبيل المثال , فى AngularJS يوجد $resource و $http , واللتان يمكنك الإتصال بالخادم من خلالهما , ولكن فى كل الإحوال ستجد Post,Get , Put,Delete وبقية HttpVerbs .

كذلك بعضاً منها يقدم لك نظام Routing مثال , AngularJs و EmberJs لتستعين بها من التنقل من صفحة إلى صفحة ولكن على جهاز الـ Client أى بدون حدوث Postback, ولكن لن يغنيك هذا عن الـ Routing الموجود فى ASP.NET على الــ Server .

هذا ما استحضرته الآن , وأسأل الله سبحانه وتعالى للجميع التوفيق

سلسلة المقدمة التعريفية بـ ASP.NET , ما وراء المشهد

الحمد لله رب العالمين , تم كتابة ستة أجزاء فى سلسلة مقدمة تعريفية بـ ASP.NET لعرض ما وراء المشهد , وأسأل الله أن يكون فيها الفائدة ,  ولزم التنوية هنا أن هذة المقدمة ليست للمبتدئين , فهى تركز على الفهم العميق لـ ASP.NET وما تتكون منه هذة البيئة لتطوير مواقع الإنترنت , وليست مقدمة لشرح بيئة العمل أو كيفية إستخدام الأدوات أو إنشاء مشروع توضيحى , وإليك الأجزاء , وأسأل الله لكم التوفيق ,

الجزء الآول :- تعرف على ASP.Net , الجزء الأول : ما وراء المشهد

الجزء الثانى :- تعرف على ASP.Net,الجزء الثانى:ASP.Net Patterns

الجزء الثالث :-HttpContext,HttpApplication

الجزء الرابع :- تعرف على بـ ASP.Net ,الجزء الرابع: Global.asax,Modules,Handlers

الجزء الخامس :-تعرف على ASP.Net , الجزء الخامس:ASP.Net Compilation

الجزء السادس :-مقدمة تعريفية بـ ASP.Net , الجزء السادس :- Page Class

بالتوفيق إن شاء الله .

مقدمة تعريفية بـ ASP.Net , الجزء السادس :- Page Class

مازلنا فى المقدمة التعريفية لـ ASP.NET  ……………………………..ولمزيد من التنسيقات تم وضع الدرس فى ملف PDF

يمكنك قرائته وتحميله من هنــــــــــــــــــــــــــــــــــــــــــــــا

بالتوفيق للجميع إن شاء الله .