Về nhận xét trên, OWIN không phải là một khung. OWIN là một đặc điểm kỹ thuật về cách xây dựng các máy chủ web và ứng dụng web để tách rời chúng và cho phép di chuyển các ứng dụng ASP.NET sang các môi trường không được hỗ trợ trước đó.
Trước OWIN, khi xây dựng ứng dụng ASP.NET, bạn vốn đã bị ràng buộc với IIS do phụ thuộc quá nhiều vào System.Web
lắp ráp.
System.Web
là thứ đã tồn tại từ thời ASP (không phải phiên bản .NET) và bên trong chứa nhiều thứ mà bạn thậm chí không cần (chẳng hạn như Biểu mẫu web hoặc Ủy quyền URL), theo mặc định tất cả đều chạy trên mọi yêu cầu, do đó tiêu tốn tài nguyên và tạo ra ASP Các ứng dụng .NET nói chung chậm hơn rất nhiều so với các đối tác của nó, chẳng hạn như Node.js.
Bản thân OWIN không có bất kỳ công cụ, thư viện hay bất cứ thứ gì khác. Nó chỉ là một đặc điểm kỹ thuật.
Katana, mặt khác, là một khung phát triển đầy đủ được tạo ra để làm cầu nối giữa các khung ASP.NET hiện tại và đặc tả OWIN. Hiện tại, Katana đã điều chỉnh thành công các khung ASP.NET sau đây thành OWIN:
ASP.NET MVC và Web Forms vẫn đang chạy độc quyền thông qua System.Web và về lâu dài cũng có một kế hoạch để tách riêng chúng.
Mặt khác, IIS là một máy chủ tốt, tháo vát cho các máy chủ web. Toàn bộ vấn đề hiệu năng ASP.NET sử dụng IIS chỉ có nguồn gốc sâu xa System.Web
. Cho đến thời gian gần đây, khi quyết định bạn sẽ lưu trữ máy chủ web của mình như thế nào, bạn có hai tùy chọn:
Vì vậy, nếu bạn muốn có một hiệu suất, bạn sẽ chọn tùy chọn tự lưu trữ. Nếu bạn muốn có nhiều tính năng vượt trội mà IIS cung cấp, bạn sẽ dùng IIS nhưng bạn sẽ mất hiệu năng.
Bây giờ, có một tùy chọn thứ 3, một thư viện Microsoft có tên Helios (tên mã hiện tại) có ý định loại bỏ System.Web
và cho phép bạn sử dụng IIS theo cách "sạch" hơn, mà không cần bất kỳ thư viện hoặc mô-đun không cần thiết nào. Helios hiện đang ở phiên bản tiền phát hành và đang chờ thêm phản hồi của cộng đồng để làm cho sản phẩm của Microsoft được hỗ trợ đầy đủ.
Hy vọng lời giải thích này làm rõ mọi thứ tốt hơn cho bạn.
EDIT (tháng 9 năm 2014):
Với ASP.NET vNext đang được phát triển, Katana đang dần nghỉ hưu. Phiên bản 3.0 rất có thể sẽ là bản phát hành chính cuối cùng của Katana dưới dạng khung độc lập.
Tuy nhiên, tất cả các khái niệm được giới thiệu với Katana đang được tích hợp vào ASP.NET vNext, có nghĩa là mô hình lập trình sẽ khá giống nhau. Trích dẫn từ bài đăng trên diễn đàn được thực hiện bởi David Fowler (Architect of ASP.NET vNext):
vNext là sự kế thừa của Katana (đó là lý do tại sao chúng trông rất giống nhau). Katana là khởi đầu của việc tách khỏi System.Web và các thành phần mô-đun hơn cho ngăn xếp web. Bạn có thể xem vNext như một sự tiếp nối của công việc đó nhưng sẽ tiến xa hơn (CLR mới, Hệ thống dự án mới, trừu tượng http mới).
Mọi thứ tồn tại ngày nay ở Katana sẽ được đưa vào vNext.
EDIT (tháng 2 năm 2015):
ASP.NET vNext hiện được gọi là ASP.NET 5 và sẽ được xây dựng trên nền tảng .NET Core 5. .NET Core 5 là phiên bản nhẹ của .NET Framework, được thiết kế để hỗ trợ các mục tiêu của ASP.NET 5 và .NET Native . Tuy nhiên, ASP.NET 5 cũng sẽ được .NET Framework 4.6 hỗ trợ, sẽ có sẵn cùng với .NET Core 5. Cả ASP.NET 5 và .NET Core 5 sẽ được cấp phép theo MIT và sẽ chấp nhận đóng góp của cộng đồng.
EDIT (tháng 5 năm 2015):
Ngoài ra, thương hiệu ASP.NET Web API sẽ bị ngừng, tuy nhiên công nghệ của nó sẽ là cơ sở cho ASP.NET MVC mới 6. Các phiên bản ASP.NET MVC trước đây được xây dựng bằng cách triển khai IHttpHandler, một giao diện được xác định trong System.Web
. ASP.NET MVC 6 loại bỏ sự phụ thuộc đó, làm cho nó di động đến các nền tảng và máy chủ web khác nhau.
EDIT (tháng 5 năm 2016):
ASP.NET 5 sẽ chính thức được đổi tên thành ASP.NET Core bắt đầu với Release Candidate 2, dự kiến sẽ sớm được phát hành. Tương tự sẽ áp dụng cho Entity Framework 7 sẽ được đổi tên thành Entity Framework Core. Thông tin thêm về thông báo chính thức và lý do đằng sau nó có thể được tìm thấy trên bài đăng trên blog của Scott Hanselman:
ASP.NET 5 đã chết - Giới thiệu ASP.NET Core 1.0 và .NET Core 1.0
EDIT (tháng 5 năm 2016):
Với việc phát hành Release Candidate 2, ASP.NET Core đã được sửa đổi để các ứng dụng web trong tương lai thực sự chỉ là thiết lập ứng dụng bảng điều khiển .NET Core để xử lý các yêu cầu HTTP đến . Khái niệm này làm cho ASP.NET Core thậm chí phù hợp hơn với cách tiếp cận mà Microsoft đã thực hiện với sự hỗ trợ kiến trúc microservice và việc triển khai thông qua Azure Service Fabric. Thông tin thêm có thể được tìm thấy trên bài đăng trên blog chính thức:
Thông báo ASP.NET Core RC2