Lịch sử của lưu trữ ASP.NET
Trở lại năm 2002, về cơ bản có một máy chủ web cho nền tảng .NET và đó là IIS. Vài năm sau, Máy chủ Web Phát triển Visual Studio ("Cassini", trước đây là một phần của Ma trận Web ban đầu) xuất hiện như một máy chủ chỉ dành cho nhà phát triển. Nhưng tất cả những thứ này cuối cùng đều sử dụng System.Web làm lớp lưu trữ giữa ứng dụng và máy chủ web. Máy chủ System.Web được kết hợp chặt chẽ với IIS và rất khó chạy trên các máy chủ khác. Ngay cả việc triển khai trên VS Dev Web Server cũng bị hạn chế vì nó chỉ hỗ trợ một số tính năng nhất định. Vì vậy, vẫn chỉ có một "máy chủ lưu trữ" chất lượng sản xuất cho các ứng dụng ASP.NET điển hình phụ thuộc vào System.Web.
Tua nhanh khoảng một thập kỷ và OWIN xuất hiện như một giao diện giữa các ứng dụng và máy chủ web. Điều này cho phép mọi ứng dụng tương thích với OWIN nói chuyện qua OWIN với máy chủ web có lớp lưu trữ tương thích với OWIN. Microsoft đã viết Katana là một triển khai OWIN có thể lưu trữ ASP.NET Web API, ASP.NET SignalR và nhiều khung bên thứ 3 trên đầu một số máy chủ, bao gồm IIS (và IIS Express), máy chủ tự lưu trữ của Katana và các máy chủ tùy chỉnh ( tức là chạy máy chủ của Katana trong một ứng dụng tùy chỉnh). Có một triển khai OWIN khác được gọi là Nowin có thể chạy các ứng dụng tương tự như Katana. Đây là một ví dụ về thuyết bất khả tri của vật chủ.
Bây giờ tua nhanh thêm vài năm nữa và có ASP.NET vNext , theo mô hình rất giống với OWIN về việc có phần mềm trung gian và có thuyết bất khả tri của máy chủ. ASP.NET vNext cũng có các lớp tương thích cho các thành phần ứng dụng phần mềm trung gian OWIN.
ASP.NET vNext host bất khả tri
ASP.NET vNext là máy chủ bất khả tri theo cách tương tự như Katana và OWIN. Các ứng dụng được viết bằng ASP.NET vNext chỉ biết về một lớp trừu tượng máy chủ, chẳng hạn như giao diện IApplicationBuilder
(trước đây IBuilder
). Các ứng dụng không nói chuyện trực tiếp với máy chủ web. Phần lớn sự trừu tượng này được thực hiện thông qua "giao diện tính năng" để một số máy chủ có thể triển khai các tính năng và những máy chủ khác có thể chọn không.
Tùy chọn lưu trữ web
Ứng dụng ASP.NET vNext có thể được lưu trữ trên IIS, IIS Express, EXE tùy chỉnh của riêng bạn, trong máy chủ Kestrel đa nền tảng mới và chắc chắn sẽ có nhiều máy chủ hơn trong tương lai.
Cả Katana và ASP.NET vNext đều không phải là sự thay thế cho IIS hoặc các máy chủ khác, mặc dù cả hai đều có máy chủ web thay thế. IIS hỗ trợ một số tính năng nâng cao hơn so với Katana và ASP.NET vNext, chẳng hạn như khởi động ứng dụng, quản lý vòng đời ứng dụng phong phú hơn (tức là phải làm gì khi ứng dụng gặp sự cố, kiểm soát lượng bộ nhớ mà nó sử dụng và các loại điều chỉnh khác) , quản lý từ xa, v.v.
Lợi ích của OWIN, ASP.NET vNext và là máy chủ lưu trữ bất khả tri
Tôi không thể nói về động cơ tạo ra OWIN vì tôi chưa bao giờ là thành viên của nhóm đó. Nhưng giá trị của việc trừu tượng hóa máy chủ lưu trữ web là rất nhiều:
- Có thể chuyển đổi giữa các host tương đối dễ dàng. Ví dụ, thông thường người ta thường chạy cục bộ trên một máy chủ chỉ dành cho phát triển có thể chạy với các quyền tối thiểu. Sau đó, khi triển khai sang sản xuất, có lẽ một máy chủ đầy đủ tính năng hơn như IIS sẽ được sử dụng. Tuy nhiên, IIS yêu cầu quyền quản trị để cài đặt, điều này không phải ai cũng có trên máy trạm của họ.
- Nhiều tùy chọn lưu trữ hơn có thể tồn tại. Ngày trước vì sự phụ thuộc chặt chẽ của ASP.NET vào IIS chỉ có một máy chủ duy nhất có thể tồn tại, vì vậy thực tế không có "thị trường" cho các máy chủ khác.
- Một số loại bài kiểm tra dễ viết hơn nhờ có một máy chủ kiểm tra trong bộ nhớ. Điều này được sử dụng khá thường xuyên để kiểm tra toàn bộ ngăn xếp của một ứng dụng web nhưng không có bất kỳ cuộc gọi mạng nào.
Các động lực cho ASP.NET vNext được liệt kê một phần trên trang ASP.NET vNext chính thức trong hướng dẫn Bắt đầu . Tóm tắt ngắn gọn là: có một nền tảng đa nền tảng, mã nguồn mở, song song, trả tiền khi bạn di chuyển, máy chủ lưu trữ bất khả tri để xây dựng các ứng dụng và dịch vụ web. Nghe có vẻ giống như một số công cụ tiếp thị, nhưng đây là tất cả các khía cạnh chính của hệ thống. NodeJS cung cấp khá nhiều tính năng chính xác giống nhau này, mặc dù tất nhiên khi bạn xem xét chi tiết, tất nhiên sẽ có nhiều khác biệt về cách triển khai và chắc chắn là một số khác biệt sâu hơn về mặt triết học. Các động cơ để hỗ trợ các tính năng này nói chung là tự giải thích.
Đối tượng cho ASP.NET
Lưu ý rằng đây là về đối tượng của ASP.NET nói chung, bao gồm mọi thứ từ ASP.NET Web Forms, đến MVC, Web API, SignalR, Katana và ASP.NET vNext. Bất kỳ khuôn khổ nào trong số này đều phù hợp với bất kỳ dự án quy mô nào và phải được sử dụng bởi bất kỳ nhà phát triển có kỹ năng hợp lý nào. Điều này có thể thấy rõ khi nhìn vào quy mô của các dự án sử dụng chúng. Chính trang web này (StackOverflow.com) được xây dựng một phần bằng cách sử dụng ASP.NET MVC, bởi một số nhà phát triển rất tiên tiến (tôi giả sử), nhưng có nhiều trang web nhỏ hơn nhiều sử dụng MVC được xây dựng bởi những người mới làm quen. ASP.NET vNext là phiên bản tương lai của hầu hết các khuôn khổ tương tự này, và do đó nó nhắm mục tiêu đến cùng một loại ứng dụng và cùng một loại nhà phát triển.
Thêm thông tin
Để biết thêm thông tin về ASP.NET vNext và OWIN, hãy xem bài đăng trên blog của một trong những nhà phát triển: http://whereslou.com/2014/06/10/asp-net-vnext-moving-parts-owin/