让ASP.NET5在Jexus上飞呀飞
就在最近一段时间,“Visual Studio 2015 CTP 5”(以下简称CTP5)发布了,CTP5的发布不仅标志着新一代的VisualStudio正式发布又向前迈出了一步,还标志着距离ASP.NET5(vNext)的正式发布不远。跟随者CTP5,KRE也从Kre beta-1.0升级到了Kre beta-2.0。
与众多.NET开发者一样,我们也一直在密切的关注ASP.NET5的发展,而作为领先的Linux.NET WebServer服务器更是如此,早在Kre beta-2.0发布前后,Jexus已经以“内部”的方式发布了相应的“适配器(Adapter)”,通过这些适配器,我们可以比较容易的在Linux上运行ASP.NET5的程序。相信在不久的将来,随着ASP.NET5的正式发布,正式版Jexus For ASP.NET5 Adapter也会在第一时间进行发布。
言归正传,上回我们发布了《再探ASP.NET5》,对ASP.NET5的构架进行了初步的探讨,在本篇内容中,我们将正如标题所说的那样,我们将介绍如何在Linux.NET中部署ASP.NET5程序,相关的组件,可以到“OWIN群(Q群号:373470340)”或者本文Demo(点击这里进行下载)中获得。本文的操作是基于ASP.NET5 Beta1/2进行操作,如若ASP.NET5正式版有巨大改动,请以正式版为准。本实验对网络环境要求较高,请各位读者确保机器网络环境通畅且没有被任何物质阻挡。
正式进入主题,本节中我们将介绍:
1、搭建ASP.NET5运行环境
2、如何向Linux.NET部署ASP.NET5程序
3、Jexus Host ASP.NET5的技术内幕
本文demo,各位读者可以点击这里进行下载。
一、搭建ASP.NET5运行环境
所谓工欲善其事必先利其器,需要运行ASP.NET5程序,必须先要有ASP.NET5的运行环境。ASP.NET5的运行环境除了要有常规的Linux.NET运行环境外,还额外需要一个KRuntime的环境。关于常规环境这一块这里就不作细说,不懂的读者可以翻阅《Linux.NET学习手记(1)》进行搭建,注意:这里的Mono版本需求为3.4.1以上,当前最新版本为3.12,各位读者可以到官网下载并编译安装,也可以更简便直接的使用JWS.OWIN进行常规环境的快速搭建。
首先,我们要逐条执行以下语句给Linux安装相关证书:
certmgr -ssl -m https://go.microsoft.com
certmgr -ssl -m https://nugetgallery.blob.core.windows.net
certmgr -ssl -m https://nuget.org
certmgr -ssl -m https://www.myget.org
每条语句执行之后都会询问是否安装,输入几次的“yes”并回车确认即可。然后再执行以下语句让证书马上生效。
mozroots --import --sync
执行以下语句进行KRuntime的安装:
curl -sSL https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh
安装完成之后可以执行“kvm llist”列出已经安装了的KRE版本。
如果显示的不是beta2版本,而是beta1版本,各位读者可以通过执行”kvm upgrade“进行升级。
至此,我们就拥有了一个供ASP.NET5的运行环境。
二、如何部署ASP.NET5程序到Linux.NET中
首先,我们需要创建一个ASP.NET5的程序,用VS15PrewView或者CTP5随你喜欢,并写上简单的代码确保能够运行。
然后发布到本地目录。
对ASP.NET5有所了解的读者对这玩意绝对不陌生,我们等下需要部署里面的东西。镜头先转到Linux中,我们进行Linux的配置。
我们先对Jexus中的SiteConfig进行配置,配置好相关的端口、地址,并添加"OwinMain=Jws.OwinAdapter.Next.dll,Jws.OwinAdapter.Next.Adapter"这行。
把刚才发布的项目中的源码路径(/approot/src/Demo1)中的内容全部上传到Linux.NET的网站根目录中。
把webroot中的静态资源也上传到根目录中(bin/和web.config就不要了)。
在根目录创建一个bin文件夹,并把Jexus的ASP.NET5适配器上传到bin目录中(“Jws.OwinAdapter.Next.dll”和“k.config”).
得到的效果入下图所示:
接下来就是重头戏了,使用vi打开“project.json”:
除了“dependencies”节点其他的全部删除,“dependencies”里面的内容也清空。
在“dependencies”节点中添加“"Microsoft.AspNet.Mvc": "6.0.0-*"”。
完成后效果如下图:
保存退出。最后在根目录执行:
kpm restore
ASP.NET5会自动的到所有的NuGetServer下载并解决相关依赖,类似于Yum(对网络要求高)。
执行完成之后,启动Jexus即可。
访问我们的页面,页面被成功的访问了。
三、Adapter技术内幕
通过上述操作,我们的ASP.NET5已经成功的在Jexus上跑起,相信不少读者也已经发现,在Jexus上运行ASP.NET5跟在VS中发布的默认方式是有所不同的,使用Jexus的方式与当前的ASP.NET MVC 1-5更接近。
Jexus和ASP.NET5的“通讯”方式正如上图所示。而事实上,通过一些的项目证实Jexus已经作为成熟的工业级WebServer,它已经和MSOWIN相关框架达至无缝连接的水平,使用Jexus的“OWIN模式”输出的是标准的OWIN字典,而ASP.NET5虽然与OWIN长得类似,但两者是截然不同的东西。适配器的作用就是把OWIN Environment中的数据包装成能直接提供ASP.NET5使用的模式以便于ASP.NET5 Application的正常运行。
此外,这里还有一些技术内幕。其一就是在Jexus中使用ASP.NET5是无需使用静态组件的(StaticFile组件),Jexus充分发挥自身强大的静态处理能力等优势(静态资源的吞吐能力、安全性、并发处理能力、心跳检测等)将尽量多的静态请求放入到自身进行处理,一些静态资源譬如图片、音频、小文件之类的Jexus是不会再调用Kre使用ASP.NET5框架进行处理,也无需再走ASP.NET5的Pipe。这大幅度的不仅大幅度的提升了网站的效率,同时也弥补了直接使用ASP.NET5 SelfHost所带来的众多短板(不间断运行、多线程、安全性等)。
还有一点内幕,那就是Jexus对ASP.NET5的激活方式。相信各位读者也知道,ASP.NET5的类库采用了独特的ASP.NET5 Library,目前它是与现有的程序集是互不兼容的,也暂时没有比较好的方式去处理新旧类库的关系,而Jexus对ASP.NET5的激活方式或许能够给出一条解决的道路。Adapter是通过Assembly.Load的方式激活其内嵌的DLL,继而激活并与ASP.NET5的程序进行通讯,Jexus自身成为了ASP.NET5Library与程序集之间的“中转站”,因而Jexus既使用了ASP.NET5的类库又最大限度的保障了普通类库的兼容,真正做到鱼与熊掌兼得。
好的,本节内容就到这里,有疑问或建议的读者可以到OWIN群里与我或其他大牛取得联系。需要OWIN/Jws.Mono技术支援的也可以到此群。感谢宇内大大对本篇进行技术校对,以及群里朋友借来的国外服务器。谢谢~!
此文在个人博客对应地址:http://jhonge.net/Home/Single2/1700
(如果您觉得这篇文章写得好或者有用请点个赞)
让ASP.NET5在Jexus上飞呀飞的更多相关文章
- ASP.NET5,MVC 6,Beta 7与VS 2015 RTM的兼容问题
温馨提示:本文杂而乱,最终不知所云. Visual Studio 2015 RTM已经于2015年7月20号正式发布,我也在第一时间下载安装了起来. 虽然在5月份就开始使用RC版本,但是还是很期待正式 ...
- ASP.NET5 Beta8可用性
ASP.NET5 beta8现已上都的NuGet作为一个工具升级到Visual Studio2015!此版本极大地扩展.NET核心对OS X和Linux所支持的范围.您现在可以使用网络,加密和全球化特 ...
- ASP.NET5 Beta8
ASP.NET5 Beta8 ASP.NET5 beta8现已上都的NuGet作为一个工具升级到Visual Studio2015!此版本极大地扩展.NET核心对OS X和Linux所支持的范围.您现 ...
- 为支持ASP.NET5跨平台,Jexus再添新举措
Jexus作为一款运行于Linux/FreeBSD平台上,以支持ASP.NET著称的高性能HTTP服务器和反向代理服务器,继5.6版完成对OWIN标准应用的支持后,就把着力点放到了对ASP.NET5的 ...
- IIS 上发布ASP.NET5
原文 http://docs.asp.net/en/latest/publishing/iis.html 1.安装HTTP Platform Handler ,这个是必需的,不然无法通过IIS访问AS ...
- 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。
写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...
- 从ASP.NET 升级到ASP.NET5(RC1) - 翻译
前言 ASP.NET 5 是一次令人惊叹的对于ASP.NET的创新革命. 他将构建目标瞄准了 .NET Core CLR, 同时ASP.NET又是对于云服务进行优化,并且是跨平台的框架.很多文章已经称 ...
- ASP.NET5 中静态文件的各种使用方式
所谓静态文件,包含HTML文件,css文件.图片文件和js文件等,他们是服务器直接读取到客户端的一些资源,在这篇文章中,我们将解释关于ASP.NET5和静态文件的一些内容. 服务端的静态文件 默认情况 ...
- ASP.NET5配置
ASP.NET5支持各种各样的配置,应用程序配置数据可以来自JSON, XML或者INI格式的文件,也能来自环境变量,你也可以自定义你自己的Configuration Provider. 1. 获取和 ...
随机推荐
- ExtJS 4.2 评分组件
上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- ExtJS 4.2 业务开发(一)主页搭建
本篇开始搭建一个ExtJS 4.2单页面应用, 这里先介绍主页的搭建,内容包括:主页结构说明.扩展功能等方面. 目录 1. 主页结构说明 2. 扩展功能 3. 在线演示 1. 主页结构说明 1.1 主 ...
- Ngrok让你的本地Web应用暴露在公网上
1.Ngrok介绍 Ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道.Ngrok可捕获和分析所有通道上的流量,便于后期分析和重放.简单来说,利用 Ngrok可以 ...
- mysql 7下载安装及问题解决
mysql 7安装及问题解决 一.mysql下载 下载地址:https://www.mysql.com/downloads/ Community (GPL) Downloads MySQL Commu ...
- 如何远程关闭一个ASP.NET Core应用?
在<历数依赖注入的N种玩法>演示系统自动注册服务的实例中,我们会发现输出的列表包含两个特殊的服务,它们的对应的服务接口分别是IApplicationLifetime和IHostingEnv ...
- 玩转spring boot——AOP与表单验证
AOP在大多数的情况下的应用场景是:日志和验证.至于AOP的理论知识我就不做赘述.而AOP的通知类型有好几种,今天的例子我只选一个有代表意义的“环绕通知”来演示. 一.AOP入门 修改“pom.xml ...
- scala练习题1 基础知识
1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等: 2,在scala REPL中,计算3的平方根,然 ...
- 关于DDD的学习资料汇总
DDD(Domain-Driven Design)领域驱动设计,第一次看到DDD是在学习ABP时,在其中的介绍中看到的.what,DDD是个什么鬼,我不是小白,是大白,没听过.于是乎,度娘查查查,找到 ...