ตัวกรองการดำเนินการใน MVC [ประเภทของตัวกรองพร้อมตัวอย่าง]

เผยแพร่แล้ว: 2021-03-04

สารบัญ

ASP.NET MVC – ตัวกรองการดำเนินการ

ในตัวกรอง MVC (Model-View-Controller) เราใช้ตรรกะเพิ่มเติมตามฟังก์ชันการทำงานหรือตรรกะที่แตกต่างกันจากการประมวลผลคำขอ MVC Framework

ตัวกรอง MVC ใช้กระบวนการในระดับต่างๆ เช่น การอนุญาต การบันทึก และการแคช

เราสามารถพิจารณาตัวกรองการกระทำเป็นแอตทริบิวต์ที่เราสามารถนำมาใช้กับวิธีการดำเนินการของผู้ควบคุมเพื่อทำการปรับเปลี่ยนตามตรรกะทางธุรกิจ

เราสามารถพิจารณาตัวกรอง MVC จากระบบได้ แอตทริบิวต์ถูกกำหนดเป็นคลาส เมธอด คุณสมบัติ และฟิลด์

อ่านเพิ่มเติม: โครงการ MVC

ASP.NET MVC Framework รวมตัวกรองการดำเนินการต่างๆ

อนุญาต : ตัวกรองการดำเนินการนี้มีความสามารถในการจำกัดการเข้าถึงบทบาทผู้ใช้เฉพาะ

OutputCache : เป็นตัวกรองการดำเนินการ และแคชผลลัพธ์ของวิธีการดำเนินการของตัวควบคุมในเวลาที่กำหนด

HandleError : เมื่อการดำเนินการควบคุมนี้ดำเนินการ จะจัดการข้อผิดพลาดในสถานการณ์เฉพาะหากโค้ดล้มเหลว ช่วยให้คุณสร้างตัวกรองการดำเนินการที่กำหนดเองได้

ตัวอย่างเช่น เราสามารถสร้างตัวกรองการดำเนินการแบบกำหนดเองเพื่อดำเนินการระบบการตรวจสอบสิทธิ์แบบกำหนดเอง

แหล่งที่มา

กรองไปป์ไลน์ในคำขอและโฟลว์วงจรชีวิตการตอบสนอง:

แหล่งที่มา

ตัวกรองให้สองประเภทของการใช้ตรรกะในโค้ด มันดำเนินการนิยามอินเทอร์เฟซที่แตกต่างกัน-

  1. ซิงโครนัส
  2. อะซิงโครนัส

ตัวกรองซิงโครนัส

ในตัวกรองการซิงโครไนซ์ เราสามารถเรียกใช้โค้ดก่อนและหลังไปป์ไลน์เมื่อประมวลผล เราสามารถพิจารณาว่าเป็น วิธีการดำเนินการ OnStageExecuting และ OnStageExecuted

ตัวกรองแบบอะซิงโครนัส

ตัวกรองแบบอะซิงโครนัสอธิบายด้วยวิธีเดียว ซึ่งมีวิธีการของ

  • OnActionExecuting
  • OnActionExecuted
  • OnActionExecutionAsync

ข้อมูลโค้ดด้านล่าง เป็นประเภทของการประกาศ

TimestampFilter คลาสสาธารณะ: IActionFilter, IAsyncActionFilter

{

โมฆะสาธารณะ OnActionExecuting (บริบท ActionExecutingContext)

{

Context.ActionDescriptor.RouteValues[“ประทับเวลา”] = DateTime.Now.ToString ();

}

โมฆะสาธารณะ OnActionExecuted (บริบท ActionExecutedContext)

{

var ts = DateTime.Parse(context.ActionDescriptor. RouteValues[“ประทับเวลา”]).AddHours(1).ToString();

Context.HttpContext.Response.Headers[“X-EXPIRY-TIMESTAMP”] = ts;

}

งาน async สาธารณะ OnActionExecutionAsync (บริบท ActionExecutingContext, ActionExecutionDelegate ถัดไป)

{

this.OnActionExecuting(บริบท);

var resultContext = รอต่อไป ();

this.OnActionExecuted(resultContext);

}

}

ประเภทของตัวกรองการกระทำใน MVC

กรอบงาน ASP.NET MVC รักษาตัวกรองต่างๆ:

ตัวกรองการอนุญาต: ดำเนินการแอตทริบิวต์ IAuthorisationFilter

ตัวกรองการดำเนินการ: ดำเนินการแอตทริบิวต์ IActionFilter

ตัวกรองผลลัพธ์ : ดำเนินการแอตทริบิวต์ IResultFilter

ตัวกรองข้อยกเว้น: ดำเนินการแอตทริบิวต์ IExceptionFilter

ตัวกรองการอนุญาต

เราสามารถใช้เพื่อการเข้าถึงของผู้ใช้ และเราสามารถประกาศก่อนที่จะดำเนินการตามวิธีการดำเนินการในตัวควบคุม

ตัวกรองการอนุญาตเปิดใช้งานสองแอตทริบิวต์ในตัว ตัวอย่างเช่น: Authorize และ AllowAnonymous

เราสามารถใช้สิ่งเหล่านี้ในตรรกะที่กำหนดเองในโค้ดได้ตามความต้องการทางธุรกิจของเรา

ข้อมูลโค้ดด้านล่างเป็นตัวอย่างของตัวกรองการอนุญาต

[อนุญาต]

สาธารณะ ActionResult SecureMethod()

{

กลับดู ();

}

[อนุญาตไม่ระบุชื่อ]

ผลการดำเนินการสาธารณะ NonSecureMethod()

{

กลับดู ();

}

สาธารณะ ActionResult SecureMethod()

{

กลับดู ();

}

ตัวกรองการกระทำ

เราสามารถอธิบายตัวกรองการดำเนินการก่อนดำเนินการวิธีดำเนินการและหลังวิธีดำเนินการ

มันมีวิธีการสองประเภท

  1. OnActionExecuted
  2. OnActionExecuting

ข้อมูลโค้ดด้านล่างเป็นตัวอย่างของ Action Filters

การใช้ระบบ

ใช้ System.Collections.Generic;

ใช้ System.Linq;

ใช้ System.Web;

ใช้ System.Web.Mvc;

เนมสเปซ TutorialActionFilter.Filters

{

Myactionfilter คลาสสาธารณะ : FilterAttribute,IActionFilter

{

โมฆะสาธารณะ OnActionExecuted (ActionExecutedContext filterContext)

{

ถ้า (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult (“/Home/Index”);

}

อื่น

{

filterContext.Result = newRedirectResult (“/เข้าสู่ระบบ / เข้าสู่ระบบ”);

}

}

โมฆะสาธารณะ OnActionExecuting (ActionExecutingContext filterContext)

{

ถ้า (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult (“/Home/ Index”);

}

อื่น

{

filterContext.Result = newRedirectResult (“/เข้าสู่ระบบ / เข้าสู่ระบบ”);

}

}

}

}

[TutorialActionFilter]

[AcceptVerbs(HttpVerbs.Get)]

สาธารณะ ActionResult GetPerson()

{

คน p = คนใหม่ ();

กลับดู("บุคคล",p);

}

ตัวกรองผลลัพธ์

เราสามารถอธิบายตัวกรองการดำเนินการก่อนดำเนินการตามวิธีดำเนินการและหลังจากดำเนินการตามวิธีการดำเนินการแล้ว

มันมีวิธีการสองประเภท

  1. OnResultดำเนินการ
  2. OnResultExecuting

ข้อมูลโค้ดด้านล่างเป็นตัวอย่างของตัวกรองผลลัพธ์

การใช้ระบบ

ใช้ System.Collections.Generic;

ใช้ System.Linq;

ใช้ System.Web;

ใช้ System.Web.Mvc;

เนมสเปซ ResultFilter.Filters

{

คลาสสาธารณะ MyResultfilter : FilterAttribute,IResultFilter

{

โมฆะสาธารณะ OnResultExecuted (ResultExecutedContext filterContext)

{

ถ้า (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult (“/Home/Contact”);

}

อื่น

{

filterContext.Result = newRedirectResult (“/เข้าสู่ระบบ/เข้าสู่ระบบ”);

}

}

โมฆะสาธารณะ OnResultExecuting (ResultExecutingContext filterContext)

{

ถ้า (filterContext.HttpContext.Session[“UserID”] != null)

{

filterContext.Result = newRedirectResult (“/Home/Contact”);

}

อื่น

{

filterContext.Result = newRedirectResult (“/เข้าสู่ระบบ/เข้าสู่ระบบ”);

}

}

}

}

[ตัวกรองผลลัพธ์ของฉัน]

[AcceptVerbs(HttpVerbs.Get)]

สาธารณะ ActionResult GetPerson()

{

คน p = newPerson ();

กลับดู("บุคคล",p);

}

ตัวกรองข้อยกเว้น

เราสามารถใช้สิ่งเหล่านี้เมื่อตัวควบคุมหรือวิธีการดำเนินการส่งข้อยกเว้น

ตัวกรองข้อยกเว้นนี้มีความสำคัญต่อการตรวจจับข้อยกเว้น

ด้านล่างนี้คือข้อมูลโค้ดสำหรับใช้ตัวกรองข้อยกเว้น

การใช้ระบบ

ใช้ System.Collections.Generic;

ใช้ System.Linq;

ใช้ System.Web;

ใช้ System.Web.Mvc;

เนมสเปซ ExceptionFilter.Filters

{

MyExceptionFilter คลาสสาธารณะ: FilterAttribute, IExceptionFilter

{

โมฆะสาธารณะ OnException (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = “เรียกตัวกรอง ExceptionFilter”;

filterContext.HttpContext.Response.Write (“ตัวกรอง ExceptionFilter เรียกว่า”);

}

}

}

[MyExceptionFilter]

HomeController คลาสสาธารณะ: Controller

{

[AcceptVerbs(HttpVerbs.Get)]

สาธารณะ ActionResult GetPerson()

{

คน p = newPerson ();

กลับดู("บุคคล",p);

}

}

อ่านเพิ่มเติม: โครงการ Java MVC

เรียนรู้ หลักสูตรซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

บทสรุป

เราหวังว่าบทความนี้จะช่วยให้คุณเข้าใจตัวกรองการดำเนินการใน MVC

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาแบบฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์แบบฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และ การมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่นำไปปฏิบัติจริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ

โครงสร้างข้อมูลในการเขียนโปรแกรมคืออะไร?

โครงสร้างข้อมูลเป็นวิธีที่เราจัดเรียงข้อมูลในโปรแกรม โครงสร้างข้อมูลที่สำคัญที่สุดสองโครงสร้างคืออาร์เรย์และรายการที่เชื่อมโยง อาร์เรย์เป็นโครงสร้างข้อมูลที่คุ้นเคยมากที่สุด และเข้าใจง่ายที่สุด โดยทั่วไปอาร์เรย์จะเป็นรายการที่มีหมายเลขของรายการที่เกี่ยวข้องกัน ง่ายต่อการเข้าใจและใช้งาน แต่ไม่มีประสิทธิภาพมากเมื่อทำงานกับข้อมูลจำนวนมาก รายการที่เชื่อมโยงนั้นซับซ้อนกว่า แต่อาจมีประสิทธิภาพมากหากใช้อย่างเหมาะสม เป็นตัวเลือกที่ดีเมื่อคุณต้องเพิ่มหรือลบรายการที่อยู่ตรงกลางรายการขนาดใหญ่ หรือเมื่อคุณต้องการค้นหารายการในรายการขนาดใหญ่

รายการที่เชื่อมโยงและอาร์เรย์ต่างกันอย่างไร

ในอาร์เรย์ ดัชนีใช้เพื่อเข้าถึงองค์ประกอบ องค์ประกอบในอาร์เรย์ได้รับการจัดระเบียบตามลำดับ ซึ่งทำให้ง่ายต่อการเข้าถึงและแก้ไของค์ประกอบหากใช้ดัชนี อาร์เรย์ยังมีขนาดคงที่ องค์ประกอบจะได้รับการจัดสรรในขณะที่สร้าง ในรายการที่เชื่อมโยง ตัวชี้ถูกใช้เพื่อเข้าถึงองค์ประกอบ องค์ประกอบของรายการที่เชื่อมโยงไม่จำเป็นต้องจัดเก็บในลำดับที่ต่อเนื่องกัน รายการที่เชื่อมโยงมีขนาดที่ไม่รู้จักเนื่องจากสามารถมีโหนดได้ในขณะที่สร้าง ตัวชี้ถูกใช้เพื่อเข้าถึงองค์ประกอบ ดังนั้นการจัดสรรหน่วยความจำจึงง่ายขึ้น

ตัวชี้ใน C คืออะไร?

ตัวชี้เป็นชนิดข้อมูลในภาษา C ซึ่งเก็บที่อยู่ของตัวแปรหรือฟังก์ชันใดๆ โดยทั่วไปจะใช้เป็นข้อมูลอ้างอิงไปยังตำแหน่งหน่วยความจำอื่น ตัวชี้สามารถเก็บที่อยู่หน่วยความจำของอาร์เรย์ โครงสร้าง ฟังก์ชัน หรือประเภทอื่นๆ C ใช้พอยน์เตอร์เพื่อส่งผ่านค่าและรับค่าจากฟังก์ชัน พอยน์เตอร์ใช้เพื่อจัดสรรพื้นที่หน่วยความจำแบบไดนามิก