الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Welcome to ASP.NET MVC framework

بدأه D a r K T o u c h في 30 يونيو 2011 · 10 رد · 2,880 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

من خلال متابعتي لـ ASP.NET Web Forms لقراءة أخر المستجدات عند هذا الـ Framework وطبعا كنت في فترة والى ألان أتعلم على هذه التقنية تكرر أمامي مصطلح كثيرا وهو مصطلح MVC, فقررت أن ابحث عن معلومات تكون متعلقة بهذا المصطلح, فتوجهت إلى الموقع الرئيسي وهو asp.net ودخلت إلى هذا القسم عند المقدمة لهذا المصطلح لفهم ما هو.

بعد قراءة ليست سريعة لكن لاستيعاب شيء جديد, لأنه فعلا كان شيء جديد بالنسبة لشخص تعامل مع ASP.NET Web Form لفترة, فكانت النتيجة هو أنني استنتجت أن هذه التقنية تكون لبناء تطبيقات ويب بشكل بديل للـ ASP.NET Web Form وأيضا مكملة لها في نفس الوقت حيث أن Framework لكلا التقنيتين يكون متشابه, على سبيل المثال سوف أتعامل مع خصائص موجودة في ASP.NET Web Form مثل الـ master pages , membership-based authentication لكن باختلاف التقنية فقط.

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

بعد هذه القصة البسيطة لكيفية معرفتي بـ MVC لنتقدم قليلا لمعرفة ماهي هذه التقنية بشكل ليس موسع, أنما كلام يكون سهل الفهم واستطيع تقريبك عزيزي القارئ إلى ما أريد, الـ MVC اختصار لثلاثة عناصر وهي Model-View-Controller حيث هنا احد الاختلافات التي سوف تجدها في طريقة بنائك لتطبيق الويب عن ASP.NET Web Form بأنك ستتعامل مع MVC-based Web applications.

فكانت ملاحظاتي وأنا هنا لست أقارن من ناحية تفضيل بل أحساس بفرق, فكما نعلم أننا عند استخدام ASP.NET Web Form سوف نتعامل مع أدوات server control بينما في الـ MVC سوف يكون التعامل مع أدوات الـ HTML العادية, وأيضا لاحظت انك لن تتعامل بشكل أساسي مع صفحات وبهذه الصفحة تكتب الكود وتضع الأدوات وأيضا الـ post back و الخ ... بل انك سوف تكون على نمط واحد وهو تعريف MVC فقط, وأيضا انك سوف يكون هناك فصل بين الكود وعن طريقة الإدخال وإخراج البيانات وفي طريقة العرض.

لنبدأ الحديث عن العناصر الثلاثة التي تم ذكرها سابقا و ما هو دورها في أي مشروع من مشاريع الـ MVC

Model: لربما يكون Model عبارة عن المواضيع الموجودة في موقعك أو ردود الأعضاء على هذه المواضيع, أي بمعنى آخر الـ Model له علاقة ببيانات موقعك سواء كانت من قاعدة البيانات أو قد تكون أكواد مساعدة في المشروع.

View: هذا الجزء يكون متعلق بـ User Interface, كما ذكرت سابقا ربما يكون الـ Model قد يكون عبارة عن مواضيع في قاعدة بيانات الموقع أذا الطريقة التي سوف تعرض هذه البيانات للمستخدم سوف يكون عبر هذا العنصر وهو الـ View وسوف يكون العرض باستخدام أدوات الـ HTML

:Controller عبارة عن الوسيط بين العنصرين السابقين, ذكرت في العنصر السابق انه مخصص لعرض الشكل النهائي للبيانات القادمة من العنصر الأول لكن لنقف قليلا ونسأل أنفسنا سؤال بسيط وهو كيف سوف يتم التعرف على أي View سوف يتم عرض البيانات القادمة, فيجيب علينا Controller ليكون الحل, فطريقة عمل الـ Controller هو بعد طلب اسم الـ Controller في المتصفح (وهذا سوف نتكلم عنه بعد قليل) يتم تنفيذ كل العمليات التي يرديها على هذه البيانات القادمة من العنصر الأول على سبيل المثال عمل اختيار لمواضيع تكون مرتبطة لقسم معين والخ... وبعدها يتم تحديد أي View سوف يتم عرض هذه البيانات فيه.

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

لنبدأ:

افتح Visual studio كالمعتاد وقم باختيار,File – New Project – ASP.NET MVC 2 Web Application وأعطيه أي تسمية كما تريد واضغط موافق. ( ملاحظة أنا استخدم VS2010 )

بعد الضغط على زر موافق, سوف يظهر لك مربع حوار يسألك عن إذا كنت تريد عمل unit test للمشروع. في هذا المثال اختار الخيار NO واضغط موافق.

ستلاحظ عزيزي القارئ مجموعة من الملفات ومن ضمن هذه الملفات يوجد هناك ثلاثة ملفات تحمل أسماء المكونات التي تم شرحها سابقا Model-View-Controller, أذا لنتعرف على وضيفة هذه الملفات.

ملف الـ Content

يحمل الـ static file مثل ملفات الـ CSS والصور.

ملف الـ Controller

يحمل الـ Controllers الخاصة بمشروعك.

ملف الـ Model

يحمل الـ Models الخاصة بالمشروع

ملف Scripts

يحمل ملفات JavaScript

ملف الـ View

يحمل الـ views الخاصة بالمشروع.

لو عملنا توسع لملف الـView سوف نجد انه يحوي على ثلاث ملفات ما يهمنا في حاليا هو ملف Home وأيضا لو عملنا توسع إلى هذا الملف سنلاحظ وجود صفحتين وهما كالتالي Index.aspx و About.aspx.

لنفتح صفحة Index.aspx ونرى محتوياتها , سوف نلاحظ انه هناك تشابه عندما نستخدم الـ master page في ASP.NET Web Form.

بكل بساطة عزيزي القارئ تستطيع الآن أن تضغط على CTRL + F5 ستلاحظ انه سوف يفتح مشروع مثل الشكل التالي:

post-224629-088012400 1309418429_thumb.p

بما انك عزيزي القارئ تعاملت مع الـ master page فلن تتساءل من أين أتى كل هذا الشكل من أزرار والخ... , لكن ما يهمني أنا هو إيصال فكرة عمل العناصر الثلاثة التي تم شرحها سابقا.

انظر عزيزي القارئ إلى رابط الصفحة في أعلى المتصفح, سوف تلاحظه على هذه الهيئة http://localhost:port/ , بالعودة إلى ملفات المشروع لنتجه إلى ملف Global.asax وهذا الملف أيضا مألوف لدينا من استخدام ASP.NET Web Form ( بكثرة في الإصدار الرابع .NET 4.0 ) سنلاحظ أن هناك تعريف إلى Url Route ويهمني انك تفهم طريقة هذا الـ Route لان سوف يساعد في فهم طريقة عمل العناصر الثلاثة السابقة وأيضا بناء Route على حسب متطلبات مشروعك .

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

لنأخد هذا الجزئ ونشرحة

"{controller}/{action}/{id}"

ما يعنيه هذا الجزء هو أن مكونات الرابط هي مثل الترتيب حيث انك في البداية سوف تستدعي اسم Controller وبعدها اسم الـ Action و الـ id يكون اختياري في هذه الحالة.

لنطبق قليلا على المشروع لفهم كيفية عمل هذا الـ Route وأيضا فهم طريقة عمل العنصرين الثاني والثالث.

عندما عملنا المشروع فتح لنا في بداية الأمر HomeController وفي هذا الـ Controller سنجد هناك actions واحد يسمى index والأخر about قف قليلا عزيزي القارئ ونرجع خطوة للخلف إلى Route السابق وسنلاحظ أننا لبينا متطلبين أساسين في هذا الـ route آلا وهما الـ Controller والـ Action أذا أصبحنا نفهم بشكل بسيط عندما نريد أن نستدعي أي Action لابد أن يتم أولا استدعاء اسم الـ Controller الموجود فيه وبعدها استدعاء اسم هذا الـ Action.

ذكرنا سابقا أن في ملفات المشروع يوجد ملف اسمه View وكان من ضمنه ملف اسمه Home فأتت تسمية هذا الملف على اسم الـ Controller الخاص بهذا الملف, أذا لنعمل مثال بسيط ونفهم: .

اذهب عزيزي القارئ عند ملف الـ Controller و Right Click وبعدها Add – Controller

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

        public ActionResult Index()
        {
             ViewData["Test"] = "From Test Controller!!";
            return View();
        }

اجعل المؤشر على اسم الـ Action ( في هذه الحالة هو Index ) واعمل Right Click واختار Add View وبعدها اضغط موافق.

ستلاحظ انه في ملف الـ View الموجود في ملفات المشروع تكون لدينا ملف جديد بنفس الاسم للـ Controller ويحمل بداخلة صفحة اسمها Index على اسم الـ Action الموجود بداخل هذا الـ Controller, في هذا الوقت استطيع أن أدرك انك عزيزي القارئ استطعت استيعاب عنصرين من العناصر الثلاثة التي تم ذكرها سابقا.

لنقم بعمل هذا التغير على صفحة Index الخاصة بهذا الـ Controller

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
	Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Test Controller</h2>

    <%: ViewData["Test"] %>
</asp:Content>

اعمل Build للمشروع واذهب للمتصفح واعمل refresh للموقع

ركز عزيزي القارئ ألان سوف نطبق الـ Route الذي تحدثنا عنه سابقا , فبعد عمل refresh للصفحة اذهب إلى العنوان واكتب كـ تكملة على الموجود /Test/Index ستلاحظ ما تم كتابته في الـ Action تم عرض في الـ View.

كـ محصلة لما فعلناه هو أثبتنا أن الـ Controller هو وسيط لعرض الـ View المطلوب وفي مثالنا السابق حددنا في الرابط أننا نريد الـ View الذي أسمة Index الذي يكون خاص بالـ Controller الذي أسمة test

ملاحظة: عند تعاملك أخي القارئ مع الـ View فأعلم انه بإمكانك كتابة الجمع بين أكواد اللغة التي تبرمج بها و أكواد الـ HTML .

اقتباس
Deciding When to Create an MVC Application

You must consider carefully whether to implement a Web application by using either the ASP.NET MVC framework or the ASP.NET Web Forms model. The MVC framework does not replace the Web Forms model; you can use either framework for Web applications. (If you have existing Web Forms-based applications, these continue to work exactly as they always have.)

Before you decide to use the MVC framework or the Web Forms model for a specific Web site, weigh the advantages of each approach.

Advantages of an MVC-Based Web Application

The ASP.NET MVC framework offers the following advantages:

It makes it easier to manage complexity by dividing an application into the model, the view, and the controller.

It does not use view state or server-based forms. This makes the MVC framework ideal for developers who want full control over the behavior of an application.

It uses a Front Controller pattern that processes Web application requests through a single controller. This enables you to design an application that supports a rich routing infrastructure. For more information, see Front Controller on the MSDN Web site.

It provides better support for test-driven development (TDD).

It works well for Web applications that are supported by large teams of developers and Web designers who need a high degree of control over the application behavior.

Advantages of a Web Forms-Based Web Application

The Web Forms-based framework offers the following advantages:

It supports an event model that preserves state over HTTP, which benefits line-of-business Web application development. The Web Forms-based application provides dozens of events that are supported in hundreds of server controls.

It uses a Page Controller pattern that adds functionality to individual pages. For more information, see Page Controller on the MSDN Web site.

It uses view state or server-based forms, which can make managing state information easier.

It works well for small teams of Web developers and designers who want to take advantage of the large number of components available for rapid application development.

In general, it is less complex for application development, because the components (the Page class, controls, and so on) are tightly integrated and usually require less code than the MVC model.

ملاحظة: اخر اصدار للـ ASP.NET MVC framework هو 3.0 وانا كتبت مثالي بأستخدام الاصدار 2.0 بسبب انتظار صدور الكتاب للأصدار الجديد , لكن من خلال متابعتي مل هو الجديد في الاصدار 3.0 لا اعتقد انه سوف يكون عائق عليك لو تعلمت قليلا من الاصدار 2.0 وانتقلت الى الاصدار الجديد .

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

في النهاية حببت ان شارككم بما توصلت له واتمنى ان تعم الفائدة وايضا اخواني اتمنى ان وجد اي تعديل تعديل او اضافات انا ارحب بها :D

Good Luck

المرفقات
Home Page 2011-06-30 08-03-21.png

تم تعديل هذه المشاركة بواسطة D a r K T o u c h في 30 يونيو 2011 في 10:50

3

My Latest

Hello Entity Framework Code First

--------------------

#2

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

شكرا اخي على الطرح تعتبر ال MVC واحده من انواع ال Pattern للكود فالمصطلح ليس بجديد, ولكن قد يرى البعض صعوبة في التعامل مع ال MVC لأن اغلب الاكواد تكتب داخل المصدر html, ولكن انوه اخوتي واخواتي بقراءة الاقتباس اعلاه لأن ال MVC ليست بديله لل Web Forms انما هي طريقة اخرى لعمل تطبيقات ويب واخير يجب ان تعرف مزايا الاثنين لتختار ايهما سينفعك اكثر في مشاريعك!!

1

.:: Wish to become better and better ::.

#3

بارك الله فيكم

هل للدرس بقية

#4
VB Helper كتب:

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

شكرا اخي على الطرح تعتبر ال MVC واحده من انواع ال Pattern للكود فالمصطلح ليس بجديد, ولكن قد يرى البعض صعوبة في التعامل مع ال MVC لأن اغلب الاكواد تكتب داخل المصدر html, ولكن انوه اخوتي واخواتي بقراءة الاقتباس اعلاه لأن ال MVC ليست بديله لل Web Forms انما هي طريقة اخرى لعمل تطبيقات ويب واخير يجب ان تعرف مزايا الاثنين لتختار ايهما سينفعك اكثر في مشاريعك!!

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

صباح الخير..

شكرا لك اخي على الرد وعلى المعلومات التي كتبتها في الرد.

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

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

شكرا لك اخي

Easha كتب:

بارك الله فيكم

هل للدرس بقية

شكرا ...

لا مانع لدي في كتابة ما استطعت واستطيع فهمة عن كيفية التعامل

لكن افضل لو اعرف مثلا عدد الاشخاص المهتمين في هذه التقنية لكي يتم تبادل الافكار مع بعض

وانا حاليا في انتظار الكتاب للأصدار 3.0 .

Good luck

My Latest

Hello Entity Framework Code First

--------------------

#5

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

لاشكر على واجب اخي .. بالتوفيق ..

.:: Wish to become better and better ::.

#6

أعتقد أنه فاتني موضوع مهم ادرج هنا بالمنتدى

احب أن أشارك بما أعرف عن المبدأ

المبدا كما قال الاخ vb helper

ظهر ورقيا عام 1976 وتم إنشاء أول تطبيق به على ما أذكر 2003 لم تكن ميكروسوفت سباقة باستخدام هذا النمط وانما سبقتها عدة شركات

المهم براي له ميزات عديدة :

اولا وداعا لل viewstate لانه لا يعتمد مبدأ ال postback وهذا امر جميل جدا لانه تخلص من عقدة حفظ الادوات المنشأة ديناميكيا عن طريق الجافا سكريبت حيث كان يدمر ال postback العناصر المولدة ديناميكيا

أيضا وداعا للنص الفائض الذي كان يملىء ال hidden field المنشاْ من قبل ال viewstate

أيضا وجود ميزة هامة جدا هي التعامل المباشر مع عناصر ال html وهذا بشكل يفيد بال HTML5

بالاضافة الى ميزة المسار المنطقي او ما يعرف بالتوجيه routing

إعطاء مسار غير المسار الحقيقي لملفات الموقع وهذا يضمن الأمان الكافي لملفات الموقع

مثلا

http://www.example.com/home/viewexample/10

هنا الملف موجود ضمن مجلد ال views/home/viewexample.aspx

وأي محاولة لفتح مباشر للملف سيعطي خطأ بأن المسار المطلوب غير موجود لأن التعامل يتم مباشرة مع ال Controller عن طريق methods

ميزة هامة جدا للتطبيقات الكبيرة الا وهي Testability

السبب لسهولة الاختبار هو وجود اجرائيات بمحددات دخل محددة النمط وهذا يحدد سلوك وحدة الاختبار على عكس ما كان في الاحداث ال event ضمن ال web form

تطبيق مبدأ فصل الطبقات بشكل حقيقي وفعّال

سهولة ومرونة التوسع بالمشروع لان المشروع بالاساس يعتمد على اجرائيات دوال بمعنى آخر في الانتقال

أيضا ميزة وجدتها جميلة جدا عن طريق الممارسة

مثلا لو أردت إنشاء جدول لعرض البيانات أقوم بإنشاء صفحة واحدة لعرض هذا الجدول او ال Data grid ومن ثم أي عملية لعرض بيانات بنفس model ك list فانناي فقط اتعامل مع partial view

return PartialView("Viewexamplesforstudent", er.GetExamplesbyUser(Name).ToList());

ميزة أخرى قوية هي التعامل المرن مع الصلاحيات

ضمن ال web form هناك طريقين للتحقق من الصلاحيات اما شروط عن طريق الكود أو سماح او حظر لمجموعة او عضو عن مجلد بالكامل

هنا بال MVC

يمكننا هنا إعطاء الصلاحيات بناءا على كل اجراء على حدا

    	[Authorize(Roles = "Administrators")]
    	public ActionResult Create()

بصراحة يوجد الكثير والكثر بنصحكم حاولوا تدخلوا مجالها

وفقكم الله

1

In bad state

#7
X-File كتب:

أعتقد أنه فاتني موضوع مهم ادرج هنا بالمنتدى

احب أن أشارك بما أعرف عن المبدأ

المبدا كما قال الاخ vb helper

ظهر ورقيا عام 1976 وتم إنشاء أول تطبيق به على ما أذكر 2003 لم تكن ميكروسوفت سباقة باستخدام هذا النمط وانما سبقتها عدة شركات

المهم براي له ميزات عديدة :

اولا وداعا لل viewstate لانه لا يعتمد مبدأ ال postback وهذا امر جميل جدا لانه تخلص من عقدة حفظ الادوات المنشأة ديناميكيا عن طريق الجافا سكريبت حيث كان يدمر ال postback العناصر المولدة ديناميكيا

أيضا وداعا للنص الفائض الذي كان يملىء ال hidden field المنشاْ من قبل ال viewstate

أيضا وجود ميزة هامة جدا هي التعامل المباشر مع عناصر ال html وهذا بشكل يفيد بال HTML5

بالاضافة الى ميزة المسار المنطقي او ما يعرف بالتوجيه routing

إعطاء مسار غير المسار الحقيقي لملفات الموقع وهذا يضمن الأمان الكافي لملفات الموقع

مثلا

http://www.example.com/home/viewexample/10

هنا الملف موجود ضمن مجلد ال views/home/viewexample.aspx

وأي محاولة لفتح مباشر للملف سيعطي خطأ بأن المسار المطلوب غير موجود لأن التعامل يتم مباشرة مع ال Controller عن طريق methods

ميزة هامة جدا للتطبيقات الكبيرة الا وهي Testability

السبب لسهولة الاختبار هو وجود اجرائيات بمحددات دخل محددة النمط وهذا يحدد سلوك وحدة الاختبار على عكس ما كان في الاحداث ال event ضمن ال web form

تطبيق مبدأ فصل الطبقات بشكل حقيقي وفعّال

سهولة ومرونة التوسع بالمشروع لان المشروع بالاساس يعتمد على اجرائيات دوال بمعنى آخر في الانتقال

أيضا ميزة وجدتها جميلة جدا عن طريق الممارسة

مثلا لو أردت إنشاء جدول لعرض البيانات أقوم بإنشاء صفحة واحدة لعرض هذا الجدول او ال Data grid ومن ثم أي عملية لعرض بيانات بنفس model ك list فانناي فقط اتعامل مع partial view

return PartialView("Viewexamplesforstudent", er.GetExamplesbyUser(Name).ToList());

ميزة أخرى قوية هي التعامل المرن مع الصلاحيات

ضمن ال web form هناك طريقين للتحقق من الصلاحيات اما شروط عن طريق الكود أو سماح او حظر لمجموعة او عضو عن مجلد بالكامل

هنا بال MVC

يمكننا هنا إعطاء الصلاحيات بناءا على كل اجراء على حدا

    	[Authorize(Roles = "Administrators")]
    	public ActionResult Create()

بصراحة يوجد الكثير والكثر بنصحكم حاولوا تدخلوا مجالها

وفقكم الله

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

مشكور اخي على المشاركة, فعلا انا احسست بـ حرية في التعامل مع الكود وخاصة استخدام الـ LINQ مع الـ MVC

وعن ذكر استدعاء الجدول بطريقة الـ partialView يوجد اشياء اخرى مثلا تستطيع ان تعمل كلاس تجعله يستقبل متغيرات لأستخدامة مثلا في صفحة متعددة المخرجات من نفس الجدول وبالاظافة الى انك عندما تتعامل مع هذا الكلاس تستطيع ان تعمل تحقق والخ من الطرق البرمجة وتخيل معي انك تستطيع تطبيق هذه الدوال في الصفحة ( اقصد الـ View )ز.

شكرا لك .

Good luck

My Latest

Hello Entity Framework Code First

--------------------

#8

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

اشكر الاخ X-File على المعلومات القيمة, ولكن احببت ان انوه ان مايكروسوفت في اصدار الفيجول 2010 بعمل قالب مثل قالب ال MVC لمطويري ال Web Forms, فالفيجوال ستديو تمكننا من بناء تطبيقات ويب بالمنهجين اما لمن اراد استخدام ال Web Pages فالـ Web Matrix هي البيئة التطورية له

.:: Wish to become better and better ::.

#9
VB Helper كتب:

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

شكرا اخي على الطرح تعتبر ال MVC واحده من انواع ال Pattern للكود فالمصطلح ليس بجديد, ولكن قد يرى البعض صعوبة في التعامل مع ال MVC لأن اغلب الاكواد تكتب داخل المصدر html, ولكن انوه اخوتي واخواتي بقراءة الاقتباس اعلاه لأن ال MVC ليست بديله لل Web Forms انما هي طريقة اخرى لعمل تطبيقات ويب واخير يجب ان تعرف مزايا الاثنين لتختار ايهما سينفعك اكثر في مشاريعك!!

شكراً اخي الكريم D a r K T o u c h

اخي vbhelper هذا الرد مريح الي كتير على فكرة :) :) :) :) :)

#10
X-File كتب:

أعتقد أنه فاتني موضوع مهم ادرج هنا بالمنتدى

احب أن أشارك بما أعرف عن المبدأ

المبدا كما قال الاخ vb helper

ظهر ورقيا عام 1976 وتم إنشاء أول تطبيق به على ما أذكر 2003 لم تكن ميكروسوفت سباقة باستخدام هذا النمط وانما سبقتها عدة شركات

المهم براي له ميزات عديدة :

اولا وداعا لل viewstate لانه لا يعتمد مبدأ ال postback وهذا امر جميل جدا لانه تخلص من عقدة حفظ الادوات المنشأة ديناميكيا عن طريق الجافا سكريبت حيث كان يدمر ال postback العناصر المولدة ديناميكيا

أيضا وداعا للنص الفائض الذي كان يملىء ال hidden field المنشاْ من قبل ال viewstate

أيضا وجود ميزة هامة جدا هي التعامل المباشر مع عناصر ال html وهذا بشكل يفيد بال HTML5

بالاضافة الى ميزة المسار المنطقي او ما يعرف بالتوجيه routing

إعطاء مسار غير المسار الحقيقي لملفات الموقع وهذا يضمن الأمان الكافي لملفات الموقع

مثلا

http://www.example.com/home/viewexample/10

هنا الملف موجود ضمن مجلد ال views/home/viewexample.aspx

وأي محاولة لفتح مباشر للملف سيعطي خطأ بأن المسار المطلوب غير موجود لأن التعامل يتم مباشرة مع ال Controller عن طريق methods

ميزة هامة جدا للتطبيقات الكبيرة الا وهي Testability

السبب لسهولة الاختبار هو وجود اجرائيات بمحددات دخل محددة النمط وهذا يحدد سلوك وحدة الاختبار على عكس ما كان في الاحداث ال event ضمن ال web form

تطبيق مبدأ فصل الطبقات بشكل حقيقي وفعّال

سهولة ومرونة التوسع بالمشروع لان المشروع بالاساس يعتمد على اجرائيات دوال بمعنى آخر في الانتقال

أيضا ميزة وجدتها جميلة جدا عن طريق الممارسة

مثلا لو أردت إنشاء جدول لعرض البيانات أقوم بإنشاء صفحة واحدة لعرض هذا الجدول او ال Data grid ومن ثم أي عملية لعرض بيانات بنفس model ك list فانناي فقط اتعامل مع partial view

return PartialView("Viewexamplesforstudent", er.GetExamplesbyUser(Name).ToList());

ميزة أخرى قوية هي التعامل المرن مع الصلاحيات

ضمن ال web form هناك طريقين للتحقق من الصلاحيات اما شروط عن طريق الكود أو سماح او حظر لمجموعة او عضو عن مجلد بالكامل

هنا بال MVC

يمكننا هنا إعطاء الصلاحيات بناءا على كل اجراء على حدا

    	[Authorize(Roles = "Administrators")]
    	public ActionResult Create()

بصراحة يوجد الكثير والكثر بنصحكم حاولوا تدخلوا مجالها

وفقكم الله

شكله لازم نتقنه مدام الاخ x-file كاين راد

#11

من اليوم راح ابدأ خطوة خطوة

انا وجدت الاداة اللي بتفعل mvc بال 2008visual studio

هيها بالمرفقات اللي بحب يحملها يحملها

AspNetMVC1.rar

مواضيع مشابهة