ASP.NET Core 是微軟的全新的框架。這一框架的目標 ︰
- 跨平臺
- 針對云應用優化
- 解除 System.Web 的依賴。 獲得下面三個方面的優勢,你可以把它認為是一個C# 版本的NodeJS:
1) 模塊化實現
2) 一切都盡可能的-異步
3) 依賴關系注入
微軟已經如期發布了.NET Core R2, 具體參見文章《微軟.NET Core RC2正式發布,橫跨所有平臺》,現在可以放心的基于.NET Core 構建 ASP.NET Core 。那么問題就來了,生產環境我們如何部署呢?
ASP.NET Core 的運行環境由新開發的 Kestrel Server 負責,IIS 退回到 HTTP 的偵聽器的角色,微軟也特別為了這個需求開發了 IIS Platform Handler,以處理 HTTP 與運行環境之間的信息轉發工作,微軟官方推薦在Linux服務器上使用Nginx,Haproxy等代理Kestrel Server,具體參考 http://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS。
需要安裝AspNetCoreModule(安裝 ASP.NET Core Server Hosting Bundle 或者.NET Core SDK時會裝上), AspNetCoreModule是一個native IIS module。Jexus 5.8.1 版本的端口“轉發”功能也類似于IIS 的實現方式,通過端口轉發方式將Kestrel 保護起來,又可以高性能運行。Jexus的實現方式上劉冰的博客《為支持ASP.NET5跨平臺,Jexus再添新舉措》進行了解釋。
下面我們來介紹下怎么設置通過Jexus 把asp.net core 的請求轉發給Kestrel Server來處理。我假設你已經把asp.net core rc2 的網站準備好了,我這里演示的就是我的一個實驗站點“Hello World”, 運行在Azure上的Centos 7.0上,服務端口是127.0.0.1:5000 。
在jexus上為之新建一個網站,在這個網站的配置文件中加一行:
AppHost.Port=5000
通過以上處理,訪問jexus的這個網站,就會把請求轉發到對應的應用上。下面是我的示例dotnetcore,配置文件放在/usr/jexus/siteconf,創建一個網站叫做dotnetcore:
port=5001
hosts=*
AppHost.Port=5000
通過 5001 端口轉發到 5000端口,配置非常簡單,這時的jexus也是一個偵聽和數據轉發的角色。當然,作為服務器,jexus也是一個“網站組織者”的角色。因為每個應用程序容器都有不同的端口,而服務器對外服務器不可能一個端口一個服務。通過jexus的“組織”,就能讓不同的端口通過域名共同一個80端口。
保存后,重啟Jexus服務器就生效了,就可以通過瀏覽器訪問到asp.net core 網站了。
大家可以通過 http://mono.cloudapp.net:5001/ 訪問到我這個最簡單的Hello World
文章列表