ตัวกรองการดำเนินการใน MVC [ประเภทของตัวกรองพร้อมตัวอย่าง]
เผยแพร่แล้ว: 2021-03-04สารบัญ
ASP.NET MVC – ตัวกรองการดำเนินการ
ในตัวกรอง MVC (Model-View-Controller) เราใช้ตรรกะเพิ่มเติมตามฟังก์ชันการทำงานหรือตรรกะที่แตกต่างกันจากการประมวลผลคำขอ MVC Framework
ตัวกรอง MVC ใช้กระบวนการในระดับต่างๆ เช่น การอนุญาต การบันทึก และการแคช
เราสามารถพิจารณาตัวกรองการกระทำเป็นแอตทริบิวต์ที่เราสามารถนำมาใช้กับวิธีการดำเนินการของผู้ควบคุมเพื่อทำการปรับเปลี่ยนตามตรรกะทางธุรกิจ
เราสามารถพิจารณาตัวกรอง MVC จากระบบได้ แอตทริบิวต์ถูกกำหนดเป็นคลาส เมธอด คุณสมบัติ และฟิลด์
อ่านเพิ่มเติม: โครงการ MVC
ASP.NET MVC Framework รวมตัวกรองการดำเนินการต่างๆ
อนุญาต : ตัวกรองการดำเนินการนี้มีความสามารถในการจำกัดการเข้าถึงบทบาทผู้ใช้เฉพาะ
OutputCache : เป็นตัวกรองการดำเนินการ และแคชผลลัพธ์ของวิธีการดำเนินการของตัวควบคุมในเวลาที่กำหนด
HandleError : เมื่อการดำเนินการควบคุมนี้ดำเนินการ จะจัดการข้อผิดพลาดในสถานการณ์เฉพาะหากโค้ดล้มเหลว ช่วยให้คุณสร้างตัวกรองการดำเนินการที่กำหนดเองได้
ตัวอย่างเช่น เราสามารถสร้างตัวกรองการดำเนินการแบบกำหนดเองเพื่อดำเนินการระบบการตรวจสอบสิทธิ์แบบกำหนดเอง
แหล่งที่มา
กรองไปป์ไลน์ในคำขอและโฟลว์วงจรชีวิตการตอบสนอง:
แหล่งที่มา
ตัวกรองให้สองประเภทของการใช้ตรรกะในโค้ด มันดำเนินการนิยามอินเทอร์เฟซที่แตกต่างกัน-
- ซิงโครนัส
- อะซิงโครนัส
ตัวกรองซิงโครนัส
ในตัวกรองการซิงโครไนซ์ เราสามารถเรียกใช้โค้ดก่อนและหลังไปป์ไลน์เมื่อประมวลผล เราสามารถพิจารณาว่าเป็น วิธีการดำเนินการ 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()
{
กลับดู ();
}
ตัวกรองการกระทำ
เราสามารถอธิบายตัวกรองการดำเนินการก่อนดำเนินการวิธีดำเนินการและหลังวิธีดำเนินการ
มันมีวิธีการสองประเภท
- OnActionExecuted
- 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);
}
ตัวกรองผลลัพธ์
เราสามารถอธิบายตัวกรองการดำเนินการก่อนดำเนินการตามวิธีดำเนินการและหลังจากดำเนินการตามวิธีการดำเนินการแล้ว
มันมีวิธีการสองประเภท
- OnResultดำเนินการ
- 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 ใช้พอยน์เตอร์เพื่อส่งผ่านค่าและรับค่าจากฟังก์ชัน พอยน์เตอร์ใช้เพื่อจัดสรรพื้นที่หน่วยความจำแบบไดนามิก