Làm thế nào để giải thích Katana và OWIN bằng những từ đơn giản và cách sử dụng?


337

Tôi đã đọc nhiều bài viết về các dự án OWIN và Katana, nhưng tôi không thể có được toàn bộ hình ảnh của nó.

Đối với một nhà phát triển web bình thường sử dụng ASP.NET:

  1. Chính xác thì OWIN là gì và nó giải quyết vấn đề gì (nói một cách đơn giản). Mối quan hệ của nó với IIS là gì?
  2. OWIN có thay thế IIS không? Nếu không, trong những tình huống nào OWIN phù hợp nhất?
  3. Làm thế nào OWIN có thể giúp tôi trong các dự án công việc hàng ngày của tôi?
  4. Làm thế nào OWIN có thể giúp tôi trong một dự án tự cải thiện?

Bạn có thể xem xét thay đổi câu trả lời được chấp nhận khi xem xét một vài gạch đầu dòng không thực sự chính xác - là sai lệch.
Admir Tuzović

3
Cuốn sách của tôi trên ASP.net đề xuất triển khai Danh tính và lớp Người dùng thông qua OWIN và tôi thực sự không thấy được vấn đề. Nó khiến tôi hoàn toàn bối rối ...
Luke

Câu trả lời:


409

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.Weblắ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:

  • API web
  • Tín hiệu R

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:

  • IIS
  • Tự lưu trữ

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.Webvà 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


2
@ebramtharwat Bây giờ một năm sau, có vẻ như helios không phải là một thứ
Andrew Savinykh

1
Bạn đã đề cập Katana v3 rất có thể sẽ là bản phát hành lớn cuối cùng, vì vậy, tiến về phía trước, khuôn khổ nào sẽ được sử dụng để thay thế Katana?
Vincent

2
Các tính năng của Katana đã được tích hợp trong ASP.NET 5. Katana sẽ tiếp tục tồn tại để tương thích ngược.
Admir Tuzović

2
@ AdmirTuzović: câu trả lời tuyệt vời. Bất kỳ cập nhật nào để thêm kể từ tháng 5 năm 2016?
Igby Largeeman

2
Câu trả lời ban đầu với các chỉnh sửa tiếp theo giải thích rất rõ về quá trình chuyển đổi. Cảm ơn cho những nỗ lực.
Sang Suantak

71

Nếu tôi phải tự xác định OWIN cho mình, đó sẽ là: "Những ý tưởng hay nhất từ ​​cộng đồng nhà phát triển web Ruby và Node.js, đến với .NET"

Nhưng điều này sẽ không giúp bất kỳ nhà phát triển ASP.NET. Định nghĩa của riêng tôi sẽ là một cái gì đó dọc theo dòng:

OWIN định nghĩa một giao diện chuẩn giữa các máy chủ web .NET và các ứng dụng web. Mục tiêu của giao diện OWIN là tách rời máy chủ và ứng dụng Nếu tôi phải trả lời các câu hỏi bạn đã đặt ra, thì đây là:

  1. OWIN là một đặc điểm kỹ thuật giao diện. Nó tách một ứng dụng web từ IIS.

  2. Nếu bạn đang sử dụng các thành phần làm sẵn (đó là Katana là gì), thì một số phần của chức năng ứng dụng sẽ dễ thực hiện hơn nhiều so với ASP.NET cũ. Xác thực với các nhà cung cấp nhận dạng bên thứ ba (Facebook, Twitter) là một ví dụ về điều này.

  3. OWIN về cơ bản là một tập hợp các thực tiễn tốt nhất, đã được chứng minh trong các cộng đồng phát triển web. Nó cho thấy một cách để thực hiện các ứng dụng web rất mở rộng. Vì mỗi nhà phát triển web phải liên tục đi đầu trong các công nghệ mới, đây là một cách để cập nhật với toàn bộ cộng đồng phát triển web chứ không chỉ .NET. Nếu bạn học OWIN, việc tìm hiểu các khung phát triển web khác như Express cho node.js hoặc Rack cho Ruby sẽ dễ dàng hơn nhiều, vì các thực tiễn họ sử dụng là tương tự nhau.

1
Điều này có thể bài báo cũng giúp đỡ để có được một ý tưởng về những vấn đề lịch sử giải quyết bằng cách OWIN / katana: asp.net/aspnet/overview/owin-and-katana/... . Điều đó nói rằng chỉ các khung này được hỗ trợ ngay bây giờ trên máy chủ OWIN : owin.org/#projects . Nếu ứng dụng của bạn sử dụng bất kỳ khung ứng dụng nào trong số này, ứng dụng này có thể được lưu trữ trên OWIN.
Bohuraj 16/12/13

Bạn có thể đăng ở đây chuỗi các yêu cầu đến từ trình duyệt đến điểm phản hồi kết xuất lại tôi trình duyệt khi sử dụng owinhost.exe. Tôi không thể tìm ra một tài liệu trong chủ đề này.
Saravanan

2
Điểm 1 và 2 là sai lệch, OWIN không thể tự thay thế bất cứ thứ gì. Giống như điểm 4, đây chỉ là một đặc tả yêu cầu triển khai bằng cách nào đó, với các triển khai tham chiếu của Microsoft cho đến nay là Katana và Helios.
Mani Gandham

Những ý tưởng hay nhất từ ​​cộng đồng nhà phát triển web Ruby và Node.js, đến với .NET .... bạn có thể liệt kê một vài trong số đó \
Lakshay

1
Middleware. Việc tách ứng dụng khỏi môi trường lưu trữ làm cho chúng có thể cắm được.
Slavo

59

Tôi sẽ cố gắng bao quát nó từ quan điểm thực tế.

Katana là tên dự án để triển khai OWIN trong Microsoft .

Chính xác thì OWIN là gì và nó giải quyết vấn đề gì (nói một cách đơn giản). Mối quan hệ của nó với IIS là gì? OWIN ( Giao diện web mở cho .NET ) là một tiêu chuẩn ( Đặc điểm kỹ thuật của OWIN ) và Katana là thư viện .NET, bạn có thể lấy nuget từ đây . OWIN và Katana đã trở thành một phần đồng nghĩa trên web.
Trước OWIN, tùy chọn duy nhất của bạn là IISvới OWIN, bạn có thể sử dụng bất kỳ ứng dụng nào khác (có điểm vào) làm máy chủ web.

OWIN có thay thế IIS không? Nếu không, trong những tình huống nào OWIN phù hợp nhất?
Không, nó không thay thế IIS, bạn có thể sử dụng OWIN và IIS Microsoft.Owin.Host.SystemWeb cho điều đó . Nó phù hợp nhất nếu bạn muốn tối ưu hóa / thay đổi cách xử lý trong IIS hoặc bạn muốn tạo máy chủ web tùy chỉnh của mình ngoài ứng dụng Windows Forms.

Làm thế nào OWIN có thể giúp tôi trong các dự án công việc hàng ngày của tôi?
Nó có thể giảm chi phí cho máy chủ của bạn vì máy chủ web của bạn không cần phải chạy trên IIS (Windows) nữa (máy chủ Windows đắt hơn so với Unix và bạn có thể chạy nó trên Ứng dụng Console trong Mono trong Linux).

Làm thế nào OWIN có thể giúp tôi trong một dự án tự cải thiện?
Học tậpMicrosoft.Owin (và các thư viện OWIN liên quan khác) sẽ cải thiện kiến ​​thức của bạn về cách giao tiếp HTTP giữa máy khách và máy chủ web hoạt động.

Đọc tốt nếu bạn muốn hiểu thêm về Katana và OWIN là gì.


6
Hoàn thành tốt và cảm ơn vì đã trả lời trực tiếp các câu hỏi được đăng thay vì mạo hiểm đi vào làn đường tiếp tuyến.
Dav

Điều gì xảy ra nếu chúng ta luôn sử dụng máy chủ có khả năng Microsoft IIS để lưu trữ? Dường như OWIN được mặc định trong các mẫu WebApi2 mới. Tôi có nên xóa nó làm tài liệu tham khảo nếu tôi dự định chỉ lưu trữ trong IIS không?
TechTurtle

@TechTurtle Hi Tech, tôi khuyên bạn nên đăng nó dưới dạng một câu hỏi riêng biệt.
Matas Vaitkevicius

Giải thích rất rõ ràng. Cảm ơn thông tin hữu ích
Uttam

9

SỞ HỮU là gì?

OWIN là viết tắt của Giao diện web mở cho .NET. OWIN là một đặc tả mô tả cách các khung phát triển web như ASP.NET MVC sẽ tương tác với các máy chủ web. Mục tiêu của OWIN là tách các ứng dụng web khỏi máy chủ web bằng cách giới thiệu một lớp trừu tượng. Sự trừu tượng hóa như vậy cho phép bạn chạy cùng một ứng dụng trên tất cả các máy chủ web hỗ trợ OWIN. Ngoài ra, nó đơn giản hóa toàn bộ hệ thống vì lớp trừu tượng có thể cung cấp cơ sở hạ tầng nhẹ để lưu trữ các ứng dụng. IIS cung cấp một bộ tính năng phong phú cho các ứng dụng web. Tuy nhiên, các ứng dụng web có thể không cần tất cả các tính năng này. Nó có thể đủ để họ có khả năng xử lý HTTP tối thiểu. Máy chủ tương thích OWIN có thể cung cấp một môi trường lưu trữ như vậy cho các ứng dụng này. Hơn thế nữa, bạn có thể xác định một đường dẫn của các mô-đun được sử dụng trong quá trình xử lý yêu cầu. Đường ống OWIN là một chuỗi các thành phần tương thích OWIN thông qua đó yêu cầu được chuyển qua.

Katana là gì?

Katana là một bộ các thành phần do Microsoft xây dựng bằng cách sử dụng thông số kỹ thuật của OWIN. Một số thành phần này bao gồm API Web, ASP.NET Identity và SignalR.

Trên đây là trích xuất từ ​​Bài viết của CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htmlm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.