前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序。而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战。

早在三周之前,我偶然的得到了一本《SignalR Programming in Microsoft ASP.NET》,在晚上不工作的时候对这本书进行细细研读(到目前为止大概只研读了一半)。虽然目前只有英文原版,但是这本书讲得很不错,即使需要抱着一本词典来辅助阅读,那也是值得的。

OWIN的发展,不仅对于传统的MS.NET(常规运行于Windows中的.NET)方向的开发是一个新的征程,对于我们Linux.NET方向的开发也同样是一个新的纪元。至于关于OWIN发展所给我们带来的好处,我这里给各位读者随意的列出这么几条:

  (1)、我们写的代码兼容性更高,项目的迁移更可靠(当然前提是你使用的框架是支持OWIN的框架)

  (2)、社区将会更加活跃(由于OWIN具有更开放性,它鼓励了一批人把自己的创意变成现实)

  (3)、Web Server我们有更多的选择,可以使用非IIS挂载自己的站点(当然在Windows下,IIS仍然为一个最佳的选择,不过目前IIS暂时没有支持OWIN,想尝试OWIN的暂时读者只能用Katana,而Linux下的Jexus则已经支持)。

  (4)、更多……

不过,凡事总有两面性,OWIN所带来的除了巨大的好处之外,还带来了一些短期内不好的附加属性,最直接的就是增加了我们的学习成本,我们需要同时学习VNext之前的.NET知识,以及伴随VNext新产生的知识(三五年内这个是必须的)。不过我们目前还有Visual Studio 2014还没有正式的发布,我们还有少许的时间供我们赛跑。等万事已成定局的时候再来努力,那就只能看着其他人的背影了,毕竟“先来的喝汤,迟来的喝水,不来的啥都没得喝”我说得对吧?

咳咳,言归正传,回到本节的主题,本节中我们将讨论学习:

  (1)、在Linux.NET中跑OWIN程序,怎么准备

  (2)、把两个有趣的SignalR Demo部署向Linux.NET中

  (3)、搭个顺风车,NancyFx部署向Linux.NET

本文中的相关代码已经托管GitHub,大家可以点击这里进行下载。


1、我们需要准备些什么

由于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》

2、部署两个有趣的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飙升,特别是虚拟机中。

3、给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框架的。下回见。

Linux.NET学习手记(7)的更多相关文章

  1. Linux.NET学习手记(8)

    上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...

  2. 关于《Linux.NET学习手记(8)》的补充说明

    早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OW ...

  3. Linux.NET学习手记(6)

    各位读者大家好,好长一段时间没有更新文章了,自从参加工作之后,每天等待去做的工作没完没了,个人的时间也变得奢侈起来,今后要尽量从中脱身,抽更多的时间来完成自己想做的事情(希望如此). 言归正传,上一回 ...

  4. Linux.NET实战手记—自己动手改泥鳅(上)

    各位读者大家好,不知各位读者有否阅读在下的前一个系列<Linux.NET 学习手记>,在前一个系列中,我们从Linux中Mono的编译安装开始,到Jexus服务器的介绍,以及如何在Linu ...

  5. Linux LVM学习总结——扩展卷组VG

    Linux服务器由于应用变更或需求的缘故,有可能出现分区空间不足的情况,此时往往需要进行扩容(要增加分区的空间),而采用LVM的好处就是可以在不需停机的情况下可以方便地调整各个分区大小.如下所示,分区 ...

  6. linux的学习记录随笔

    为什么学习linux 因为操作系统是一种介质,你要接触其中的东西,首先必须要有介质,而linux在服务器端是老大哥的地位,所以呢,学习linux吧. 学习的方式 可以看视频 imooc.百度传课.网易 ...

  7. Linux LVM学习总结——创建卷组VG

    在Linux平台如何创建一个卷组(VG)呢?下面简单介绍一下卷组(VG)的创建步骤.本文实验平台为Red Hat Enterprise Linux Server release 6.6 (Santia ...

  8. 别出心裁的Linux命令学习法

    别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...

  9. EF框架学习手记

    转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架 ...

随机推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

    系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...

  2. 神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观

    前言 哦,不搞SQL了么,当然会继续,周末会继续更新,估计写完还得几十篇,但是我会坚持把SQL更新完毕,绝不会烂尾,后续很长一段时间没更新的话,不要想我,那说明我是学习新的技能去了,那就是学习英语,本 ...

  3. pt-ioprofile

    pt-ioprofile是用来观察特定进程的IO信息的. 该脚本是用shell写的,有两方面的作用: pt-ioprofile does two things: ) ) is not performe ...

  4. 简约之美Jodd-http--深入源码理解http协议

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...

  5. Angular源码分析之$compile

    @(Angular) $compile,在Angular中即"编译"服务,它涉及到Angular应用的"编译"和"链接"两个阶段,根据从DO ...

  6. html5 与视频

    1.视频支持格式. 有3种视频格式被浏览器广泛支持:.ogg,.mp4,.webm. Theora+Vorbis=.ogg  (Theora:视频编码器,Vorbis:音频编码器) H.264+$$$ ...

  7. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  8. ls: 无法访问/usr/sbin/smartctl: 没有那个文件或目录

    环境:RHEL6.5 + Oracle 11.2.0.4 RAC 在安装RAC时,检查时缺少包 cvuqdisk-1.0.9-1,oracle提供脚本修复安装. 但在执行时报错: [root@orad ...

  9. C++随笔:.NET CoreCLR之corleCLR核心探索之coreconsole(1)

    一看这个标题,是不去取名有点绕呢?或者是,还有些问题?报告LZ...你的标题取得有问题,是个病句!↖(^ω^)↗!!!先不要急,其实我今天带给大家的就是CoreCLR中的coreclr.其中它是在名字 ...

  10. 设计模式之行为类模式大PK

                                        行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...