替支持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。
- 24楼MichaelJ
- 还是比较倾向asp.net5 原生有更好的部署方案。,可配置 可维护 独立的web server,kestrel manager,iisexpress for linux,jexus
- Re: 宇内流云
- @MichaelJ,引用还是比较倾向asp.net5 原生有更好的部署方案。,可配置 可维护 独立的web server,kestrel manager,iisexpress for linux,jexus,这个方案其实就是 Jexus+Kestrel [+iisexpress_for_linux] 方案,与windows上IIS支持和管理asp.net5是同一个道理。
- 23楼土豆烤肉
- 用JEXUS快3年了,支撑过千万级的用户。非常感谢宇内!,希望宇内有开源计划,能够将JEXUS进行社区化操作,更大提升JEXUS的功能与性能。
- Re: 宇内流云
- @土豆烤肉,引用用JEXUS快3年了,支撑过千万级的用户。非常感谢宇内!,希望宇内有开源计划,能够将JEXUS进行社区化操作,更大提升JEXUS的功能与性能。,不客气。我会尽力为大家做好服务工作。
- 22楼51tools.info
- 牛人一个,支持
- Re: 宇内流云
- @51tools.info,谢谢!
- 21楼龍☆
- 支持下 免费做贡献啊
- 20楼Treenew Lyn
- 博主,请教你一个问题。我一直不大理解。.NET部署在linux有什么比较大的优势吗?,内存占用更少,性能更高?
- Re: 张善友
- @Treenew Lyn,京东转Java等等就是因为他们认为.NET部署不到linux
- Re: 宇内流云
- @Treenew Lyn,引用博主,请教你一个问题。我一直不大理解。.NET部署在linux有什么比较大的优势吗?,内存占用更少,性能更高?,我的理解,您这问题其实等价于“为什么偏有人总要把 PHP/JAVA部署到Windows上,是内存占用更少,还是性能更高”一样的问题。
- 19楼Я!ńɡ
- 哟,深蓝医生也来了
- 18楼L-H
- 就是因为asp.net不工具大,架设linux麻烦,所以我学JAVA
- Re: 土豆烤肉
- @L-H,引用就是因为asp.net不工具大,架设linux麻烦,所以我学JAVA,已经很简单了。。
- 17楼丶神經病
- 支持宇内 帮顶
- 16楼一起开源www.17ky.net
- 好东西,支持下
- 15楼量子计算机
- 还不如使用标准的W3C技术.,,BTW:最全前端高端资料群435748765,JS,Node, React等
- 14楼深蓝医生
- 顶,刚刚用博主的作品在公司部署了一个Web服务器。
- 13楼错过
- 赞赞赞,来点格暂
- 12楼隆德尔
- 这是个大好消息,顶啦。我们公司几年前就开始在用jexus了。
- 11楼xiaohuazi
- 反向代理方案。Jexus支持反向代理并且可以利用它做负载均衡,但是,反向代理由于需要对外部用户发过来的请求包和工作服务器发回去的响应包进行不同程度的解析和重组,必然会消耗一定的计算资源。而且,反向代理对于WebSocket等技术的支持也有很大的难度和更大的性能消耗;,,用nginx吧,也可以做反代
- Re: 宇内流云
- @xiaohuazi,我当然知道nginx也有反代功能。但不管是用jexus做反代,还是用nginx做反代,它们都需要对请求和应答的数据进行解析和重组,这个过程对服务器资源的消耗或多或少但总是免不了的。另外,更重要的是,asp.net5、owin等应用都支持WebSocket通讯,这不是任何反向代理都可以轻松处理好的。还有一个安全保护的问题,目前,几乎所有的应用程序宿主都没有对外来请求进行安全检测能力,而jexus一直具备这个能力,因而jexus能更好的保护它背后的web应用的安全。
- 10楼于为源
- 强大,支持这个现在是收费的吗?有没有学习版。
- Re: 宇内流云
- @于为源,引用强大,支持这个现在是收费的吗?有没有学习版。,Jexus是免费的,不收取任何费用,也不附加任何使用条件。
- 9楼人谁无过
- 必须支持
- 8楼zhang-zhi-hao
- 支持支持
- 7楼寒殇
- 支持jexus,好东西 (来自博客园v3.3.2)
- 6楼vbfool
- 我觉得不如弄一个“ASP.NET5专版Jexus”,当然我也不清楚真正的性能是在哪,比如DNX本身并发如何,对于WebServer有没有影响?
- 5楼G1mist
- 这个必须顶
- 4楼aaqylh
- 最近在了解tonyfx,有个问题请教下,是否能通过某种方式来实现owin方式下的webForm承载,当然我们知道webForm的设计框架原因,是无法直接进行托管的,不知道楼主是否有方法?
- Re: 宇内流云
- @aaqylh,能在OWIN方式下实现WebForm承载,不过这样做的话,就违背了OWIN协议设计的初衷了。
- 3楼NET超强学习
- 有些人好像觉得似乎只有Php 和 java才有资格部署在linux上,我大微软的.net就不可以。什么优势不优势,性能不性能,意义不意义,在天朝,从一些企业老板的眼光来看,php ,java部署在linux上,就是因为linux免费而已,才不关注什么性能,优势,意义的问题呢!!
- 2楼Arthur.Wang
- 好东西 在用
- 1楼快剑之刃
- 敬佩楼主用实际行动为asp.net作出的贡献,Jexus是Linux asp.net的坚强翅膀。
- Re: 宇内流云
- @快剑之刃,过奖了,谢谢!