ماهي ASP.NET

تُعتبّر الـ (ASP.Net ) لغّة برمجة مبدئيّة من تصميم شركة مايكروسوفت من أجل تطوير البرامج، أو هي آخر عمليّة تطوير إصدارات التكنولوجيا من مايكروسوفت في عمليّة برمجة الصفحات للخادم النشط (Active Server Pages ) (ASP)، وتقنيّة بلغات (Visual Studio.NET) ، تقوم على بناء التطبيقات في الإنترنت سواء مواقع ثابتة أو ديناميكيّة ويمكن تفصيلها كما يلي:

ماهي المواقع الثابتة (static website)

وهي عبارة عن مواقع عاديّة على الإنترنت تكون محتويّة على صوّر ونصوص أو بشكل أبسط هي مواقع الإنترنت التي تم كتابتها على بـ (HTML) بحيث تكون كلّ صفحة مفصولّة عن باقى الصفحات ولا يوجد أيّ قواعد للبيانات. مواقع الديناميكيّة (Dynamic website): وهي عبارّة عن مواقع تسمح بتغيير أو حذف أو إضافة أي صوّر أو معلومات من الصفحات بكلّ سهولّة من خلال مسؤول المواقع بدون العودّة الى مصمم المواقع، حيث يتمّ إظهار وإدخال البيانات والمعلومات المتواجدّة بصفحاته بواسطة قواعد بيانات (databases)، والتي تسمح بالتحديث والإضافه بشكل مستمرّ للصفحات ولذلك تمّ تسميتها بـ” المواقع الدينامكيّة”.

الفرق بين ASP و ASP.net الـ (ASP)

يكون الكود والتصميم بها بالإضافة إلى (Scripts) مختلطاً مع بعضه البعض بنفس الصفحة. أمّا الـ (ASP.net) يكون الكود والتصميم بها منفصلان وذلك بواسطة الـ ( Code Behind ). مميزات (ASP.net) تتميّز بالسرعة بالمقارنة مع غيرها؛ وذلك لأنّها تقوم بالترجمة وليس التفسير. الأمن حيث يوجد بها آليات تعمل على تخفيف الاختراق للمواقع التي تمّت برمجتها من خلالها. مكتبة أكواد كبيرة وضخمة وهي مكتبة دوت نت. كثرّة الأدوات الجاهزة. البيئة المتطورّة المتكاملّة وهي الفيجوال ستوديو. تعدد وتكامل اللغات، أي يمكننا البرمجّة بالكثير من اللغات ومن أهمها: لغّة (Visual Basic .Net). لغّة (C#.Net). لغّة (J#.Net). لغّة (Iron Python).

أنواع قواعد البيانات المستخدمة مع ASP.NET

يمكن إستخدام جميع قواعد البيانات ومنها: قاعدّة بيانات Mysql. قاعدّة بيانات MS SQL SERVER : MSDE و, 2000, 2005, و2008. قاعدّة MS Access. قاعدّة Oracle. XML كقاعدة بيانات بسيطة. إطار الدوت نت Dot Net Framework هو عبارّة عن إطار برمجي تم تصميمه من شركة مايكروسوفت ويقوم بربط المعلومات و الأجهزة والمستخدمين بالإضافة إلى التطبيقات بواسطة (web services) وذلك من خلال ترجمة هذه الأكواد الى لغّة الآله بحيث تعمل على أي جهاز، ووجود مجموعة فئات تساعد المطوّر لإنشاء التطبيقات، ويحتوى على مكوّنين هما: Common Language Runtime واختصارها (CLR). مكتبة فئات الـ Dot Net Class Library.

ماذا يجب على مطور 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

لاضافة مؤثرات سحرية و مذهلة الى تطبيق الويب و وظائف رائعة

المتصفح/Client

        لغة       Jquery / AJAX

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

الخادم/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 ), ولكن لا يهم المنهجية التى تعمل بها مادمت مبتدئ, لإنك يوماً ما ستقوم بتحسين مهاراتك, فدعنا نتكلم فى العام دون التخصيص, فى البداية ما هو الموقع ؟ …………… هو مجموعة من الصفحات التى تراصت جنباً إلى جنب لتُكوّن موقع, يستطيع المستخدم التنقل من صفحة لآخرى عبر قائمة تضم أسماء هذة الصفحات وما بها من مهام, وهذة المهام , سيتم تحديدها فى مرحلة التحليل, بجمع المعلومات عن الفكرة التى تريد إنجازها, ومن ثم البدء فى الإنجاز ………….. ولكن هناك بعض المبادئ التى أريدك أن تتعرف عليها أولاً :-

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

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

  • صمم قاعدة بيانات رائعة:- حُسن تصميم قاعدة البيانات من أكبر الأمور التى ستوفر لك المرونة فى العمل, والتصميم الجيد يأتى من معرفة جيدة بكافة جوانب المشروع, أى بالتحليل الجيد, ولتحسين مهاراتك قم بالتعرف على كلاً من (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 ) التى يجب أن تختبرها.

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

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

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

البحث فى جوجل

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

 الختام

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