Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การใช้ส่วนขยายแผนที่ในขณะที่เพิ่มมิดเดิลแวร์ไปยังไปป์ไลน์ C # ASP.NET Core คืออะไร


มิดเดิลแวร์คือส่วนประกอบซอฟต์แวร์ที่ประกอบเป็นไปป์ไลน์แอปพลิเคชันเพื่อจัดการคำขอและการตอบกลับ

แต่ละองค์ประกอบจะเลือกว่าจะส่งคำขอไปยังส่วนประกอบถัดไปในไปป์ไลน์หรือไม่ และสามารถดำเนินการบางอย่างก่อนและหลังการเรียกใช้ส่วนประกอบถัดไปในไปป์ไลน์

ส่วนขยายแผนที่ใช้เป็นแบบแผนสำหรับการแยกไปป์ไลน์

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

ในตัวอย่างต่อไปนี้ คำขอใดๆ ที่มีพาธฐานของ /maptest จะได้รับการจัดการโดยไปป์ไลน์ที่กำหนดค่าในเมธอด HandleMapTest

ตัวอย่าง

private static void HandleMapTest(IApplicationBuilder app){
   app.Run(async context =>{
      await context.Response.WriteAsync("Map Test Successful");
   });
}
public void ConfigureMapping(IApplicationBuilder app){
   app.Map("/maptest", HandleMapTest);
}

นอกเหนือจากการแมปตามพาธแล้ว เมธอด MapWhen ยังสนับสนุนการแตกแขนงมิดเดิลแวร์แบบเพรดิเคต ทำให้สามารถสร้างไพพ์ไลน์แยกกันได้อย่างยืดหยุ่นมาก

สามารถใช้เพรดิเคตประเภท Func เพื่อจับคู่คำขอกับสาขาใหม่ของไปป์ไลน์ได้

private static void HandleBranch(IApplicationBuilder app){
   app.Run(async context =>{
      await context.Response.WriteAsync("Branch used.");
   });
}
public void ConfigureMapWhen(IApplicationBuilder app){
   app.MapWhen(context => {
      return context.Request.Query.ContainsKey("branch");
   }, HandleBranch);
      app.Run(async context =>{
         await context.Response.WriteAsync("Hello from " + _environment);
   });
}

แผนที่ยังสามารถซ้อนกันได้

app.Map("/level1", level1App => {
   level1App.Map("/level2a", level2AApp => {
      // "/level1/level2a"
      //...
   });
   level1App.Map("/level2b", level2BApp => {
      // "/level1/level2b"
      //...
   });
});