其在Linux上面的开发和部署前景依然不是非常明朗: 特别令人困惑的是

时间:2021-09-22 07:05:05

原文:ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus

ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus

本文承接我的上一篇博文: ASP.NET 5 Linux部署,那篇文章主要是针对最新的ASP.NET 5的,但在随后的研究中,我对这种娱乐型的部署依然不长短常对劲,固然其主要原因是因为ASP.NET 5 依然处于RC版本,并不十分成熟. 但可以预见到的是,就算本月ASP.NET 5 RTM版本如期推出,其在Linux上面的开发和部署前景依然不长短常明朗: 出格令人猜疑的是,MS在Linux上至今仅仅推出了几个以开发为目的的简单处事器实现,难以在其打算中寻觅到类似IIS的完整部署环境,那么所谓的ASP.NET 5的跨平台开发是否只能勾留在尝试室程度? 目前乃至此后很长一段时间内(直到ASP.NET 5完全在Linux上站稳脚跟),我们有没有更好的选择?下面我将给出我本身的想法.

这里首先声明一点,ASP.NET Linux部署系列仅针对Linux部署环境,不涉及Windows部署环境.下面还是先给出一些观点以便于大家更好的理解后续的内容.

ASP.NET

 

ASP.NET是.NET Framework的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网处事器执行的处事器端脚本技术, 本月即将颁布的最新版本是版本5,又成为vNext.

 

Linux

 

Linux是一套免费使用和*流传的类Unix操纵系统,是一个基于POSIX和UNIX的多用户、多任务、撑持多线程和多CPU的操纵系统. 本文中的Linux主要以Ubuntu作为样例.

 

Mono

 

mono是指由Novell公司(由Xamarin倡议,并由Miguel de lcaza带领的,一个致力于开创.NET在Linux上使用的开源工程. 就目前而言,在Linux上的.NET应用还必需基于Mono来运行.

 

Jexus

 

Jexus 即 Jexus Web Server,简称JWS,是Linux平台上的一款ASP.NET WEB处事器,是目前独一能够撑持企业级ASP.NET Linux部署的一种方案(其他的处事器方案无类似定位).

 

OWIN

 

OWIN在.NET Web Servers与Web Application之间界说了一套标准接口,OWIN的方针是用于解耦Web Server和Web Application。基于此标准,鼓励开发者开发简单、灵活的模块,从而推进.NET Web Development开源生态系统的成长。

 

MS Owin

 

微软开发的基于OWIN规范的底层实现,最新版本是3.0.1,其主项目名称为Kanata

 

ASP.NET WebApi

 

ASP.NET MVC 4 包罗了 ASP.NET Web API, 这是一个创建可以连接包孕浏览器、移动设备等多种客户真个 Http 处事的新框架, ASP.NET Web API 也是构建 RESTful 处事的抱负平台

 

RESTful

 

一种软件架构气势派头,设计气势派头而不是标准,只是供给了一组设计原则和约束条件。它主要用于客户端和处事器交互类的软件。基于这个气势派头设计的软件可以更简洁,更有条理,更易于实现缓存等机制。

 

NancyFx

 

Nancy 是一个基于 .NET 和 Mono 平台用于构建轻量级基于 HTTP 的 Web 处事。基于 .NET 和 Mono 平台,,框架的方针是连结尽可能多的方法,并供给一个super-duper-happy-path所有交互。官方网站

 
三种选择

就.NET路线的Web开发来看,不管何种方法,未来一定是基于OWIN开发的事实已经不成摆荡了; 在这个根本上, 我认为目前在Linux上开发并部署.NET Web应用措施有3个路线可以选择:

底层Owin路线: 选择MS的底层OWIN实现,共同其他基于OWIN的独立组件,形成以底层OWIN为核心的自行搭配的轻型构架,这个方案目前已经可以完美部署到Jexus.

三方构架路线: 选择同样基于OWIN标准的,非MS的三方构架实现, 目前最有潜力,名气最大的是NancyFx, Nancy框架目前也同样能较好的部署到Jexus上去.

正统vNext路线: 选择MS正统的下一代ASP.NET 5 (vNext),该版本的底层基于OWIN实现(注意任何老的ASP.NET版本都不是基于OWIN的), 可谓是亲儿子; 但目前还没有颁布正式版本,其未来不成预期, 最关键的一点是,在Linux上,包孕Jexus在内,目前依然没有完美的基于商业环境的部署处事器环境撑持.

就这3个方案而言,我感受各有利弊: 底层方案需要更多的自行选择和组装,但是与任何基于Owin的组件搭配自如; 三方方案面临生态环境的问题,由于大部分高真个组件都来自MS,能否真正无缝连接需要考验,自身的保留能力也是问题; 正统方案内容完整,撑持强大, 与MS各项技术融合度高,但却面临成熟周期问题(时不我待),此外我最不爽的一点是,vNext又一次搞成了铁索连环船, 连WebApi都和MVC融合了,又给人一种整套推销的觉得, 有违当初Owin体系的初衷;而最根柢的问题是,目前还没有任何方案给vNext供给一个Linux上的IIS级处事器,没有好的载体,仅仅是把vNext的Linux部署界说为娱乐这个显然看不出太大的丹心.