کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش ASP.Net MVC Core - ASP.NET Core چیست؟

برای مشاهده سر فصل های مربوط به آموزش MVC Core کلیک نمایید.

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

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


شاید این فرضیه وجود داشته باشد که ASP.NET 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 را دوباره به مدار باز گرداند .

  1. مجانی و Open Source شدن
  2. Cross Platform بودن
  3. سادگی در استفاده
  4. سبک ، قوی و ساده بودن

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


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

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


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

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

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

مزایای ASP.NET 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 را انتخاب می کنیم

آموزش Asp.net Core

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

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

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

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

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

نکته:

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


آموزش Asp.net Core

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

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

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

Ctrl+F5 (non-debug mode)

F5 (debug mode)

آموزش Asp.net Core

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

آموزش Asp.net Core

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

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

  1. Model
  2. View
  3. Controller

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

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

Model

کلاس هایی که داده های(DATA) برنامه را نشان می دهد.مدل کلاس برای تایید قوانینی که برای داده ها (DATA)می گذاریم از منطق اعتبار(validation logic ) استفاده می کنند.به طور معمول آبجکت(objects ) که از مدل(model ) می سازیم حالت مدل(model state ) را در پایگاه داده(database)ذخیره و بازیابی می کند.

در این آموزش یک مدل فیلم(Movie Model)اطلاعات فیلم را از یک پایگاه داده بازیابی می کند،آن را نمایش می دهد و یا به روز(Update) می کند. زمانی که اطلاعات را به روز می کنیم در پایگاه داده ذخیره می شود.

View

نمایش ها (Views)اجزایی هستند که رابط کاربری برنامه را نمایش می دهند(UI).به طور کلی (UI) داده های مدل(Model Date) را نمایش می دهد.

Controller

در واقع کلاس هایی هستند که درخواست های(requests) مرورگر را انجام می دهند.آن ها داده های مدل را بازیابی می کنند و با فراخوانی قالب های نمایش(view templates)پاسخ مناسب را می دهند

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

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

آموزش Asp.net Core

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

آموزش Asp.net Core

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

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...";
}
}
}

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

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

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

آموزش Asp.net Core

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

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

/[Controller]/[ActionName]/[Parameters]

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

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

اولین بخش 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) می باشد .

آموزش Asp.net Core

با تغییر کد می توانیم به صورت پارامتر از URL به کنترلر دیتا بفرستیم.

برای مثال /HelloWorld/Welcome?name=Rick&numtimes=4 .

اکشن Welcome را به صورت زیر تغییر می دهیم.

// 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}");
}

توجه داشته باشید که برای نشان دادن این ویژگی سی شارپ به طور اختیاری به پارامتر numTimes مقدار پیش فرض دادیم .

از کد HtmlEncoder.Default.Encode استفاده می کنیم برای محافظت برنامه از ورودی های مخرب (یعنی جاوااسکریپت)

برنامه را اجرا کرده و به آدرس زیر می رویم:

http://localhost:xxxx/HelloWorld/Welcome?name=Rick&numtimes=4

به جای XXXX پورت سیستم خود را وارد کنید

می توانید از پارامتر های دیگه ای هم به صورت دلخواه استفاده کنید.

MVC Model Binding به صورت خودکار پارامتر های نام گذاری شده از query string در URL به پارامتر های اکشن خود انتقال می دهد.

آموزش Asp.net Core

در عکس بالا بخش [Parameters] URL هنوز استفاده نشده.( name) و (numTimes) پارامترها منقل می شوند به query string.

؟(علامت سوال) در آدرس بالا یک جدا کننده می باشد و query string آن را دنبال می کند.

& کاراکتر های query string را جدا می کند.

اکشن Welcome را به صورت زیر تغییر می دهیم.

public string Welcome(string name, int ID = 1)
{
return HtmlEncoder.Default.Encode($"Hello {name}, ID: {ID}");
}

برنامه را اجرا کرده و به آدرس زیر می رویم:

http://localhost:xxx/HelloWorld/Welcome/3?name=Rick

آموزش Asp.net Core

این بار از بخش سوم [Parameters] URL تحت عنوان ID استفاده می کنیم.

اکشن (Welcome) شامل یک پارامتر ID است که الگو URL را در MapRoute دنبال می کند.

اگر به دنبال ID علامت سوال(؟) بزاریم به این معنی می شود که پارماتر ID اختیاری است.

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

در این مثال کنترلر در واقع بخشی از "VC" از "MVC" انجام داده است یعنی نمایش (view ) و کنترلر(controller ). کنترلر به طور مستقیم HTML بر می گرداند.به طور کلی شما نمی خواهید که کنترلر HTML بر گرداند زیرا برا نوشتن کد و نگهداری بسیار دشوار می شود.

در عوض ،شما معمولا از فایل قالب (template) جداگانه Razor برای کمک به تولید HTML استفاده می کنید.

شما در آموزش بعدی این کار را انجام می دهید.

1396/07/20 21790 2554
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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