就在本文撰写的前一个礼拜,Jexus的作者宇内流云就私下跟我说他即将发布一款Windows/Linux/Unix三大平台可用的轻量级基于OWIN协议的运行容器。而在本文撰写的两天前(周四),这款新的OwinHost迎来了内测。我有幸的获得了内测的版本,预计正式版本将很快能够在“大本营”下载到,现在先让我们对这个新的OwinHost先睹为快:
本文我们将介绍:
(1)、这只“狐狸”的构成
(2)、使用TinyFox的方法
一、这只“狐狸”的构成
轻身如燕,是对这款OwinHost的最直观评价,它非常的小,整个Host的大小用7Z打包了仅仅只有1.26M大小。拆开压缩包之后,我们能够发现几个重要的组成,如下图所示:
“native”:所有这个OwinHost的支撑组建放在这里。
“site”:我们的OWIN WebApplication 放这里。
“tools”:里面包含了Host的适配器。
“fox.sh”:方便在*nux中启动Host而写的脚本文件。
“fox.bat”:方便在Windows中其中Host而写的批处理文件。
“owinhost.exe”:这个OwinHost的程序主体。
“owinhost.exe.config”:配置文件,通过这个可以CLR版本等。
“ReadMe”:读我,使用方法和Q&A。
没了,就这几个东西,结构很简单,功能也很“单纯”,但性能却不简单,采用全异步的事件驱动,同时最大化的继承Jexus高强度抗压抗攻击的优点,最大限度的保证了应用的安全性和稳定性。
二、使用TinyFox的方法
比起噜里八嗦的介绍,怎么使用才是读者们真正关注的话题,这里我准备了一个NancyFX作为案例,为各位读者讲解。
首先,很常规的,我们准备了一个采用了OWIN模式的NancyFX的新站。然后加入Adapter.cs文件,这里我把Adapter的代码公开,有需要的读者可以直接拷贝入项目中。
internal class Adapter { private static Func<IDictionary<string, object>, Task> _owinApp; public Adapter() { var builder = new AppBuilder(); var startup = new Startup(); startup.Configuration(builder); _owinApp = builder.Build(); } public Task OwinMain(IDictionary<string, object> env) { if (_owinApp == null) return null; return _owinApp(env); } }
最后修改下NancyFX的默认的根目录设置,具体操作就是新建一个类,让他继承“IRootPathProvider”并重写“GetRootPath”方法即可,代码示例如下:
public class RootPath : IRootPathProvider { public string GetRootPath() { var basep = AppDomain.CurrentDomain.BaseDirectory; var rp = Path.Combine(basep, "site", "wwwroot"); return rp; } }
发布后,把网站的全部内容放入到“wwwroot”目录中。
然后双击运行 owinhost.exe 。
我们就可以在浏览器中正常的访问我们的项目了。
熟悉的NANCY页面已经展现在我们面前。
“轻身如燕,快如闪电”这就是TinyFox的本质。
好的。我们本次体验就到此结束,相信这款高性能OwinHost会很快发布,到时各位读者就可以在“大本营”中下载。谢谢大家。