前一篇中,咱们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序。而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,咱们将会向OWIN方向转战。html
早在三周以前,我偶然的获得了一本《SignalR Programming in Microsoft ASP.NET》,在晚上不工做的时候对这本书进行细细研读(到目前为止大概只研读了一半)。虽然目前只有英文原版,可是这本书讲得很不错,即便须要抱着一本词典来辅助阅读,那也是值得的。linux
OWIN的发展,不只对于传统的MS.NET(常规运行于Windows中的.NET)方向的开发是一个新的征程,对于咱们Linux.NET方向的开发也一样是一个新的纪元。至于关于OWIN发展所给咱们带来的好处,我这里给各位读者随意的列出这么几条:git
(1)、咱们写的代码兼容性更高,项目的迁移更可靠(固然前提是你使用的框架是支持OWIN的框架)github
(2)、社区将会更加活跃(因为OWIN具备更开放性,它鼓励了一批人把本身的创意变成现实)浏览器
(3)、Web Server咱们有更多的选择,可使用非IIS挂载本身的站点(固然在Windows下,IIS仍然为一个最佳的选择,不过目前IIS暂时没有支持OWIN,想尝试OWIN的暂时读者只能用Katana,而Linux下的Jexus则已经支持)。框架
(4)、更多……学习
不过,凡事总有两面性,OWIN所带来的除了巨大的好处以外,还带来了一些短时间内很差的附加属性,最直接的就是增长了咱们的学习成本,咱们须要同时学习VNext以前的.NET知识,以及伴随VNext新产生的知识(三五年内这个是必须的)。不过咱们目前还有Visual Studio 2014尚未正式的发布,咱们还有少量的时间供咱们赛跑。等万事已成定局的时候再来努力,那就只能看着其余人的背影了,毕竟“先来的喝汤,迟来的喝水,不来的啥都没得喝”我说得对吧?网站
咳咳,言归正传,回到本节的主题,本节中咱们将讨论学习:ui
(1)、在Linux.NET中跑OWIN程序,怎么准备spa
(2)、把两个有趣的SignalR Demo部署向Linux.NET中
(3)、搭个顺风车,NancyFx部署向Linux.NET
本文中的相关代码已经托管GitHub,你们能够点击这里进行下载。
一、咱们须要准备些什么
因为OWIN协议提出的时间并无过久,而且是许多支持OWIN的框架均是基于FrameWork 4.5的,所以为了您的程序成功部署,请使用最新版的Mono(Mono 3.4)做为Linux.NET的运行环境。这里要特别指出注意的一点,关于“Mono 3.4.tar.gz”这个包,官方所提供的安装包实际上是缺乏组件的,所以若是各位读者采用的是官方包编译那么通常是报Error的,这里咱们提供正确的安装包,须要的读者能够点击这里进行下载。
至于Linux中的OwinHost,Jexus已经率先的给予支持,各位读者只需移步到官网中下载版本为5.6以上的Jexus便可,也能够点击这里直接进行下载。
安装方法与以前的同样,须要的读者能够移步到《Linux.NET 学习手记 (1)》查阅。
还有一点须要补充的,本系列的文章中Mono的安装路径均为“/usr/local/mono/” 与不少教程中采用的“/usr/”有所不一样,所以若是选择按照本系列教程的读者,请务必确保安装步骤每一步都执行完成且正确。近期中收到了很多的朋友Jexus没法运行,找不到Mono。这些基本是没有设置好环境变量,形成系统扫描目录的时候不扫描Mono的安装目录,继而找不到bin/Mono。宇内流云也给我建议可否将安装目录由“/usr/local/mono”改成“/usr/”,不过我看了下已有文章,发生改动的话影响就很大了(衷心感受到写文章就像写项目同样,文章多了项目也变大,改一个基类全部派生的子类都遭殃了),因此就压着没有改,各位读者要千万的留意(固然,我目录的选择也是有故事的,有兴趣的读者能够留言,我能够分享出来)。
咱们一直采用的开发模式是Windows中开发,Linux中运行,OWIN中也不例外。Windows中使用Katana做为Host,发布以后采用Jexus做为Host运行。须要了解Katana安装使用的读者,也可移步到《如何安装并简单的使用OwinHost——Katana》。
二、部署两个有趣的SignalR程序到Linux.NET中
SignalR框架做为支持OWIN协议的框架,天然是能够经过挂载到OwinHost的方式部署到Linux.NET中了。在本示例代码中,里面有两个基于SignalR的Demo,具体这个Demo是怎么作出来的我在这里就不做讲解了,但愿之后有机会单独出一个SignalR的学习系列(待我以为对SignalR无惑之时),到时再针对SignalR做出详细的讲解,如今就不误导各位读者了。
咱们拿到代码以后,用Visual Studio打开它,先讲解如何部署Demo1,Demo1是一个简易的在线聊天室。
首先,咱们先在Jexus中新建一个网站配置文件:
而后在里面写上配置(固然,推荐直接拷贝出新的一份default,而后直接改里面的参数),在最后的一行中加上如下的这条语句:
OwinMain=Jws.OwinAdapter.MsOwin.dll,Jws.OwinAdapter.MsOwin.Adapter
这句话的做用是通知并让Jexus支持OWIN(我称它为OWIN模式)。
而后把咱们的Demo向Linux中发布:
打开bin目录,在bin中添加上Jexus针对OWIN的通用适配器(相关组件能够点击这里进行下载,源码则能够点击这里下载)
找到“Microsoft.AspNet.SignalR.Owin.dll”,把后缀改了或者直接删除(如图所示)
最后再重启下Jexus,而后咱们就能够用浏览器访问了(网址如图,高清大图来的)。
挺有趣的哈~!
至于Demo2,部署方式跟Demo1一致,部署成功以后的效果以下(网址也在图中):
图中的那个Guid框会跟着鼠标走,而且鼠标通过任意的浏览器,其他浏览器均会同步这个Guid的位置,挺有趣好玩的。
这里提示一下:
(1)、从新部署以后记得重启Jexus
(2)、这个Demo可能会令CPU飙升,特别是虚拟机中。
三、给NancyFX搭个顺风车
可能有个别的读者懂得怎么使用NancyFX,而且也可能手上有一些基于NancyFX框架的站点。NancyFX跟SignalR同样,一样支持OWIN协议,所以也是能够随时从Windos中向Linux中部署的。事实上,部署NancyFX可说是只是动动手指头的事情(没有用到些“特别”的组件、代码也按照标准的状况下),相比于SignalR简单多了(前面两个Demo中SignalR当时是部署不成功的,后来和宇内流云一同在调呀调呀才调试完毕,这里感谢他的技术支持)。
虽然我本人并无使用NancyFX的习惯,不过也顺带让NancyFX搭个顺风车,讲讲它怎么部署。
示例代码中,ExtraDemo是基于NancyFX作出来的Demo,咱们能够把它部署到项目文件以后,直接向Linux中发布
而后添加上Jexus的适配器:
重启Jexus,便可完成NancyFX的部署。访问页面:
目前,支持OWIN协议的框架除了文中说起的两个之外,还有其余存在,因为能力有限,那些框架我暂时也没有尝试使用过,有兴趣的读者能够自行尝试,固然也欢迎您将您的心得体会与咱们一同分享。
下一篇中,咱们将分析OwinHost与OWIN的框架究竟是怎么“沟通”的,它又是怎么“驱动”OWIN框架的。下回见。