2014-12-31 20 views
37

Sự hiểu biết của tôi hiện tại bạn có thể tự lưu trữ WebAPI bằng cách sử dụng Katana và MVC sẽ có khả năng này trong một phiên bản trong tương lai. Về cơ bản Katana sẽ là một tùy chọn lưu trữ có sẵn cho cả MVC và WebAPI.Sự khác biệt giữa Kestrel và Katana

Kestrel đã nhập hình ảnh, và tôi thấy một vài nhân viên MS viết blog về nó thể hiện lưu trữ ASP.NET vNext trên Linux.

Sự hiểu biết của tôi là cả Kestrel và Katana đều triển khai đường ống OWIN.

Từ đó, tất cả đều mờ một chút. Tôi tự hỏi, tại sao Kestrel lại vào bức ảnh, khi Katana có thể phục vụ cùng một mục đích nếu bạn biên dịch nó bằng mono và thực hiện một số nỗ lực để làm cho nó tương thích với nền tảng (có lẽ nói dễ hơn là làm).

Do Kestrel và Katana có cùng mục đích không? Hay là một người chuyên môn theo cách nào đó mà người kia không?

Kestrel cuối cùng sẽ là lựa chọn khả thi cho việc triển khai Windows? Hay nó sẽ chuyên về môi trường không phải Windows và Katana vẫn là lựa chọn cho Windows?

Tôi nhận ra rằng tôi có thể yêu cầu một quả táo để so sánh cam do thiếu kiến ​​thức về Katana/Kestrel, nhưng nếu câu trả lời là "Cam có nhiều vị chua hơn táo" thì IMO là câu trả lời hoàn toàn hợp lệ.

+17

Tại sao điều này được coi là quá rộng? Tôi không yêu cầu cho một danh sách các tính năng hoặc một dòng bằng cách so sánh dòng. Điều gì làm cho chúng khác biệt, trong cùng một nghĩa rằng "Động vật có vú khác biệt với loài bò sát như thế nào?" có thể được trả lời bằng "Động vật có vú là động vật nuôi con bằng sữa khi còn nhỏ, tuy nhiên loài bò sát thì không." Trả lời một câu hỏi như vậy không đòi hỏi một danh sách rộng của mỗi và mọi khác biệt. – AaronLS

+4

Nó rõ ràng là không quá rộng đối với tôi để trả lời nó :) – Eilon

Trả lời

26

Katana là cài đặt OWIN của Microsoft và cũng bao gồm một số thành phần phần mềm trung gian cho bảo mật/xác thực, phân phát tệp tĩnh và một số thứ khác.

Kestrel là cross-nền tảng máy chủ web phát triển của Microsoft có thể được sử dụng với ASP.NET 5.

ASP.NET 5 không thực hiện OWIN, nhưng có một "cầu nối" để cho phép các thành phần OWIN được sử dụng trong ASP.NET 5 ứng dụng, bao gồm cả chạy trên Kestrel.

+2

Đối với bất cứ ai bối rối như tôi, ASP.NET 5 không phải là một điều nữa. Họ gọi nó là ASP.NET Core 1.0. –

10

Có thể là một câu hỏi cũ, nhưng vì tìm kiếm nhanh trên google đã dẫn tôi đến đây, tôi nghĩ không ai khác hỏi một câu hỏi tương tự.

Trích dẫn ASP.NET 5 Tài liệu:

Kestrel

Kestrel là một máy chủ web đa nền tảng dựa trên libuv, một không đồng bộ cross-platform/O thư viện tôi. Kestrel là mã nguồn mở, và bạn có thể xem nguồn Kestrel trên GitHub. Bạn thêm hỗ trợ cho Kestrel bằng cách bao gồm “Kestrel” trong các phụ thuộc của dự án được liệt kê trong project.json.

Chọn một máy chủ

Nếu bạn có ý định triển khai ứng dụng của bạn trên máy chủ Windows, bạn nên chạy IIS như một máy chủ proxy ngược quản lý và proxy yêu cầu Kestrel. Nếu triển khai trên Linux, bạn nên chạy một máy chủ proxy ngược tương tự như Apache hoặc Nginx để yêu cầu proxy tới Kestrel.

Đối với các trường hợp tự lưu trữ, chẳng hạn như chạy trong Service Fabric, chúng tôi khuyên bạn nên sử dụng Kestrel không có IIS. Tuy nhiên, nếu bạn yêu cầu Windows Authentication trong một kịch bản tự lưu trữ, bạn nên chọn WebListener.

Vì vậy, sự hiểu biết của tôi là: Nếu Kestrel chỉ là một máy chủ phát triển, nó không còn nữa và bằng cách nào đó thay thế Katana và OWIN.

2

"Project Katana" bao gồm Microsoft thêm hỗ trợ cho IIS cho OWIN, tạo OwinHost.exe và cung cấp libraries to allow application to interface with a self hosting WebAPI. Một số các thư viện như Microsoft.Owin.Security được sử dụng bởi ASP.NET MVC 5 (không phải ASP.NET Core) để nối nhận dạng/xác thực thông qua OWIN, nhưng MVC 5 không hỗ trợ tự lưu trữ (mặc dù nó có thể sử dụng khác công cụ). Thư viện SelfHosting chỉ dành cho WebAPI.

Vì vậy, "Katana" là một thuật ngữ rộng đề cập đến cả việc triển khai máy chủ cũng như hỗ trợ ứng dụng web cho OWIN: "These components include both infrastructure components, such as hosts and servers, as well as functional components, such as authentication components and bindings to frameworks such as SignalR and ASP.NET Web API."

Bạn có thể thấy cụm từ như "Di chuyển từ Katana để ASP.NET Core" mà refere đến phía ứng dụng web. Có nghĩa là từ bỏ các thư viện Microsoft.Owin, và sử dụng ASP.NET Core có hỗ trợ OWIN đầy đủ được xây dựng mà không cần thư viện bổ sung. Hoặc bạn có thể thấy một cụm từ tương tự có nghĩa là di chuyển ra khỏi máy chủ Katana đến một vật chủ khác như Kestrel. Thật không may, thuật ngữ được sử dụng để đề cập đến một trong hai bên của việc thực hiện với một chút làm rõ, và bạn sẽ phải chú ý đến bối cảnh của cuộc thảo luận.

Kestrel chỉ là triển khai máy chủ lưu trữ. Mục tiêu của nó là cung cấp hỗ trợ lưu trữ OWIN trên nhiều nền tảng. Nó nhẹ hơn, và không đầy đủ tính năng hoặc trưởng thành như IIS. Bạn nên sử dụng nó sau một proxy ngược của một máy chủ web an toàn hơn và chống lại như IIS, Apache, nginx, hoặc khác. Kestrel là tài liệu hiện tại của Microsoft đề xuất như một máy chủ để triển khai ứng dụng web ASP.NET Core trên các nền tảng khác như Linux.

Nếu bạn tạo dự án ASP.Net Core, thì Kestrel hiện được bao gồm theo mặc định. Nó được hỗ trợ trên cùng một nền tảng mà ASP.NET Core hỗ trợ.

Các vấn đề liên quan