• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

Ahmed Moosa

الخبراء المعتمدون
  • عدد المشاركات

    222
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

127 جيد جدا

1 متابع

عن Ahmed Moosa

  • الرتبة
    خبير ASP.NET

طرق الإتصال

معلومات الملف الشخصي

  • الجنس ذكر
  • الدولة : مصر "جمع الله شملها"
  • اهتمامات Web Development

أحدث الزائرين لملفلك الشخصي

10,390 زياره للملف الشخصي
  1.   للإشتراك : من هنــــــــــــــــــــــــــــــــــــــــــــــــــــا   تفاصيل كل دورة فى الرابط الخاص بها , والدفع للمقيمين داخل المملكة عن طريق الراجحى :-   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     يمكنكم زيارة صفحتنا على الفيس بوك للمزيد من التفاصيل ولرؤية آراء المشتركين السابقين فى الدورات وتفاعلاتهم على الصفحة   https://www.facebook.com/AhmedMoosaCourses     وفق الله الجميع لكل خير .
  2. تم إضافة دورة جديدة فى   Knockout Js With ASP.NET   على الرابط التالى  :- http://goo.gl/o2Sho6
  3.   أكثر من 47 ساعة فيديو ــــــ وأكثر من 1000 صفحة مكتوبة ـــــ كن محترفاً فى ASP.NET ,  للإشتراك ومعرفة التفاصيل من هنا :- http://goo.gl/8qXu9R وفق الله الجميع  
  4. تم إضافة دورة جديدة فى   MVC 5  على الرابط التالى  :- http://goo.gl/2hw7Y1
  5. ماذا على مطور ASP.NET المبتدئ أن يفعل ؟        مقدمة :- هل تعرف أحد فى أى مجال لم يكن مبتدئاً يوماً ما؟ …....... لا أحد يولد عالماً, فإنما العلم بالتعلم, ولكن طرق العلم تختلف, والكثير من الناس قد وجد التشتت والإحباط له طريقا , والكثير من الأخطاء يقع, والكثير من الوقت والجهد يضيع, وذلك لغياب النصيحة والاستفادة من خبرات الآخرين, ولهذا كان حديثنا فى هذا الموضوع, والهدف منه, تقديم النصح, وعرض التجارب, ورسم طريق نأمل أن تجد فيه الإفادة,حيث ستجد فى هذا الموضوع, تعريف بطبيعة مهنة مطور ASP.NET , وماذا يجب عليه أن يعرف, وكيف يتعلم, وأخيراً, كيف يقوم بإنشاء موقع من الصفر حتى النشر ليراه القاصى والدانى, وسأميل للتلخيص, وكذلك سأسعى لإستخدام أبسط العبارات لتصل إلى مستوى المبتدئ, والله المستعان . من هو المطور الذى نتحدث عنه ؟ مطور مواقع الإنترنت, هو كائن حى يجلس أمام شاشته, ليقوم بإخراج موقع إنترنت, ينحصر عمله بين Client - Server ذهاباً وإياباً, يفكر, يكتب كود, يختبر إنجازاته, يتعاطى المنبهات :). ما هى مهام مطور مواقع الإنترنت ؟ تتعدد مهامه فى أن يقوم بإنشاء موقع من الصفر, أو ربما تحديث موقع موجود من قبل, أو صيانة موقع , أو ترقية موقع من إصدار إلى إصدار أعلى منه, أو تحويل برنامج عادى إلى موقع إنترنت,أو ربما إنشاء خدمة (Service) يستطيع أن يستخدمها بقية مطورين المواقع الإخرى , فهذة هى مهامك التى تنتظرك …............. فاستعد لها. ماذا يجب على مطور 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, حيث تقوم بدورها بتسليمها إلى الصفحة التى يتم تسليمها هى نفسها إلى المتصفح ليراه المستخدم أمامه, وقد تم تحديثها................. فهذا ما يجب عليك معرفته لتكون مطوراً لمواقع الإنترنت . ونلخص هذا الكلام فى الجدول التالى لا يختلط عليك شئ :-     ما تم ذكره فى الجدول هو الأساسيات, وما زاد على ذلك فهو إضافات لتحسين العمل, فلربما تسمع عن LINQ و Entity Framework و Jquery وأشياء آخرى, فإعلم إنها إضافات, يمكنك تعلمها فيما بعد.  كيف أتعلم هذة الأشياء ؟ هنا تكمن المشكلة...... بالفعل, المشكلة فى طريقة التعلم, فى البداية, الطريق صعب, ولكن مع الإرشادات من ذوى الخبرة تقل صعوبته, فإحرص على إستشارة ذوى الخبرة, والآن سأبين لك ما أراه مفيداً إن شاء الله, فى كيفية سلوك هذا الطريق :- حدد ما تريد أن تتعلمه:- بمعنى حدد البداية التى ستبدأ بها, وأنصحك بالترتيب الذى أعددته لك فى الجدول السابق, ومن ضمن التحديد, ألا تتعمق فى البداية فى واحدة دون الآخرى, ولكن تعرف على الإساسيات بشكل مبدئى, وسيأتى الإحتراف مع الممارسة. حدد مصدر جيد للتعلم:- ليس كل كتاب مفيد, فهناك من الكتب ما هو مضيعة وقت, قابلت أحدهم يوماً ما, وليس كل المقالات والدروس والدورات غنية وذات فائدة كبيرة , ولهذا عليك أن تسأل أولاً, ما هى المصادر الجيدة لتعلم كذا, وتستطيع أن تضع سؤالك هذا فى أماكن تجمع المبرمجين, أو ربما تتوجهة به لشخص تعرفه, ولا تنحصر المصادر فى شرح تقرأه أو تسمعه أو تراه, بل تمتد إلى أن ترى " أكواد ", فإحرص على رؤية أكواد مشاريع الغير, وهناك مواقع بها الكثير من المشاريع Open Source , ولكن تصفح أكواد الغير فى هذة المشاريع خطوة متقدمة بعض الشئ, فلا تقدم عليها إلا بعد معرفتك بالإساسيات. إحرص على التطبيق العملى :- لابد لك من أن تفكر فى مشروع ما, قد يكون خاصاً بك, أو بصديق , أو بأحد من أفراد العائلة, المهم, أن تقوم بتطبيق ما تعلمته فى هذا المشروع, ولا يهم إن كان موجوداً من قبل أم لا, أو إن كان صغيراً أو كبيراً أو متوسط الحجم, فالغرض منه التعلم والتطبيق العملى, ولا تُأخر هذة الخطوة .  سأبد فى عمل مشروع …. ولكن هناك مشكلة ؟ لاشك أنك ستقابل بعض المشاكل بمجرد التفكير أو البدء فى إنشاء مشروع, وهنا سأوضح ما تيسر :- مشكلة التصميم :- أغلب من رأيتهم من المبرمجين لا يحسن التصميم, وأنا منهم, لهذا, إشتكى الكثير منهم فى بداياته من أنه لا يستطيع إنشاء مشروع كامل له, لإنه لا يجيد التصميم, ولا يتوفر لديه تصميم مناسب للفكرة التى فى رأسه, فهل معنى ذلك إلا تقوم بالبدء فى المشروع ؟...... بالطبع لا , هناك دوماً حلول, فإليك الحلول التالية :- شراء تصميم :- هناك العديد من المصممين الذين يبحثون عن من يقومون بتصميم موقع له, وليس هذا فحسب!......... هناك مواقع تقوم ببيع تصميمات رائعة بأسعار معقولة, يمكنك شراء واحداً منهم. إستخدام تصميم مجانى :- يوجد العديد من المواقع التى تقدم تصميمات مجانية, تستطيع أن تتصفح هذة التصميمات وتختار ما يناسب مشروعك ومن ثم إستخدامه. إستخدام Bootstrap:- فى البداية Bootstrap هى مجموعة تنسيقات Css وjavascript جاهزة , تقوم بتحسين شكل الصفحة, و يوجد الكثير مثل Bootstrap تستطيع الوصول إليهم من خلال البحث فى جوجل عن CSS Frameworks, فيمكنك إستخدام Bootstrap للحصول على تنسيقات رائعة للجداول والقوائم والخطوط والنصوص والأدوات الآخرى. مشكلة الإستضافة :- قد تقوم بإنجاز موقع, وتحتاج إلى نشره, فتحتاج إلى إستضافة وربما تكون غير مستعد لدفع مصاريف الإستضافة, فماذا تفعل؟.......... الحل فى إستضافة مجانية, حيث تستطيع أن تنشر موقعك عليها من دون أن تدفع شئ (ابحث فى جوجل asp.net free hosting). مشكلات العمل داخل الموقع :- هناك نوعان من المشكلات ستقابلهما, أولهما, مشكلة المنطق,و كيفية إيجاد الحل, والمشكلة الثانية, مشكلة الكود, أما الآولى, فعليك بتعلم مهارات حل المشكلات, والثانية, بالمحاولة لمدة لاتزيد عن 30 دقيقة, وإن لم تجد حلاً, إطلب المساعدة, من صديق,أو من غيره, وأفضل صديق وجدته كان "جوجل", إنه حقاً يعرف كل شئ :D. وأخيراً مشكلة التردد :- لا تترد وابدأ, لا تقول, سأنتظر حتى أكون محترفاً, فقط توقف وإنظر حولك لترى الكثير من التطبيقات الناجحة التى لم يكن أصحابها من المحترفين, إبدا, وهناك الكثير من الأماكن التى يمكنك ان تضع فيها سؤالك إن واجهت أمراً ليس لديك به علم, وستجد من يساعدك. إنشاء موقع من الصفر إلى النشر يوجد العديد من منهجيات إدارة المشروعات(إبحث فى جوجل عن Project Management ), ولكن لا يهم المنهجية التى تعمل بها مادمت مبتدئ, لإنك يوماً ما ستقوم بتحسين مهاراتك, فدعنا نتكلم فى العام دون التخصيص, فى البداية ما هو الموقع ؟ …............ هو مجموعة من الصفحات التى تراصت جنباً إلى جنب لتُكوّن موقع, يستطيع المستخدم التنقل من صفحة لآخرى عبر قائمة تضم أسماء هذة الصفحات وما بها من مهام, وهذة المهام , سيتم تحديدها فى مرحلة التحليل, بجمع المعلومات عن الفكرة التى تريد إنجازها, ومن ثم البدء فى الإنجاز …........... ولكن هناك بعض المبادئ التى أريدك أن تتعرف عليها أولاً :- إفهم الفكرة جيداً :- إن كان المشروع لغيرك, فلا تترك شيئاً للتخمين, عد وإسأله مرات ومرات, لتأكد من أن ما تقوم بإنجازه هو مايريده العميل فعلاً , لإنه غالباً ما يخطئ فى التعبير عن ما يريد,فأحذر هذا........ يمكنك مناقشة العميل والجلوس معه أكثر من مرة لتفادى المشكلات فيما بعد. أنجز المطلوب فقط :- لا تفرط فى التحليل, وتضع المزيد من الأفكار, ولا تفتح الباب أمام العميل ليصلك كل يوم مكالمة من سيادته يخبرك بأمر رآه فى منامه ويريد تطبيقه فى المشروع, أغلق عليه هذا الباب, وإن إستطعت أن توقع إتفاقاً بينكم على هذة المتطلبات ,فإفعل....... لإن الزيادة من جانبك أو من جانبه تعنى أن هناك جهداً ضائعاً ووقتاً مستنفذاً وأموالاً تمت خسارتها..... فأغلق الباب. صمم قاعدة بيانات رائعة:- حُسن تصميم قاعدة البيانات من أكبر الأمور التى ستوفر لك المرونة فى العمل, والتصميم الجيد يأتى من معرفة جيدة بكافة جوانب المشروع, أى بالتحليل الجيد, ولتحسين مهاراتك قم بالتعرف على كلاً من (Normalization/De-normailzation). أكتب أفضل كود :- إبحث عن أفضل الطرق فى كتابة الكود وتعلمها وطبقها فى مشروعك, لا تكن كصانع "الكنافة" أو كطباخ "Spaghetti”, لإنك أنت أول من سيجد المشقة مع هذا الكود, لذلك تعرف على مبادئ تصميم البرمجيات ومنها SOLID , كذلك إقرأ عن Design Patterns, وأسعى دوماً فى تحسين طرق كتابة الكود.   البدء الفعلى فى المشروع سأفترض فى حديثى الآن أن هناك عميل هو صاحب المشروع, وأنت المطور الذى سينجز هذا المشروع, ولا يوجد أحد غيرك, وذلك لإن كلامى هذا, إن تم توجيهه إلى مبرمج فى شركة برمجيات, سيختلف الحديث, لإن العمل سيتم توزيعه على أكثر من فرد, ولكن هنا أنت من ستقوم بكامل العمل, فما هى أول خطوة ستأخذها؟......... الجلوس مع العميل ومناقشته فكرة المشروع هى أول خطوة, وإن إستطعت ألا تجعل بينك وبينه وسيط فافعل, فلابد أن تعرف منه من هم الـ "Stakeholders”, أى من الآطراف المعنية بهذا البرنامج, ويجب أن تعرف منهم ماذا يريدون من هذا البرنامج أن ينجز لهم...... عندها كلاً سيقوم بإعطاءك متطلباته, وهناك من العملاء الجيدين, من يقوم بإعطاءك ملفاً نصياً مكتوباً به متطلباته وملاحظاته وهذا جيد, وإن لم يفعل, وكان المجال مسموحاً, فإطلب أنت منه ملفاً يوضح فيه متطلباته, ولاشك أنك ستناقشه فى هذا الملف, ولكن إن لم يكن المجال مسموحاً, فلا داعى لإن تطلب منه شئ لإنك لن تحصل عليه, وإكتفى بسماعه والجلوس معه وإكتب أنت ما تريد من ملاحظات, واستخدم أبسط العبارات معه, فقط قم بتدوين كل شئ. تحليل المشروع :- بعد أن تتضح الفكرة أمامك …....... ماذا ستفعل؟ ….... يُفترض الآن أن تقوم بتحليل المشروع لمعرفة المهام المطلوبة, وكتابتها على شكل وحدات (Units), وتُقسم هذة الوحدات إلى مهام, ومعرفة العلاقة بينهم, فنقوم بتقسيم الواحدات على سبيل المثال التالى :- Products Product Categories Product Images Customers Blog Posts Comments وهكذا إلى أن تنتهى من سرد جميع الوحدات التى يتضمنها الموقع, وعلى قدر المعلومات التى قمت بتجميعها من العميل, يبنغى أن يكون التحليل وافى ولا يترك شئ, ومن هذا التحليل ستخرج قاعدة البيانات, وبها الجداول التى ينبغى أن تخدم المشروع, ولكن عليك أن تتبع المبادئ السابقة, وصمم قاعدة بيانات رائعة. تصميم الواجهة ينبغى أن يكون تصميم الـ UI قد بدأ, بإستخدام التحليل الموجود, والصفحات المطلوبة, والمهام داخل كل صفحة, لإن التصميم ينبغى أن يراعى المهام وكيفية عرضها داخل الصفحة, ومن ثم يتم عرض هذا التصميم على العميل, وأخذ الموافقة عليه, قد يطلب منك تعديلات, فلا مانع, ولكن ضع له حداً, حينما تأخذ منه موافقة, حتى لا يعود يوماً بعد يوم يطلب التغيير, ضع أمامه فترة سماح للتغيير. تصميم الكود يمكنك الآن التفكير فى كيفية تصميم الكود, كيف سيكون؟ ....... خذ بعض الوقت فى تدوين كيفية سير العمل مع الكود, أى لابد أن تقوم بالتخطيط للكود, وهذا مهم جداً حفاظاً على الوقت. بعد ذلك يمكنك الآن البدء بكتابة الكود, ويمكنك البدء بكتابة Data access (كود الإتصال بقاعدة البيانات), ومن ثم كتابة كود الـ Business Logic, وأخيراً, تبدأ بكتابة كود الـ Presentation, والبدء فى تركيب الكود على الواجهة (UI), ومن ثم تقوم بضبط الـCSS وما شابه, أى أنك تقوم بتركيب الـUI الذى رأه العميل ووافق عليه, ليخرج المشروع بشكله النهائى مبدئياً, لإننا لم نقم بعد بالإختبار. الإختبار إذا جاء وقت الحديث عن الإختبار, عليك التخطيط أولاً كيف ستقوم بالإختبار, وأى الحالات ستختبر, قم بتدوين المشاكل التى يمكن أن تتعرض لها كل مهمة داخل الصفحة, واذهب بعيداً بتفكيرك لتضع نفسك مكان المستخدم العادى الذى لا يعرف كيف يستخدم الموقع بشكل طبيعى, وكذلك ضع نفسك مكان مستخدم متطفل يريد أن يعبث بالموقع, ومن هذا كله, ستخرج بقائمة من الحالات (Test Cases ) التى يجب أن تختبرها. جرت العادة أن تقوم بإستعراض الموقع فى المتصفح وتبدأ بالإختبار, ولكن بجانب ذلك يمكن إستخدام ما يعرف بـ Automation Testing (أداوت لإختبار الكود بعيداً عن بيئة التشغيل), حيث توفر لك مرونة عالية عند إختبار الأكواد, ولكن للعمل معها يوجد بعض المتطلبات التى ستعرفها عند البدء فى تعلم ما هو الـ Automation Testing, ولا غنى لك عن إختبار الموقع فى المتصفح, فكونك مبتدئ يمكنك الإختبار بالطريقة التى تجيدها. التعاملات المادية بعد أن يفتح الله عليك من أبواب فضله, ويأتيك عميل لتتفق معه على مشروع, لاشك أنك ستواجه بعض الأمور المادية, حتى لا أطيل, فى البداية ينبغى أن تقوم بتقييم تكلفة المشروع(يمكنك البحث فى جوجل عن هذا لإن الموضوع يطول), لكن إحرص على أخذ نسبة ولتكن 25% بعد الإتفاق, ومن ثم 25% آخرى بعد الموافقة على التصميم (UI) , والـ50 % بعد التسليم, وإن كان المشروع كبير, يمكنك إستلام 25% دفعة ثالثة بعد فترة بعد عرض ما تم إنجازه على العميل, و25% الأخيره عند التسليم. تختلف الأساليب فى التعامل المادى, ولكن هذا التقسيم يضمن لك حقك, وإن كان لديك طريقة آخرى, فدعنا نعرفها وإتركها تعليق. البحث فى جوجل كل المطورون مهما كان محترفاُ وبل خبيراً, لابد له من أن يبحث, لا أحد قد جمع العلم كله, ولا أحد يعرف كل شئ, المختصر, أن الكل يبحث فى جوجل, ولكن هناك من يصل من أول محاولة, وهناك من يحاول ويحاول ولا يصل, وفى النهاية يجلس أيام مع مشكلة واحدة, ضع فى علمك, أنك لم تكن أول من يقابل مشكلة ولن تكون آخرهم, المعنى, أنه فى الغالب ستجد أن هناك من طرح سؤالاً فى نفس المشكلة التى أنت فيها, ولكن عليك أنت تصل إلى السؤال لتعرف الإجابة إن وجدت....... ما جعلنى أكتب هذة النقطة, هو أننى أريد أن ألفت إنتباهك إلى "كيف تبحث ؟"..........تغيير صيغة البحث عامل مهم جداً فى إيجاد أفضل النتائج, وإختيار كلمات البحث أهم وأهم, فمثلاً جرب مثلاً : "Get Started with …......” أو "How to …..” أو "Using ….. to ….. ”, بدلاً من كتابة ما تريده بشكل مباشر, فمثلاً , لا تكتب asp.net وإنتهى , ولكن جرب "get started with asp.net ”, وإذا ما وقف أمامك مصطلح لا تعرف ما هو , فعليك بـ Wikipedia.  الختام الكتابة فى مثل هذا الموضوع, لم يكن أمراً هيناً, حيث أننى أدعى أننى أقدم للمبتدئ طريقاً يسلكه لتحقيق التقدم, وأرجو أن يكون موفقاً, بالفعل كانت هناك أمور كثيرة متشعبة وتعمدت ألا أدخل فيها,وسأترك هذا الموضوع مفتوح للجميع للإضافة, وهنا فى الختام, أتوجه إلى أحد شخصين أحدهما مبتدئ والآخر متقدم, فأقول للمبتدئ:- يمكنك طلب توضيح أو ربما شرح لأمر ما فيما يخص سياق الموضوع كمبتدئ. وأقول للمتقدم, يمكنك مشاركتنا فى تقديم بعض النصح بطرح نقطة, أو توضيح أمراً ما لم يأتى فى المقال, أو ربما آتى غير مكتمل, أو به خطأً ما, فدعنا نتعلم منك وأترك لنا تعليقك, ووفق الله الجميع لما فيه الخير.       لمزيد من التعليقات المفيدة على هذة المقالة , يمكنك الإطلاع على مصدر المقالة  فى الرابط التالى :-  http://goo.gl/dSH5q5
  6. تابع صفحة الدورات على Facebook , على الرابط التالى :- https://www.facebook.com/AhmedMoosaCourses شارك , إن شاء الله تستفيد
  7. سبحان الحى الذى لا يموت , إنا لله وإنا إليه راجعون............ غفر الله له ورحمه, وأدخله الجنة بسلام.
  8. كن واثقاً من كلامك وأنت تتحدث عن ASP.NET   تمهيد :- كثير من الناس يتسائلون عن الفرق بين Web Forms و MVC ويوجد كثير من الخلط بينهم , وهل هم بدائل ؟, وماذا عن Web API ؟ وما هى SPA ؟ وماذا يعنى SignalR ؟ , هل كل هذا يعد ASP.NET ؟ , والكثير أيضاً يسأل , يقول أنا مبتدأ, بماذا أبدأ ؟, وغيره يقول, لا حاجة فى web Forms سأبدأ بتعلم MVC هذا هو الحديث, وغيره يقول, هل شرط أن أتعلم Web API بعد تعلم MVC ؟ , أم ماذا ؟ , الكثييير من الأسئلة التى سأحاول أن أضع إجابات مختصرة لها , والله المستعان .   مقدمة :- فى بداية الآمر, كنا لا نجد إلا ما يُعرف بـ 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.    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 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 أكثر مرونة .   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 على تويتر أيضاً , على إعطائنا من وقتهم الثمين للمراجعة بعد النشر. الكاتب أحمد موسى  وتستطيع أن تتعرف عليه من هنا
  9. 9عن تحديثات أعلنت عنها مايكروسوفت 9/12/2013

      جميل , إذاً , أتقن Web API , وأنصحك بمعرفة Java script frameworks للتبسيط من عملك , مثال knockoutjs أو AngularJs أو DurandalJs أو غيرهم , فكلهم رائعون , نعم هناك إختلافات ولكن حسب الحاجة ستحدد من تستخدم , بالتوفيق
  10. عن تحديثات أعلنت عنها مايكروسوفت 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 . دعم تحليل ومعالجة 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 وفى الختام نسأل الله التوفيق للجميع .  
  11. السلام عليكم ورحمة الله   دورات مدفوعة  بالعربية فى ASP.NET  بالفيديو والتطبيق العملى :-  ASP.NET Web Form Course :- http://goo.gl/xMBFg7ASP.NET MVC 3 & 4 Course :- http://goo.gl/h4uFp5ASP.NET MVC 5 Course :-  goo.gl/2hw7Y1ASP.NET Web API 2 Course:-  http://goo.gl/YnHeiz ِKnockoutJs with ASP.NET Course  : http://goo.gl/o2Sho6    يمكنك الدخول على رابط الدورة التى تريد لترى تفاصيل دقيقة عنها مثال :- عدد الدروس وعدد الساعات والفهرس ومعلومات كثييييييييييييييرة أخرى  ,ستساعدك فى أخذ قرار بالإشتراك معنا    بالتوفيق للجميع .
  12. محتار وابحث عن خطه دراسيه

    السلام عليكم ,  دورة ASP.NET  بالعربية , عشرون درساً , ملفات مقروءة ومسموعة وكذلك مرئية , نناقش فيها ASP.NET من جوانب كثيرة , يمكنك تحميل المنهج ورؤية العرض من هنـــــــــــــــــــــــــــــــا بالتوفيق إن شاء الله .
  13. View >> يقصد بها صفحة (html)   أما Action  يقصد بها Method , فالآول سيعود بصفحة إسمها Page2 والثانى سيتم توجيه إلى Method إسمها Page2  . بالتوفيق .
  14. للمزيد من التسجيلات المصورة , يمكنك زيارة الرابط التالى :- هنــــــــــــــــــــــــــــــا