أرشيف التصنيف: ASP.Net

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

تعرف على ASP.NET Core

مقدمة :-

فى هذا المقال, نقوم بالتعرض لعدة نقاط نقوم من خلالها بالتعرف أكثر ASP.NET Core, وتوضيح بعض الإشكالات حولها مثال :-

  • إصدار جديد أم طريقة جديدة ؟

  • هل حان الوقت للإنتقال إلى ASP.NET Core ؟

  • .NET Core أم Full .NET Framework ؟

  • ماذا أستفيد من ASP.NET Core ؟

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

استمر في القراءة تعرف على ASP.NET Core

للمتواجدين داخل المملكة , الدفع عن طريق بنك الراجحى

بشرى للمتواجدين داخل المملكة العربية السعودية , يمكنكم الآن الدفع عن طريق بنك الراجحى داخل المملكة. وإليكم الدورات المتاحة :- 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

وهناك تخفيض لمن يريد الإشتراك فى جميع الدورات , أو على الأقل ثلاث دورات , وفق الله الجميع .

أيهما أستخدم KnockoutJs أم AngularJs ؟

مقدمة

ورد هذا السؤال كثيراً, وكان علىَّ أن أقدم له إجابة, وبالفعل كنت أفعل ذلك, ولكن أحببت أن أضع الإجابة هنا للجميع, قد تكون الإجابة هنا مختصرة بعض الشئ, وقد تكون أكثر تركيزاً على Knockout, ولكن أرجو أن تكون مفيدة لمن لديه هذا السؤال. فى البداية قبل أن نشرع بالإجابة عن هذا السؤال, دعونا أولاً نقدم تعريفاً لكل منهم.

استمر في القراءة أيهما أستخدم KnockoutJs أم AngularJs ؟

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

ASP.Net

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

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

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

View original post

الملف المكتوب من الدرس الآول من دورة 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 .

استمر في القراءة الملف المكتوب من الدرس الآول من دورة 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 دقيقة, وإن لم تجد حلاً, إطلب المساعدة, من صديق,أو من غيره, وأفضل صديق وجدته كان جوجل“, إنه حقاً يعرف كل شئ 😀.

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

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

يوجد العديد من منهجيات إدارة المشروعات(إبحث فى جوجل عن 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

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

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