為支持ASP.NET5跨平台,Jexus再添新舉措


      Jexus作為一款運行於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/ 去下載。

      ASP.NET跨平台技術QQ群:102732979。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM