จะอธิบาย Katana และ OWIN ด้วยคำพูดและการใช้งานอย่างไร


337

ฉันได้อ่านบทความมากมายเกี่ยวกับโครงการของ OWIN และ Katana แต่ฉันไม่สามารถรับภาพรวมทั้งหมดได้

สำหรับนักพัฒนาเว็บปกติที่ใช้ ASP.NET:

  1. OWIN คืออะไรกันแน่และมันแก้ปัญหาอะไรได้บ้าง IIS เกี่ยวข้องกับอะไร?
  2. OWIN แทนที่ IIS หรือไม่ ถ้าไม่เป็นเช่นนั้น OWIN จะเหมาะสมที่สุดในสถานการณ์ใด
  3. OWIN จะช่วยฉันในโครงการทำงานประจำวันได้อย่างไร
  4. OWIN จะช่วยฉันในโครงการพัฒนาตนเองได้อย่างไร

คุณอาจพิจารณาเปลี่ยนคำตอบที่ยอมรับได้เนื่องจากกระสุนปืนบางส่วนไม่ถูกต้องจริงๆ - กำลังทำให้เข้าใจผิด
Admir Tuzović

3
หนังสือของฉันบน ASP.net แนะนำให้ใช้ Identity และคลาส UserManager ผ่าน OWIN และฉันไม่เห็นประเด็น มันทำให้ฉันสับสนอย่างสิ้นเชิง ...
ลุค

คำตอบ:


409

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

ก่อนหน้า OWIN เมื่อสร้างแอปพลิเคชัน ASP.NET คุณผูกพันกับ IIS อย่างแท้จริงเนื่องจากการพึ่งพาอย่างมากในSystem.Webแอสเซมบลี

System.Web เป็นสิ่งที่มีอยู่นับตั้งแต่ ASP (ไม่ใช่. NET version) และภายในมีหลายสิ่งที่คุณอาจไม่จำเป็นต้องใช้ (เช่นแบบฟอร์มบนเว็บหรือการอนุญาต URL) ซึ่งโดยค่าเริ่มต้นทั้งหมดทำงานในทุกคำขอทำให้ใช้ทรัพยากรและ ASP แอ็พพลิเคชัน. NET ในล็อตทั่วไปช้ากว่าคู่ของมันเช่น Node.js เป็นต้น

OWIN เองไม่มีเครื่องมือไลบรารีหรือสิ่งอื่นใด มันเป็นเพียงสเปค

Katana เป็นอีกหนึ่งเฟรมเวิร์กที่ได้รับการพัฒนาอย่างเต็มที่เพื่อสร้างสะพานเชื่อมระหว่างเฟรมเวิร์ก ASP.NET ปัจจุบันและข้อกำหนด OWIN ในขณะนี้ Katana ประสบความสำเร็จในการปรับกรอบ ASP.NET ต่อไปนี้เป็น OWIN:

  • เว็บ API
  • สัญญาณ R

ASP.NET MVC และเว็บฟอร์มยังคงทำงานโดยเฉพาะผ่านทาง System.Web และในระยะยาวจะมีแผนการแยกออกมาเช่นกัน

ในทางกลับกัน IIS เป็นโฮสต์ที่ดีและมีประโยชน์สำหรับเว็บเซิร์ฟเวอร์ ปัญหาประสิทธิภาพการทำงาน ASP.NET ทั้งหมดที่ใช้ IIS มีรากลึกSystem.Webเท่านั้น จนถึงเมื่อเร็ว ๆ นี้เมื่อตัดสินใจว่าจะโฮสต์เว็บเซิร์ฟเวอร์ของคุณอย่างไรคุณมีสองตัวเลือกดังนี้

  • IIS
  • โฮสต์เอง

ดังนั้นหากคุณต้องการประสิทธิภาพคุณจะต้องเลือกโฮสต์ด้วยตนเอง หากคุณต้องการฟีเจอร์ที่หลากหลายที่ IIS จัดเตรียมไว้ให้คุณจะต้องใช้ IIS แต่ประสิทธิภาพจะลดลง

ขณะนี้มีตัวเลือกที่ 3 คือไลบรารี Microsoft ชื่อHelios (ชื่อรหัสปัจจุบัน) ซึ่งต้องการลบSystem.Webออกไปและให้คุณใช้ IIS ในวิธีที่ "สะอาดกว่า" โดยไม่ต้องมีไลบรารีหรือโมดูลที่ไม่จำเป็น ขณะนี้ Helios อยู่ในรุ่นก่อนวางจำหน่ายและกำลังรอผลตอบรับจากชุมชนเพิ่มเติมเพื่อให้สามารถรองรับผลิตภัณฑ์ Microsoft ได้อย่างเต็มที่

หวังว่าคำอธิบายนี้จะอธิบายสิ่งที่ดีกว่าสำหรับคุณ

แก้ไข (ก.ย. 2014):

ด้วย ASP.NET vNext ที่กำลังอยู่ในระหว่างการพัฒนา Katana กำลังจะเกษียณอย่างช้าๆ เวอร์ชั่น 3.0 น่าจะเป็นรุ่นสุดท้ายของ Katana ในฐานะเฟรมเวิร์กแบบสแตนด์อโลน

อย่างไรก็ตามแนวคิดทั้งหมดที่นำมาใช้กับ Katana ได้ถูกรวมเข้ากับ ASP.NET vNext ซึ่งหมายความว่ารูปแบบการเขียนโปรแกรมจะเหมือนกันมาก อ้างอิงจากฟอรั่มโพสต์โดย David Fowler (สถาปนิกของ ASP.NET vNext):

v ถัดไปเป็นตัวตายตัวแทนของ Katana (ซึ่งเป็นสาเหตุที่ทำให้ดูคล้ายกันมาก) Katana เป็นจุดเริ่มต้นของการหยุดพักจาก System.Web และส่วนประกอบแบบแยกส่วนเพิ่มเติมสำหรับเว็บสแต็ก คุณสามารถเห็น vNext เป็นการทำงานที่ต่อเนื่อง แต่จะไปไกลกว่านี้ (CLR ใหม่, ระบบโครงการใหม่, abstract abstract http ใหม่)

ทุกสิ่งที่มีอยู่ใน Katana วันนี้จะทำให้มันกลายเป็น vNext

แก้ไข (ก.พ. 2558):

ASP.NET vNext เป็นที่รู้จักกันในชื่อ ASP.NET 5 และจะถูกสร้างขึ้นบน. NET Core 5. NET Core 5 เป็น. NET Framework รุ่นที่มีน้ำหนักเบาซึ่งออกแบบมาเพื่อรองรับเป้าหมายของ ASP.NET 5 และ. NET Native . อย่างไรก็ตาม ASP.NET 5 จะได้รับการสนับสนุนโดย. NET Framework 4.6 เช่นกันซึ่งน่าจะมีอยู่พร้อมกับ. NET Core 5 ทั้ง ASP.NET 5 และ. NET Core 5 จะได้รับอนุญาตภายใต้ MIT และจะยอมรับการมีส่วนร่วมของชุมชน

แก้ไข (พฤษภาคม 2558):

นอกจากนี้แบรนด์เว็บ ASP.NET API จะถูกยกเลิก แต่เทคโนโลยีก็จะเป็นฐานใหม่ ASP.NET MVC 6. ก่อนหน้ารุ่น ASP.NET MVC ถูกสร้างขึ้นโดยการใช้ IHttpHandler, System.Webอินเตอร์เฟซที่กำหนดไว้ใน ASP.NET MVC 6 จะลบการอ้างอิงนั้นออกทำให้พกพาไปยังแพลตฟอร์มและเว็บเซิร์ฟเวอร์ต่างๆ

แก้ไข (พฤษภาคม 2559):

ASP.NET 5 จะถูกเปลี่ยนชื่อเป็น ASP.NET Core อย่างเป็นทางการโดยเริ่มต้นจาก Release Candidate 2 ที่มีกำหนดจะวางจำหน่ายเร็ว ๆ นี้ เช่นเดียวกันจะใช้กับ Entity Framework 7 ซึ่งจะถูกเปลี่ยนชื่อเป็น Entity Framework Core ข้อมูลเพิ่มเติมเกี่ยวกับการประกาศอย่างเป็นทางการและเหตุผลที่อยู่ในโพสต์บล็อกของ Scott Hanselman: ASP.NET 5 is Dead - แนะนำ ASP.NET Core 1.0 และ. NET Core 1.0

แก้ไข (พฤษภาคม 2559):

ด้วยการเปิดตัว Release Candidate 2, ASP.NET หลักได้รับการแก้ไขเพื่อให้อนาคตปพลิเคชันเว็บเป็นจริงเพียง .NET หลักคอนโซลปพลิเคชันการตั้งค่าในการประมวลผลการร้องขอ แนวคิดนี้ทำให้ ASP.NET Core สอดคล้องกับแนวทางของ Microsoft มากขึ้นด้วยการสนับสนุนสถาปัตยกรรมไมโครไซต์และการนำไปใช้ผ่าน Azure Service Fabric ข้อมูลเพิ่มเติมเกี่ยวกับสามารถพบได้ในโพสต์บล็อกอย่างเป็นทางการ: ประกาศ ASP.NET Core RC2


2
@ebramtharwat ทีนี้อีกหนึ่งปีต่อมามันดูเหมือนว่า helios is a thing
Andrew Savinykh

1
คุณพูดถึง Katana v3 เป็นไปได้ว่าจะออกวางตลาดครั้งใหญ่ดังนั้นก้าวต่อไปข้างหน้ากรอบอะไรที่จะใช้แทน Katana?
Vincent

2
คุณสมบัติของ Katana ได้รับการรวมใน ASP.NET 5 Katana จะยังคงมีอยู่เพื่อความเข้ากันได้ย้อนหลัง
Admir Tuzović

2
@ AdmirTuzović: คำตอบที่ดี มีการปรับปรุงเพิ่มเติมใด ๆ เพิ่มเติมอีกตั้งแต่พฤษภาคม 2559
Igby Largeman

2
คำตอบเริ่มต้นด้วยการแก้ไขที่ตามมาอธิบายการเปลี่ยนได้เป็นอย่างดี ขอบคุณสำหรับความพยายาม
Sang Suantak

71

ถ้าฉันต้องกำหนด OWIN ด้วยตัวเองนั่นก็คือ: "ความคิดที่ดีที่สุดจากชุมชนผู้พัฒนาเว็บ Ruby และ Node.js กำลังมาที่. NET"

แต่สิ่งนี้จะไม่ช่วยนักพัฒนา ASP.NET ใด ๆ คำจำกัดความของฉันเองจะเป็นสิ่งที่ตามแนวของ:

OWINกำหนดอินเตอร์เฟสมาตรฐานระหว่าง. NET เว็บเซิร์ฟเวอร์และเว็บแอปพลิเคชัน เป้าหมายของอินเทอร์เฟซ OWIN คือการแยกเซิร์ฟเวอร์และแอปพลิเคชันถ้าฉันต้องตอบคำถามที่คุณโพสต์แล้วนี่คือ:

  1. OWIN เป็นข้อกำหนดของอินเตอร์เฟส มันแยกเว็บแอปพลิเคชันออกจาก IIS

  2. หากคุณใช้ส่วนประกอบสำเร็จรูป (ซึ่งเป็นสิ่งที่ Katana เป็น) ดังนั้นบางส่วนของฟังก์ชั่นการใช้งานของแอปพลิเคชันจะง่ายกว่ามากเมื่อเทียบกับ ASP.NET เก่า การพิสูจน์ตัวตนกับผู้ให้บริการข้อมูลบุคคลที่สาม (Facebook, Twitter) เป็นตัวอย่างหนึ่งของสิ่งนี้

  3. OWIN เป็นชุดของแนวปฏิบัติที่ดีที่สุดซึ่งได้รับการพิสูจน์แล้วในชุมชนการพัฒนาเว็บ มันแสดงให้เห็นถึงวิธีการใช้งานเว็บแอปที่เปิดกว้างสำหรับการขยาย เนื่องจากนักพัฒนาเว็บแต่ละรายควรมีเทคโนโลยีที่ทันสมัยอยู่ตลอดเวลานี่เป็นวิธีหนึ่งที่จะได้รับการอัปเดตกับชุมชนการพัฒนาเว็บทั้งหมดและไม่ใช่แค่. NET หากคุณเรียนรู้ OWIN มันจะง่ายกว่าการเรียนรู้กรอบการพัฒนาเว็บอื่น ๆ เช่น Express สำหรับ node.js หรือ Rack for Ruby เนื่องจากแนวทางปฏิบัติที่พวกเขาใช้มีความคล้ายคลึงกัน

1
อาจบทความนี้ได้เป็นอย่างดีช่วยให้ได้รับความคิดของปัญหาทางประวัติศาสตร์แก้ไขได้โดย OWIN / Katana: asp.net/aspnet/overview/owin-and-katana/... ที่กล่าวว่าเพียงกรอบเหล่านี้ได้รับการสนับสนุนในขณะนี้ในพื้นที่ OWIN: owin.org/#projects หากแอพของคุณใช้เฟรมเวิร์กแอปพลิเคชันเหล่านี้คุณสามารถโฮสต์บน OWIN ได้
Praburaj

คุณสามารถโพสต์ลำดับของคำขอที่เข้ามาจากเบราว์เซอร์ไปยังจุดที่แสดงการตอบสนองกลับฉันในเบราว์เซอร์เมื่อใช้ owinhost.exe ฉันไม่พบเอกสารในหัวข้อนี้
Saravanan

2
คะแนน 1 และ 2 นั้นทำให้เข้าใจผิด OWIN ไม่สามารถแทนที่สิ่งใด ๆ ได้ด้วยตนเอง เช่นเดียวกับจุดที่ 4 เป็นเพียงข้อมูลจำเพาะที่ต้องมีการใช้งานอย่างใดอย่างหนึ่งโดยการใช้งานการอ้างอิงโดย Microsoft คือ Katana และ Helios
Mani Gandham

ความคิดที่ดีที่สุดจากชุมชนผู้พัฒนาเว็บ Ruby และ Node.js กำลังมาที่. NET .... คุณสามารถแสดงรายการ \
Lakshay

1
มิดเดิ้ล แยกแอปพลิเคชันออกจากสภาพแวดล้อมการโฮสต์ทำให้ผู้ใช้สามารถเสียบปลั๊ก
Slavo

59

ฉันจะพยายามปกปิดมันจากมุมมองที่ใช้งานได้จริง

Katana เป็นชื่อโครงการที่จะดำเนินการใน Microsoft

OWIN คืออะไรและแก้ปัญหาอะไรได้บ้าง (ด้วยคำพูดง่าย ๆ ) IIS เกี่ยวข้องกับอะไร? (OWIN อินเตอร์เฟซเปิดเวสำหรับ NET ) เป็นมาตรฐาน ( OWIN ข้อมูลจำเพาะ ) และ Katana เป็นห้องสมุด .NET คุณสามารถได้รับ nuget จากที่นี่ OWIN และ Katana มีความหมายเหมือนกันบนเว็บ
ก่อน OWIN ตัวเลือกเดียวของคุณคือIISกับ OWIN คุณสามารถใช้แอปพลิเคชันอื่น ๆ (ที่มีจุดเข้าใช้งาน) เป็นเว็บเซิร์ฟเวอร์

OWIN แทนที่ IIS หรือไม่ ถ้าไม่ใช่ OWIN จะเหมาะกับสถานการณ์แบบใดดีที่สุด
ไม่มันไม่ได้แทนที่ IIS คุณสามารถใช้ OWIN และ IIS มีของMicrosoft.Owin.Host.SystemWebnuget ว่า มันเหมาะสมที่สุดถ้าคุณต้องการปรับให้เหมาะสม / เปลี่ยนวิธีการจัดการใน IIS หรือคุณต้องการสร้างเว็บเซิร์ฟเวอร์ที่กำหนดเองของคุณออกมาสมมติว่า Windows Forms Application

OWIN จะช่วยฉันในโครงการทำงานประจำวันได้อย่างไร
มันสามารถลดค่าใช้จ่ายเซิร์ฟเวอร์ของคุณเนื่องจากเว็บเซิร์ฟเวอร์ของคุณไม่จำเป็นต้องทำงานบน IIS (Windows) อีกต่อไป (เซิร์ฟเวอร์ Windows มีราคาแพงกว่า Unix ที่ใช้พื้นฐานและคุณสามารถเรียกใช้บน Console Application ภายใต้ Mono ใน Linux)

OWIN จะช่วยฉันในโครงการปรับปรุงตนเองได้อย่างไร
การเรียนรู้Microsoft.Owin(และห้องสมุด OWIN อื่น ๆ ที่เกี่ยวข้อง) จะปรับปรุงความรู้ของคุณเกี่ยวกับวิธีการสื่อสาร HTTP ระหว่างไคลเอนต์และเว็บเซิร์ฟเวอร์

อ่านดีถ้าคุณต้องการที่จะเข้าใจเพิ่มเติมเกี่ยวกับสิ่งที่ Katana และ OWIN คือ


6
ทำได้ดีมากและขอขอบคุณสำหรับการตอบคำถามที่โพสต์โดยตรงแทนที่จะปล่อยให้เลนแทนเจนต์ลงมา
Dav

จะเกิดอะไรขึ้นถ้าเราใช้เซิร์ฟเวอร์ที่สามารถใช้ Microsoft IIS สำหรับโฮสต์ได้ ปรากฏว่า OWIN เป็นค่าเริ่มต้นในเทมเพลต WebApi2 ใหม่ ฉันควรลบมันเป็นการอ้างอิงถ้าฉันวางแผนที่จะโฮสต์ใน IIS เท่านั้น / เสมอ?
TechTurtle

@TechTurtle Hi Tech ฉันขอแนะนำให้โพสต์เป็นคำถามแยกต่างหาก
Matas Vaitkevicius

คำอธิบายที่ชัดเจนมาก ขอบคุณสำหรับข้อมูลที่เป็นประโยชน์
Uttam

9

OWIN คืออะไร

OWIN ย่อมาจาก Open Web Interface สำหรับ. NET OWIN เป็นข้อมูลจำเพาะที่อธิบายถึงวิธีการที่เฟรมเวิร์กการพัฒนาเว็บเช่น ASP.NET MVC ควรโต้ตอบกับเว็บเซิร์ฟเวอร์ เป้าหมายของ OWIN คือการแยกเว็บแอปพลิเคชั่นออกจากเว็บเซิร์ฟเวอร์โดยแนะนำเลเยอร์สิ่งที่เป็นนามธรรม สิ่งที่เป็นนามธรรมช่วยให้คุณสามารถเรียกใช้แอปพลิเคชันเดียวกันบนเว็บเซิร์ฟเวอร์ทั้งหมดที่รองรับ OWIN นอกจากนี้ยังทำให้ระบบโดยรวมง่ายขึ้นเนื่องจากเลเยอร์นามธรรมสามารถให้โครงสร้างพื้นฐานที่มีน้ำหนักเบาเพื่อโฮสต์แอปพลิเคชัน IIS จัดเตรียมชุดคุณสมบัติมากมายให้กับเว็บแอปพลิเคชัน อย่างไรก็ตามเว็บแอปพลิเคชั่นอาจไม่ต้องการคุณสมบัติทั้งหมดเหล่านี้ อาจเพียงพอสำหรับพวกเขาที่จะมีความสามารถในการประมวลผล HTTP น้อยที่สุด โฮสต์ที่เข้ากันได้ของ OWIN สามารถจัดเตรียมสภาพแวดล้อมการโฮสต์ดังกล่าวให้กับแอปพลิเคชันเหล่านี้ ยิ่งไปกว่านั้น คุณสามารถกำหนดไพพ์ไลน์ของโมดูลที่ใช้ระหว่างการประมวลผลคำขอ ไปป์ไลน์ OWIN เป็นโซ่ของส่วนประกอบที่เข้ากันได้ของ OWIN ซึ่งคำขอผ่าน

Katana คืออะไร

Katana เป็นชุดส่วนประกอบของ Microsoft ที่สร้างขึ้นโดยใช้ข้อกำหนด OWIN ส่วนประกอบเหล่านี้บางส่วนประกอบด้วย Web API, ASP.NET Identity และ SignalR

ด้านบนเป็นสารสกัดจากบทความ CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.