为支持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。
为支持ASP.NET5跨平台,Jexus再添新举措的更多相关文章
- 让ASP.NET5在Jexus上飞呀飞
就在最近一段时间,“Visual Studio 2015 CTP 5”(以下简称CTP5)发布了,CTP5的发布不仅标志着新一代的VisualStudio正式发布又向前迈出了一步,还标志着距离ASP. ...
- Asp.Net跨平台 Jexus 5.8.1 独立版
在Linux上运行ASP.NET网站或WebApi的传统步骤是,先安装libgdiplus,再安装mono,然后安装Jexus.在这个过程中,虽然安装Jexus是挺简便的一件事,但是安装mono就相对 ...
- 腾讯混合云存储 TStor 系列再添新成员,并行存储一体机正式发布
最近国内某大型互联网公司依靠其数据优势成功上市,可见数据的重要性,而数据和存储密不可分,您真的知道自己需要更高性能存储吗? 在当今数据爆发式增长的时代,数据已经成为很多行业最重要的资源,没有之一. 数 ...
- Asp.Net跨平台:Ubuntu14.0+Mono+Jexus+Asp.Net
Asp.Net跨平台的文章园子里有很多,这里给自己搭建的情况做一下总结,方便以后查看. 参考网站: http://www.linuxdot.net/(Linux DotNET大本营 ) http ...
- Jexus 网站服务器和 ASP.NET 跨平台开发
微软的跨平台战略 微软在过去的一年多中时间中发生了令整个 IT 行业感到惊叹的变化.这一切始于 Ballmer 的退位和 Nadella 的决心,更始于早已在微软各个基层部门蠢蠢欲动的二次创业. 以开 ...
- 从ASP.NET 升级到ASP.NET5(RC1) - 翻译
前言 ASP.NET 5 是一次令人惊叹的对于ASP.NET的创新革命. 他将构建目标瞄准了 .NET Core CLR, 同时ASP.NET又是对于云服务进行优化,并且是跨平台的框架.很多文章已经称 ...
- ASP.NET跨平台最佳实践
前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java ...
- ASP.NET5 Beta8可用性
ASP.NET5 beta8现已上都的NuGet作为一个工具升级到Visual Studio2015!此版本极大地扩展.NET核心对OS X和Linux所支持的范围.您现在可以使用网络,加密和全球化特 ...
- ASP.NET5中间件
小的应用组件可以包含到Http请求管道当中,ASP.NET5 集成了中间件,被包在了应用程序的Configure方法当中. 1. 什么是中间件 中间件是一组被装到应用程序管道的请求和响应中的组件.每一 ...
随机推荐
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- ThreadLocal简单理解
在java开源项目的代码中看到一个类里ThreadLocal的属性: private static ThreadLocal<Boolean> clientMode = new Thread ...
- 说说Golang的使用心得
13年上半年接触了Golang,对Golang十分喜爱.现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的.一直 ...
- ABP文档 - Mvc 视图
文档目录 本节内容: 简介 AbpWebViewPage 基类 简介 ABP通过nuget包Abp.Web.Mvc集成到Mvc视图里,你可以像往常那样创建常规的视图. AbpWebViewPage 基 ...
- 使用CSS3实现一个3D相册
CSS3系列我已经写过两篇文章,感兴趣的同学可以先看一下CSS3初体验之奇技淫巧,CSS3 3D立方体效果-transform也不过如此 第一篇主要列出了一些常用或经典的CSS3技巧和方法:第二篇是一 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(75)-微信公众平台开发-用户管理
系列目录 前言 本节主要是关注者(即用户)和用户组的管理,微信公众号提供了用户和用户组的管理,我们可以在微信公众号官方里面进行操作,添加备注和标签,以及移动用户组别,同时,微信公众号也提供了相应的接口 ...
- 从display:run-in;中学习新技能
有时我们想在一行内显示一个标题,以及一段内容,虽然看起来比较简单,但是为了语义化用dl比较合适,但是它默认是block元素,改成inline?那么有多段呢?不就都跑上来了?用float?那问题也挺多. ...
- Entity Framework 教程——DBContext
DBContext: 在之前的章节<创建实体数据模型>中,EDM为我们创建了SchoolDBEntities 类,它派生子System.Data.Entity.DbContext这个类,这 ...
- 2016/12/31_Python
今天学习主要内容: Python: 1.with语句(补充昨天的文件操作) 用with打开的文件在脚本结束会自动关闭,以防普通打开方式忘记关闭文件连接 语法: with open("demo ...
- Maven搭建SpringMVC+Hibernate项目详解 【转】
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...