Jexus 5.8.1 BETA1,全面支持ASP.NET5跨平臺運行
作為一款運行于Linux/FreeBSD平臺上以支持ASP.NET著稱的高性能HTTP服務器和反向代理服務器,繼5.6版完成對OWIN標準應用的支持后,就把著力點放到了對ASP.NET5的支持。
但是,由于ASP.NET5與之前的ASP.NET相比,不管是從運行環境還是部署方式都發生了革命性的變化,Jexus很難像“前ASP.NET時代”那樣,把ASP.NET5輕易地納入其工作進程內直接運行。
支持ASP.NET5,擺在Jexus面前有多種待選方案,比如利用OWIN協議針對ASP.NET5開發專用的適配器,或者利用Jexus的反向代理功能,等等等等,但反復權衡之后,Jexus 5.8.1版選擇了一條更加直捷且現實可行的方案:通過“端口轉發”功能,把網站端口與應用程序宿主端口“橋接”起來。
之所以選擇“端口轉發”這個方案,是因為:
1,OWIN方案。由于mono與.NET Core是完全不同的兩個運行平臺,本質上有很大的不同,為在Jexus進程內運行的OWIN適配器的開發工作造成了極大的困難,而且ASP.NET5還在發展中,架構方面、API方面都有相當的不確定性;
2,反向代理方案。Jexus支持反向代理并且可以利用它做負載均衡,但是,反向代理由于需要對外部用戶發過來的請求包和工作服務器發回來的響應包進行不同程度的解析和重組,必然會消耗一定的計算資源。而且,反向代理對于WebSocket等技術的支持也有很大的難度和更大的性能消耗;
3,基于.NET Core重新改寫Jexus。這個方案明顯不現實:原因之一,Jexus必須繼續支持已經在生產環境中被廣泛使用的“前ASP.NET”,如果基于 core改寫,就會出現與“前ASP.NET”兼容性問題甚至出現“斷代”風險,這絕不是Jexus用戶愿意看到的事;原因之二,Jexus已經是一個開發了多年的成熟的WEB服務器,重寫Jexus絕不是一個簡單的事情,需要花費相當長的時間和非常大的精力。
“端口轉發”有著類式端口“橋接”的直接效果,它既避免OWIN方案的開發難度,也避免了反向代理方案在性能方面的耗損和應用層交互協議的局限性。而且更重要的是,這個方案在支持微軟為ASP.NET5量身打造的Kestrel這個宿主服務器的同時,也支持其它的花樣繁多的自宿主應用,把Tomcat、node.js的服務讓 Jeuxs整合起來對外統一用80端口提供服務,也完全是可行的。
Jexus 5.8.1 BETA1已經發布,感興趣的朋友可以到 http://www.linuxdot.net/ 去下載。