ورود ثبت نام

ورود به حساب کاربری

نام کاربری *
رمز ورود *

ایجاد حساب کاربری

گزینه های * دار الزامی می باشند.
نام *
نام کاربری *
رمز ورود *
تائیدیه رمز ورود *
نشانی پست الکترونیک *
تائیدیه پست الکترونیک *
  • Program

این کلاس که در یک فایل با نام program.cs  تعریف می شود، یک نقطه ورودی برای اجرای برنامه کاربردی را ارائه می نماید. این کلاس دارای تابعی با نام main می باشد که با اجرای آن پیکربندی host انجام می شود. در صورتی که بخواهید تنظیمات خاصی را روی host خود انجام دهید باید این تابع را تغییر دهید. در زیر نمونه این کلاس آمده است:

namespace ConfiguringApps { 
       public class Program { 
           public static void Main(string[] args) {
             var host = new WebHostBuilder()
                 .UseKestrel()
                 .UseContentRoot(Directory.GetCurrentDirectory())
                 .UseIISIntegration()
                 .UseStartup<Startup>()
                 .Build(); 
               host.Run();
         }
     }

Kestrel یک روش جدید طراحی سرور وب مستقل از سکو (cross-platform) در برنامه های کاربردی ASP.NET Core می باشد و زمانیکه شما برنامه core خود را با کمک IIS اجرا می کنید به طور خودکار مورد استفاده قرار می گیرد. دو روش برای اجرای برنامه با استفاده از kestrel وجود دارد. روش اول کلیک روی فلش موجود در طرف راست دکمه IIS Express در نوار ابزار ویژوال استودیو و انتخاب آیتم همنام با نام پروژه است. این کار باعث باز شدن پنجره command prompt و اجرای برنامه با کمک kestrel می شود.

روش دوم باز کردن command prompt در مسیر پوشه حاوی فایلهای پیکربندی برنامه و اجرای دستور dotnet run می باشد.

در این کلاس تابع پیکربندی برنامه نیز اجرا می شود که در قسمت بعد به آن اشاره می شود.

 

  • Startup

    ASP.NET Core از یک کلاس سی شارپ به نام startup برای پیکربندی برنامه استفاده می نماید. این کلاس در فایلی به نام Startup.cs تعریف می شود که درمسیر ریشه برنامه قرار می گیرد.در قطعه کد زیر نمونه ای از این کلاس آمده است:

using Microsoft.AspNetCore.Builder; 
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging; 
   namespace ConfiguringApps { 
       public class Startup { 
public class Startup { 
           public void ConfigureServices(IServiceCollection services) {
              services.AddMvc(); 
         } 
           public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                 ILoggerFactory loggerFactory) { 
                app.UseMvc(); 
         }
     }
     }
 }

در این کلاس دو تابع ConfigureServices و Configure تعریف شده اند که در آنها ویژگیهای مشترک مورد نیاز یک برنامه و همچنین نحوه استفاده ASP.NET از آنها تعریف می شوند. زمانیکه یک برنامه شروع به اجرا می کند، ASP.NET یک نمونه جدید از کلاس startup را ایجاد کرده و متد  ConfigureServices آنرا فراخوانی می نماید که اینکار باعث می شود برنامه بتواند سرویسهای خود را ایجاد کند. سرویسها در حقیقت اشیائی هستند که باعث دسترسی به عملیات سایر قسمتهای برنامه می شود. بعد از اینکه سرویسها ایجاد شدند ASP.NET متد Configure را فراخوانی می کند. هدف از اجرای این متد نصب خط درخواست (request pipeline) که شامل مجموعه ای از کامپوننتهایی است که به عنوان middleware شناخته می شوند. این کامپوننتها برای مدیرت درخواستهای HTTP و تولید پاسخ برای آنها بکار می روند. شکل زیر روند اجرای کلاس startup را نشان می دهد:

StartupClass

  • سرویس ها

    ASP.NET متد Startup.ConfigureServices را فراخوانی می کند تا برنامه قادر باشد در آن سرویسهای مورد نیاز خود را نصب نماید. طبق تعریف مایکروسافت اصطلاح سرویس به هر شیئی که دسترسی عملیاتی به دیگر قسمتهای برنامه را فراهم کند اطلاق می شود.این تعریف مقداری ابهام دارد و در حقیقت سرویس هر چیزی که برنامه شما برای اجرا به آن نیاز دارد را انجام می دهد. برای مثال اگر ما بخواهیم کلاسی مانند آنچه در قطعه کد زیر آمده است را در برنامه داشته باشیم تا زمان شروع به کار برنامه را هنگام اجرای آن داشته باشیم به این صورت عمل می نماییم:

    using System.Diagnostics; 
       namespace ConfiguringApps.Infrastructure { 
           public class UptimeService {
             private Stopwatch timer; 
               public UptimeService() {
                 timer = Stopwatch.StartNew();
             } 
               public long Uptime => timer.ElapsedMilliseconds;
         }
     }
    ​

    و تابع ConfigureServices به این صورت خواهد بود:

    public void ConfigureServices(IServiceCollection services) {
                  services.AddSingleton<UptimeService>(); 
                 services.AddMvc();
             } 
    

    عبارت AddSingleton در ثبت سرویس UptimeService به این معناست که یک شیء ساده (single) در سراسر برنامه بین کلیه قسمتهای آن به اشتراک گذاشته می شود و فقط یک instance از آن ساخته می شود. با ثبت سرویس در این متد، با استفاده از مفهوم Dependency Injection یا همان تزریق وابستگی می توان آن را در کنترلرهای برنامه استفاده نمود.نمونه استفاده از این سرویس بوسیله این تکنیک در زیر آمده است:

    using System.Collections.Generic; 
     using Microsoft.AspNetCore.Mvc;
      using ConfiguringApps.Infrastructure;  
       namespace ConfiguringApps.Controllers { 
           public class HomeController : Controller {
              private UptimeService uptime;  
                public HomeController(UptimeService up) { 
                  uptime = up; 
              }  
    public ViewResult Index()
                 => View(new Dictionary<string, string> {
                     ["Message"] = "This is the Index action",
                      ["Uptime"] = $"{uptime.Uptime}ms" 
                 });
         }
    ​

    زمانیکه MVC نیاز به یک نمونه از کنترلر Home جهت انجام درخواست HTTP  رسیده از طرف کلاینت دارد تابع سازنده کنترلر را صدا می زند و تشخیص می دهد که نیاز به سرویس UptimeService دارد. در این لحظه MVC به سراغ کلاس startup رفته و این سرویس را پیدا می کند که به صورت single برای کلیه درخواستها تعریف شده است به همین دلیل نمونه ساخته شده و موجود آن را به سازنده کنترلر پاس می دهد. و در کنترلر تابع  Uptime سرویس UptimeService  مورد استفاده قرار می گیرد که زمان شروع به کار برنامه را به میلی ثانیه ارائه می کند. با هر بار استفاده این سرویس در هر کنترلری این تابه همان مقدار را بر می گرداند زیرا همانطور که گفته شد سرویس از نوع single می باشد. سرویس دیگر استفاده شده در startup  ، MVC می باشد که با  دستور services.AddMvc(); به برنامه اضافه شده است و با کمک آن تمامی توابع مورد نیاز در برنامه برای ساخت و توسعه آن به صورت single در اختیار برنامه قرار می گیرد.

  • Middleware ها

    کامپوننتهایی هستند که با ترکیب یکدیگر pipeline تقاضا را می سازند. request pipeline یک زنجیره ای است از کامپوننتها و زمانی که یک درخواست به برنامه می رسد به اولین حلقه از این زنجیره تحویل داده می شود.این حلقه اول یا به عبارت دیگر این کامپوننت اول تصمیم می گیرد که پاسخ مورد نیاز درخواست را تولید و ارسال کند و یا آنرا به کامپوننت بعدی در زنجیره تحویل دهد. شکل زیر این مورد را بهتر بیان می کند:

    midleware
  • برای مثال کامپوننت های MVC در متد Configure با کمک دستور app.UseMvc(); در برنامه مورد استفاده قرار گرفته است. این متد تمامی کامپوننتهای موجود در MVC middleware را  همراه با پیکربندی مسیریابی به برنامه اضافه می نماید. قطعه کد زیر نمونه پیش فرض این تنظیم را نشان می دهد:

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

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید