دوره آموزشی ASP.Net

آموزشگاه تخصصی نرم افزار

دوره آموزشی ASP.Net

آموزشگاه تخصصی نرم افزار

آموزش ASP.NET Core-آموزش ساخت پروژه در ASP.NET Core

تصمیم گرفتم آموزش ASP.NET COre امروز رو با ساخت پروژه در ASP.NET Core MVC شروع کنیم.

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

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

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

پس از آن باید یک برنامه تحت وب ایجاد کنید که برای اینکار باید مسیر زیر را طی کنید :

برای ساخت پروژه در ASP.NET Core MVC، بعد از باز شدن کامل پنجره 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 باشد.

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

F5 = Debug Mode     &     Ctrl+F5 = Non-Debug Mode

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

قالب پیش فرض به شما لینک های Home,Contact,About را می دهد. (Model-View-Controller (MVC الگوی معماری این برنامه را به سه قسمت اصلی تقسیم می کند :

  1. Model
  2. View
  3. Controller

فریم ورک MVC در آموزش ASP.NET Core MVC

فریمورک MVC که مخفف Model-View-Controllerاست، یک قالب معماری است که برنامه را از نظر منطقی به سه کامپوننت اصلی مدل (Model)، ویو (View) و کنترلر (Controler) تقسیم می کند. هر یک از این کامپوننت ها برای مدیریت جنبه خاصی از توسعه یک برنامه ساخته می شود. MVC منطق تجاری و لایه نمایش را از یکدیگر جدا می کند. این معماری برای رابط های کاربری گرافیکی قابل اجرا در دسکتاپ استفاده می شد، اما امروزه هم برای طراحی برنامه های تحت وب و هم برنامه های موبایل استفاده می شود.

تاریخچه MVC

معماری MVC برای اولین بار در سال 1979 مورد بحث قرار گرفت. پس از آن معماری MVC در سال 1987 در زبان برنامه نویسی Smalltalkظهور کرد و در سال 1988 بعنوان یک مفهوم عمومی پذیرفته شد. در مدت اخیر نیز قالب MVC در برنامه های مدرن تحت وب بصورت گسترده مورد استفاده قرار گرفته است.

ویژگی های MVC

  • فریمورکی با قابلیت تست، نصب و توسعه پذیری بالاست.
  • امکان کنترل کامل HTMLرا علاوه بر URLها برای شما فراهم می کند.
  • قدرت نفوذ در مشخصه های موجود ارائه شده توسط ASP.NET ، JSP ، Django و ... را داراست.
  • تفکیک منطق برنامه بصورت آشکار : مدل (Model) ، ویو (View) و کنترلر (Controler). تفکیک وظایف برنامه مانند : منطق تجاری، منطق UIو منطق ورودی.
  • آدرس دهی به URLبرای URLهای سازگار با سئو.
  • قابلیت پشتیبانی برای (Test Driven Development (TDD

معماری MVCدر ASP.NET

سه کامپوننت مهم MVC به شرح زیر هستند :

مدل (Model) : مدل تمامی داده ها و منطق مربوط به آنها را شامل می شود.

ویو (View) : اطلاعات را به کاربر نمایش می دهد یا تعامل کاربر با سیستم را مدیریت می کند.

کنترلر (Controller) : رابط کاربری میان کامپوننت های View و Model است.

ویو (View) :

ویو بخشی از یک برنامه است که مسئولیت نمایش اطلاعات را بعهده دارد. ویوها بوسیله داده های جمع آوری شده از داده های مدل ایجاد می شوند. یک ویو برای دریافت اطلاعات به مدل درخواست می دهد. ویو همینطور داده های مربوط به چت ها، دیاگرام ها و جدول را نیز نشان می دهد. برای مثال، هر ویو تمامی کامپوننت های UI همچون Text Box، Drop Down و ... را شامل می شود.

کنترلر (Controller) :

کنترلر بخشی از یک برنامه است که تعامل کاربر با برنامه را مدیریت می کند. کنترلر، ورودی های کیبورد و موس را تفسیر کرده، و به مدل و ویو اطلاع رسانی می کند تا تغییرات را بصورت مناسب اعمال کند. کنترلر دستورات را به مدل می فرستد تا وضعیت خود را بروزرسانی کند (برای مثال ذخیره یک مستند خاص). کنترلر همینطور دستورات را به ویو مربوطه ارسال می کند تا نمایش ویو را تغییر دهد (برای مثال جابجایی یک مستند خاص).

مدل (Model) :

داده ها و منطق مربوط به آنها در کامپوننت مدل ذخیره می شود. این کامپوننت، داده هایی که در میان کامپوننت های کنترلر یا هر منطق تجاری دیگری انتقال داده می شوند را نمایش می دهد. برای مثال، یک آبجکت کنترلر اطلاعات کاربر را از پایگاه داده بازیابی و آن را دستکاری کرده و دوباره به پایگاه داده می فرستد یا آن را برای انتقال داده های یکسان بکار می گیرد.

کامپوننت مدل به درخواست های فرستاده شده از ویو (View) و همینطور دستورات کنترلر (Controller) پاسخ می دهد تا خود را بروزرسانی کند. این بخش همینطور پایین ترین سطح از قالب است که مسئول حفظ و نگهداری داده هاست.

مثالی جالب از MVC :

حال بیایید به مصداقی از قالب MVC که در زندگی روزمره با آن مواجه هستیم، بپردازیم :

تصور کنید برای صرف غذا به رستوران رفته اید. در این شرایط، شما به آشپزخانه رستوران نمی روید تا غذا مورد نظر خود را آماده کنید، بلکه منتظر آمدن گارسون می مانید تا غذا خود را سفارش دهید.

  • گارسون به نزد شما می آید و شما سفارش خود را ثبت می کنید. گارسون شما را نمی شناسد، تنها جزئیات سفارش غذا شما را ثبت می کند.
  • سپس، گارسون به آشپزخانه می رود؛ اما گارسون غذا را برای شما آماده نمی کند.
  • پس از اینکه گارسون سفارش شما را بهمراه شماره میز به آشپز تحویل داد، آشپز غذا را برای شما آماده می کند.
  • آشپز از مواد اولیه برای طبخ غذا شما استفاده می کند. تصور کنید شما یک ساندویچ سبزیجات سفارش داده اید، پس آشپز مواد مورد نیاز برای غذا شما را از یخچال تهیه می کند.
  • سرانجام آشپز غذا را به گارسون تحویل می دهد و این وظیفه گارسون است که غذا را به بیرون از آشپزخانه منتقل کند.
  • حال گارسون می داند که شما چه غذایی را سفارش داده اید و این غذا چطور سرو می شود.

کامپوننت های MVC در این مثال به شرح زیر هستند :

View = You

Controller = Waiter

Model = Cook

Data = Refrigerator

فریمورک های معمول MVC در وب

برخی فریمورک های معمول در MVC عبارتند از :

  • Ruby on Rails
  • Django
  • CakePHP
  • Yii
  • CherryPy
  • Spring MVC
  • Catalyst
  • Rails
  • Zend Framework
  • CodeIgniter
  • Laravel
  • Fuel PHP
  • Symphony

مزایا فریم ورک MVCدر Asp.NET Core

  • حفظ و نگهداری کدها و همینطور توسع و رشد آنها آسان است.
  • کامپوننت مدل در MVCرا می توان بصورت مجزا از کاربر تست کرد.
  • پشتیبانی آن برای نمونه کلاینت های جدید آسانتر است.
  • توسعه کامپوننت های مختلف می تواند بصورت موازی انجام شود.
  • فریمورک MVC با تقسیم برنامه به سه واحد – Model, View, Controller – به شما کمک می کند که پیچیدگی برنامه را کاهش دهید.
  • این فریمورک تنها از یک قالب Front Controller که درخواست های یک برنامه تحت وب را در یک کنترلر مجزا پردازش می کند استفاده می کند.
  • بهترین پشتیبانی را برای Test-Driven Development ارائه می دهد.
  • برای برنامه های تحت وبی که توسط تیم های بزرگی از طراحان و توسعه دهندگان وب پشتیبانی می شوند، عملکرد خوبی را از خود نشان می دهند.
  • تفکیک مسئولیت ها در این فریمورک بخوبی انجام می شود.
  • با فرایند بهینه سازی موتور جستجوگر (سئو) سازگار است.
  • تمامی کلاس ها و آبجکت ها مستقل از یکدیگر هستند و می توانند بصورت مجزا تست شوند.
  • فریمورک MVC دسته بندی منطقی فعالیت های مرتبط بهم در یک کنترلر را امکانپذیر می سازد.

در یک برنامه MVC نمایش(VIew) ها فقط اطلاعات را نمایش می دهند اما کنترلر(controller ) در تعامل با کاربر می باشد و به ورودی های کاربر واکنش مناسب می دهد. در پنجره Solution Explorer بر روی فولدر Controller راست کلیک کرده و AddNew Item را انتخاب می کنیم.

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

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

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) بر می گرداند.

معماری 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) می باشد.

با تغییر کد می توانیم به صورت پارامتر از 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 به پارامتر های اکشن خود انتقال می دهد.

در عکس بالا بخش [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

این بار از بخش سوم [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 استفاده می کنید.


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

آموزش ASP.NET Core - چرا ASP.NET Core

سلام بر دوستان عزیز و همراه...

امروز با یک مبحث دیگه در زمینه آموزش ASP.NET Core همراه شما هستم، بدون شک دوستانی که در زمینه توسعه اپلیکیشن های تحت وب با استفاده از سی شارپ و فریمورک های NET. فعال هستند، با مفهوم NET. و NET Core. آشنایی دارند، اما بهتر برای دوستانی که آشنایی محدودی با این فریم ورک دارند توضیح مختصری ارائه بدیم.

فریمورک NET. از جمله محصولات مایکروسافت بود که سال ها توسط برنامه نویسان فعال در حوزه تولید اپلیکیشن مورد استفاده قرار می گرفت اما بدلیل برخی محدودیت هایی که برای برنامه نویسان ایجاد می کرد، محبوبیت خود را بویژه در میان Startup ها از دست داد، تا اینکه مایکروسافت با معرفی فریم ورک NET Core. انقلابی جدید ایجاد کرد. فریم ورک NET Core. بصورت محسوسی سبک بود و وجود مزایا دیگری همچون متن باز بودن (Open Source)، چند سکویی بودن (Cross Platform)، ساده، قدرتمند، رایگان و ماژولار بودن باعث شد که این محصول جدید مایکروسافت به سرعت مورد استقبال قرار بگیرد و دوباره مایکروسافت در فضا رقابتی توسعه اپلیکیشن های تحت وب خوش بدرخشد.

علاوه بر این، آموزش ASP.NET Core به شما نشان می دهد که فریم ورک NET Core. تمامی ویژگی های Core که برای راه اندازی یک برنامه NET Core. نیاز است رو شامل میشه. اگر ویژگی دیگری در Core نیاز باشه می توان آن را بوسیله NuGet Packages تامین کرد که در صورت نیاز می تونیم آنها رو به برنامه خود اضافه کنیم. پس برنامه NET Core. می تونه باعث بهبود عملکرد، کاهش حافظه مورد نیاز و آسان شدن حفظ و نگهداری برنامه ساخته شده هم بشه.

خوب اگر از من بپرسید که جواب من به سوال "چرا NET Core." چیه، جواب شما رو با استفاده از دو پاراگراف زیر میدم (این دو پاراگراف برگرفته از مقاله ای هستش که بر اساس مطالب سایت های مختلف آماده کردم) :

استفاده از فریم ورک NET. محدودیت هایی ایجاد می کند که از جمله آنها می توان به موارد زیر اشاره کرد : این فریمورک تنها بر روی پلتفرم ویندوز قابل استفاده است. برای ویندوزهای مختلف، همچون دسکتاپ، استور، تلفن و برنامه های تحت وب باید نمونه های متفاوتی از NET API. را بکار گرفت. علاوه بر این، ساختار فریم ورک NET. بگونه ای است که اگر تغییری در آن ایجاد شود، تمامی برنامه هایی که به آن وابستگی دارند، تحت تاثیر قرار می گیرند.

امروزه، ساخت برنامه ای که بر روی سیستم های مختلف کار کند، برنامه نویسی یک سایت و طراحی آن برای ویندوزهای دسکتاپ و وب، و ساخت برنامه های موبایل، از جمله درخواست های معمول مشتریان است. بنابراین، استفاده از یک فریمورک خاص که سیستم های مختلف را پشتیبانی کند، ضروری است. بهمین دلیل، مایکروسافت NET Core. را معرفی و ارائه کرد. هدف اصلی از معرفی NET Core. این بود که فریم ورک NET. تبدیل به فریمورکی متن باز و کراس پلتفرم (چند سکویی) شود تا قابلیت استفاده بر روی دستگاه های مختلف را داشته باشد.

حالا وقتش رسیده که ویژگی های NET Core. و ضرورت آموزش ASP.NET Core برای دوستان فعال در این حوزه رو بصورت مفصل با همدیگه بررسی و مطالعه کنیم :

1. متن باز بودن فریم ورک NET Core. :

از آنجا که NET Core. فریمورکی متن باز است، بر روی سایت GitHub در دسترس است.

2. ویژگی کراس پلتفرم در فریم ورک NET Core. :

فریم ورک NET Core. را می توان بر روی سیستم های عامل ویندوز، مک و لینوکس اجرا کرد. در هر سیستم عامل، زمان مورد نیاز برای اجرا کد یکسان و خروجی گرفتن از آن متفاوت است.

3. سازگاری با معماری های مختلف در فریم ورک NET Core. :

فریم ورک NET Core. را می توان در معماری های ساختاری مختلف همچون X64، X86 و ARM استفاده کرد و رفتار مشابهی را از آن دریافت کرد.

4. دامنه وسیعی از برنامه ها در MVC Core :

برنامه های بسیاری را می توان بر اساس پلتفرم NET Core. ساخته و راه اندازی کرد. از جمله این برنامه ها می توان به مواردی همچون برنامه های موبایل، برنامه های دسکتاپ، برنامه های تحت وب، برنامه های یادگیری ماشین، مایکرو سرویس ها، بازی و .... اشاره کرد.

5. امکان پشتیبانی از چند زبان در فریمورک NET Core. :

برای توسعه برنامه در Asp.NET Core می توانید از زبان های برنامه نویسی C#، F# و ویژوال بیسیک استفاده کنید. علاوه بر این، می توانید از IDE دلخواه خود، همچون Visual Studio 2017/2019، Visual Studio Code، Sublime Text، Vim و .... استفاده کنید.

6. معماری ماژولار در MVC Core :

فریم ورک NET Core. با استفاده از NuGet Packages از معماری ماژولار پشتیبانی می کند. پکیج های متفاوتی وجود دارد که کاربر آنها را متناسب با نیاز خود به پروژه اضافه می کند. نکته قابل توجه این است که حتی کتابخانه NET Core. نیز بعنوان یک NuGet Package ارائه می شود و این مسئله باعث کاهش فضا اشغال شده از حافظه، بهبود عملکرد و نگهداری آسان پروژه می شود.

7. پیاده سازی CLI در MVC Core :

فریم ورک NET. ابزارهای Command-Line Interface را برای توسعه و یکپارچه سازی برنامه بصورت پیوسته، بکار می گیرد.

8. سازگاری در فریم ورک NET Core. :

با استفاده از بکارگیری .NET Standard Specification با فریمورک NET. و Mono APIs نیز سازگاری دارد.

9. انعطاف پذیری در فریم ورک NET Core. :

برنامه NET Core. می تواند در سطح کاربر یا سیستم یا با کانتینرهای Docker گسترش داده شود.

از اونجایی که دوست ندارم این مطلب رو بصورت ناقص با شما به اشتراک بگذارم، پیکربندی فریم ورک NET Core. رو با استفاده از یک شکل با هم بررسی می کنیم :

آموزش ASP.NET Core

آموزش ASP.NET Core

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