مقالات اپلیکیشن

شرح مقالات اپلیکیشن

مقالات اپلیکیشن

شرح مقالات اپلیکیشن

درک نحوه اجرا، استفاده و Map Method

()app.Run

این کامپوننت middleware می تواند طراحی اپلیکیشن در مشهد متدهایRun[Middleware] ها را که در انتهای خط لوله اعمال می‌شوند، نماد دهد. به طورکلی، تحت عنوان یک terminal middleware کار می نماید و در انتهای فرایند پردازش درخواست ((request  pipeline اضافه می گردد، چون نمی تواند middleware آینده را فراخوانی نماید.

()app.Use

app.Use() برای تنظیمات multiple middleware استعمال می گردد. مغایر ()app.Run، ما خواهیم توانست پارامتر آتی را درآن قراردهیم، که درخواست delegate آینده را در pipeline فراخوانی می نماید. ما همینطور می‌توانیم pipeline را با فراخوانی نکردن پارامتربعدی، اتصال کوتاه (terminate) کنیم.

نمونه زیربا app.Use() وapp.Run() را پژوهش نمایید وهمچنین output/response را ملاحظه کنید:


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.Use(async (context, next) =>
{
await context.Response.WriteAsync(\"Before Invoke from 1st app.Use()\\n\");
await next();
await context.Response.WriteAsync(\"After Invoke from 1st app.Use()\\n\");
});

app.Use(async (context, next) =>
{
await context.Response.WriteAsync(\"Before Invoke from 2nd app.Use()\\n\");
await next();
await context.Response.WriteAsync(\"After Invoke from 2nd app.Use()\\n\");
});

app.Run(async (context) =>
{
await context.Response.WriteAsync(\"Hello from 1st app.Run()\\n\");
});

// the following will never be executed
app.Run(async (context) =>
{
await context.Response.WriteAsync(\"Hello from 2nd app.Run()\\n\");
});
}

اولی app.Run()،pipeline  را خاتمه میدهد. دراین نمونه، تنها delegate اولیه  (“Hello from 1st app.Run()”) انجام میگردد و request هیچوقت به Run method دوم نمی‌رسد.

()app.Map

این اکستنشن ها تحت عنوان قراردادی برای سیستم چندخطی pipeline به کارگیری میشوند. map پروسه پردازش درخواست را براساس مسیر درخواست بسط میدهد. در‌صورتی‌که مسیر درخواست با مسیر داده گردیده آغاز گردد، شاخه تازه ازMiddleware ها انجام گردد. در واقعیت شما می‌توانید پروسه پردازش درخواست را به چندین شاخه تقسیم نمائید که مبنی بر مسیر درخواست، هر کدام از این شاخه ها ممکن میباشد جاری ساختن شوند.

نمونه پایین را با app.Map() رسیدگی نمائید وهمچنین output/response را ملاحظه کنید:


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.Map(\"/m1\", HandleMapOne);
app.Map(\"/m2\", appMap => {
appMap.Run(async context =>
{
await context.Response.WriteAsync(\"Hello from 2nd app.Map()\");
});
});
app.Run(async (context) =>
{
await context.Response.WriteAsync(\"Hello from app.Run()\");
});
}
private static void HandleMapOne(IApplicationBuilder app)
{
app.Run(async context =>
{
await context.Response.WriteAsync(\"Hello from 1st app.Map()\");
});
}
جدول ذیل درخواست ها و جواب های localhost را با به کارگیری از کد بالا آرم میدهد.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد