آموزش برنامه‌نویسی از صفر ، بدون پیش‌نیاز، برای تمام سنین! آموزش برنامه‌نویسی ، از صفر بدون پیش‌نیاز!
🎯 شروع یادگیری
ورود کاربر جدید هستید؟ ثبت نام کنید
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

ASP.Net MVC Core چیست و علت ایجاد MVC Core

ASP.NET MVC Core چیست و به چه دلیل ماکروسافت دست به چنین تغییر عظیمی زد ؟

اگر به تاریخچه ASP.NET نگاه کنیم ، خواهیم دید که عمر این محصول ماکروسافت کم هم نیست . حدود 14 سال است که این محصول سرپاست و در حال سرویس دهی به برنامه نویسان حوزه وب می باشد .از روز شروع و تولید این محصول زمان زیادی گذشته و ماکروسافت روزبه روز سعی در بهبود آن داشته ، ولی آنچه تحت عنوان ASP.NET MVC Core 1.0 به بازار آمده ، یک انقلاب واقعی است .

شاید این فرضیه وجود داشته باشد که ASP.NET MVC Core 1.0 عملن همان ASP.NET 4.6 است دیگر، ولی باید با جرات و جدیت اعلام کرد که "خیر" . ماکروسافت این نسخه را جدی از اول نوشته است . این نسخه شاید قابلیتهای یکسانی با نسخه 4.6 داشته باشد ، ولی واقعا از صفر نوشته شده و به صورت محسوسی سبکتر و ماژولارتر است .


چرا ماکروسافت دست به تغییر زده است؟

ماکروسافت نگران از دست دادن برنامه نویسانش بود . بعد از نابودی Silverlight و عدم توان رقابت با IOS وAndroid ، دیگر چه چیز برای ماکروسافت میماند ؟. در بستر موبایل که برنامه نویسی Windows Mobile با 2 رقیب آن اصلا قابل مقایسه نیست و ماکروسافت شکست را پذیرفته است . تنها جایی که امکان رقابت باNode, Ruby, Python, Java همین بستر وب است و بس. سیستمهای تحت ویندوز یا همان Windows Application ها را که باید مرده به حساب آورد پس تنها صحنه رقابت و جنگ برای ماکروسافت همین بستر وب است . مسئله بعدی Startup ها هستند . آنها به بسترهای Open Source و ارزان نیاز دارند . ماکروسافت با وضعیت قبلی ASP.NET ، اصلا مورد توجه Startup ها قرار نمی گرفت و این بسیار دردناک بود .

حال باید دید چرا این تغییرات می تواند ASP.NET را دوباره به مدار باز گرداند .

  • مجانی و Open Source شدن
  • Cross Platform بودن
  • سادگی در استفاده
  • سبک ، قوی و ساده بودن

با این 4 ویژگی ASP.NET با دیگر محیطها و زبانهای توسعه وب در یک سطح خواهد بود ، مضاعف بر اینکه زبان قدرتمند و زیبای C#.NET همچنان هسته اصلی توسعه باقی خواهد ماند و این یعنی یک برتری بسیار بزرگ نسبت به دیگر زبانها !


چه بر سر ASP.NET 4.6 خواهد آمد؟

جواب را کسی نمی داند ، ولی بر اساس مشاهدات ، باید آنرا هم مرده فرض کنید . روی اسب مرده شرط بندی نکنید و Core 1.0 را برنده بدانید .مسلما ورژن های پایین تر همچنان کار خواهند کرد چنان که ASP Classic هم هنوز بر روی IIS قابل اجراست ، ولی از لحاظ بازار کار ، پشتیبانی و به روز بودن محصول باید Core 1.0 را به عنوان امید اول این جایگاه در نظر بگیریم .

آنچه در حال حاضر از دست من و شما بر می آید این است که آرزو کنیم ماکروسافت خسته نشود و دوباره یک محصول نیمه کاره و دارای خطاهای فاحش به بازار عرضه نکند . باید منتظر بود و دید آیا ماکروسافت این بار محصولی که بتوان به آن افتخار کرد را ارائه می کند یا نه .


ویژگی های ASP.NET MVC Core

  1. cross-platform
  2. high-performance
  3. open-source framework for building modern
  4. cloud-based
  5. Internet-connected applications

چرا از ASP.NET MVC Core استفاده کنیم؟

میلیون ها برنامه نویس از ASP.NET برای برنامه های تحت وب استفاده کرده اند.

ASP.NET MVC Core در واقع همان ASP.NET می باشد که دوباره طراحی شده و با تغییرات معماری منجر به modular framework شده است.


مزایای ASP.NET MVC Core

  • یکپارچه سازی ساخت رابط کاربری و WEB API
  • یکپارچه سازی client-side frameworks و جریان های توسعه.
  • A unified story for building web UI and web APIs.
  • Integration of modern client-side frameworks and development workflows.
  • A cloud-ready, environment-based configuration system.
  • Built-in dependency injection.
  • A lightweight, high-performance, and modular HTTP request pipeline.
  • Ability to host on IIS or self-host in your own process.
  • Can run on .NET Core, which supports true side-by-side app versioning.
  • Tooling that simplifies modern web development.
  • Ability to build and run on Windows, macOS, and Linux.
  • Open-source and community-focused.

نصب ویژوال استودیو 2017 وNET Core

برای نصب ویژوال استودیو 2017 گزینه های زیر را انتخاب می کنیم :


  • ASP.NET and web development (under Web & Cloud)
  • .NET Core cross-platform development (under Other Toolsets)

ایجاد یک برنامه وب

از منو FileNewProject


آموزش MVC

بعد از باز شدن کامل پنجره New Project در پنل سمت چپ گزینه Net Core را انتخاب می کنیم

در پنل وسط تب ASP.NET MVC Core Web Application (.NET Core) انتخاب می کنیم

نام پروژه را MvcMovie می گذاریم .

نکته:

حتما نام پروژه را MvcMovie بگذارید تا namespace ها یکسان باشد و در صورت نیاز با کپی کردن کدها پروژه را بتوانید پیش ببرید.

بعد از باز شدن پنچره New ASP.NET MVC Core Web Application (.NET Core) - MvcMovie

گزینه Web Application را انتخاب کنید و حالت پیش فرض No Authentication باشد.

آموزش MVC

ویژوال استودیو از یک قالب پیش فرض برای پروژه های MVC استفاده می کند.

شما با وارد کردن یک نام پروژه و انتخاب چند گزینه یک برنامه کاری واقعی دارید.

با استفاده از کلید F5 یا Ctrl+F5 می توانید پروژه ساخته شده را اجرا کنید.

Ctrl+F5 (non-debug mode)

F5 (debug mode)


آموزش MVC

با استفاده از کلید Ctrl+F5 می توانید بدون دیباگ کردن پروژه اجرا کرده و با تغییر در کد ها ،بدون نیاز به اجرا میتوانید با رفرش کردن مروگر تغییرات را ببینید.


آموزش MVC

قالب پیش فرض به شما لینک های Home,Contact,About را می دهد

Controller

Model-View-Controller (MVC) الگوی معماری این برنامه را به سه قسمت اصلی تقسیم می کند.

  • Model
  • View
  • Controller

الگوی MVC به ما کمک میکند تا برنامه هایمان را قابل تست و راحت تر از برنامه های یکپارچه سنتی به روز کنیم

برنامه های MVC بر پایه ی :


  1. Model :کلاس هایی که داده های(DATA) برنامه را نشان می دهد.مدل کلاس برای تایید قوانینی که برای داده ها (DATA)می گذاریم از منطق اعتبار(validation logic ) استفاده می کنند.به طور معمول آبجکت(objects ) که از مدل(model ) می سازیم حالت مدل(model state ) را در پایگاه داده(database)ذخیره و بازیابی می کند.
    در این آموزش یک مدل فیلم(Movie Model)اطلاعات فیلم را از یک پایگاه داده بازیابی می کند، آن را نمایش می دهد و یا به روز(Update) می کند. زمانی که اطلاعات را به روز می کنیم در پایگاه داده ذخیره می شود.
  2. View : نمایش ها (Views)اجزایی هستند که رابط کاربری برنامه را نمایش می دهند(UI).به طور کلی (UI) داده های مدل(Model Date) را نمایش می دهد.
  3. Controller :در واقع کلاس هایی هستند که درخواست های(requests) مرورگر را انجام می دهند.آن ها داده های مدل را بازیابی می کنند و با فراخوانی قالب های نمایش(view templates)پاسخ مناسب را می دهند.

در یک برنامه MVC نمایش(VIew) ها فقط اطلاعات را نمایش می دهند اما کنترلر(controller ) در تعامل با کاربر می باشد و به ورودی های کاربر واکنش مناسب می دهد

در پنجره Solution Explorer بر روی فولدر Controller راست کلیک کرده و AddNew Item را انتخاب می کنیم


آموزش MVC

در پنل سمت چپ گزینه Web را انتخاب کرده و در پنل وسط گزینه MVC Controller Class را انتخاب می کنیم و نامش را HelloWorldController می گذاریم.


آموزش MVC

می توانید کدهای زیر را کپی کنید

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
namespace MvcMovie.Controllers
{
    public class HelloWorldController : Controller
    {
        //
        // GET: /HelloWorld/
        public string Index()
        {
         return "This is my default action...";
        }
        //
        // GET: /HelloWorld/Welcome/
        public string Welcome()
        {
            return "This is the Welcome action method...";
        }
    }
}
<button></button>

هر متد (public) در کنترلر (controller ) را می توان به عنوان (HTTP endpoint)خواند.در مثال بالا هر دو متد یک رشته(string) بر می گردانند.HTTP endpoint یک URL قابل جستجو در برنامه وب است مانند: http://localhost:1234/HelloWorld و از پروتکل HTTP استفاده می کند.هر دو متد ما با استفاده از HTTP GET فراخوانی شده اند.

برنامه را با استفاده از Ctrl+F5 (non-debug mode) اجرا می کنیم و در آخر مسیر URL کلمه HelloWorld را اضافه می کنیم.

متد Index یک رشته(string) بر می گرداند.


آموزش MVC

MVC کنترلر را فراخوانی می کند (به همراه اکشن مورد نظر) بسته به نوع ورودی URL.

حالت پیش فرض URL routing logic که توسط MVC استفاده می شود یک فرمت به شکل زیر است:

  • /[Controller]/[ActionName]/[Parameters]
  • فرمت Routing شما درون فایل Startup.cs قرار دارد و پیش فرض به شکل زیر است.
    1
    2
    3
    4
    5
    6
    7
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
    <button></button>
  • اولین بخش URL، کلاس کنترل را برای اجرا تعیین می کند.
  • بنابراین localhost:xxxx/HelloWorld نقشه رسیدن به کلاس HelloWorldController می باشد.
  • دومین بخش URL، تعیین اکشن(action ) در کلاس کنترل می باشد.
  • بنابراین localhost:xxxx/HelloWorld/Index باعث می شود اکشن Index از کلاس HelloWorldController اجرا شود.
  • حال درمرورگر آدرسhttp://localhost:xxxx/HelloWorld/Welcome وارد می کنیم.متد Welcome اجرا می شود و رشته "This is the Welcome action method..." بر می گرداند.
  • برای این URL کنترلر(HelloWorld) و اکشن (Welcome) می باشد .
    آموزش MVC
  • با تغییر کد می توانیم به صورت پارامتر از URL به کنترلر داده بفرستیم.
  • برای مثال /HelloWorld/Welcome?name=Rick&numtimes=4 .
  • اکشن Welcome را به صورت زیر تغییر می دهیم.
    1
    2
    3
    4
    5
    6
    7
    // GET: /HelloWorld/Welcome/
    // Requires using System.Text.Encodings.Web;
    public string Welcome(string name, int numTimes = 1)
    {
        return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
    }
    <button></button>
  • توجه داشته باشید که برای نشان دادن این ویژگی سی شارپ به طور اختیاری به پارامتر numTimes مقدار پیش فرض دادیم .
  • از کد HtmlEncoder.Default.Encode استفاده می کنیم برای محافظت برنامه از ورودی های مخرب (یعنی جاوا اسکریپت)
  • برنامه را اجرا کرده و به آدرس زیر مراجعه می نماییم:
    http://localhost:xxxx/HelloWorld/Welcome?name=Rick&numtimes=4
  • به جای XXXX پورت سیستم خود را وارد نمایید،
  • می توانید از پارامتر های دیگه ای هم به صورت دلخواه استفاده نمایید.
  • MVC Model Binding به صورت خودکار پارامتر های نام گذاری شده از query string در URL به پارامتر های اکشن خود انتقال می دهد.
    آموزش MVC
  • در عکس بالا بخش [Parameters] URL هنوز استفاده نشده.( name) و (numTimes) پارامترها منقل می شوند به query string.
  • ؟(علامت سوال) در آدرس بالا یک جدا کننده می باشد و query string آن را دنبال می کند.
  • & کاراکتر های query string را جدا می کند.
  • اکشن Welcome را به صورت زیر تغییر می دهیم.
    1
    2
    3
    4
    5
    public string Welcome(string name, int ID = 1)
    {
        return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
    }
    <button></button>
  • برنامه را اجرا کرده و به آدرس زیر می رویم:
    http://localhost:xxx/HelloWorld/Welcome/3?name=Rick
    آموزش MVC
  • این بار از بخش سوم [Parameters] URL تحت عنوان ID استفاده می کنیم.
  • اکشن (Welcome) شامل یک پارامتر ID است که الگو URL را در MapRoute دنبال می کند.
  • اگر به دنبال ID علامت سوال(؟) بزاریم به این معنی می شود که پارماتر ID اختیاری است.
    1
    2
    3
    4
    5
    6
    7
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
    <button></button>
  • در این مثال کنترلر در واقع بخشی از "VC" از "MVC" انجام داده است یعنی نمایش (view ) و کنترلر(controller ). کنترلر به طور مستقیم HTML بر می گرداند.به طور کلی شما نمی خواهید که کنترلر HTML بر گرداند زیرا برا نوشتن کد و نگهداری بسیار دشوار می شود.
  • ولی شما معمولا از فایل قالب (template) جداگانه Razor برای کمک به تولید HTML استفاده می کنید.
  • شما در آموزش بعدی این کار را انجام می دهید.
1397/02/28 5998 1141
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...