2015/6/13 技术探讨

    就在本文撰写的前一个礼拜,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的代码公开,有需要的读者可以直接拷贝入项目中。 

Adapter.cs
复制代码
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);
        }
    }
复制代码
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

    最后修改下NancyFX的默认的根目录设置,具体操作就是新建一个类,让他继承“IRootPathProvider”并重写“GetRootPath”方法即可,代码示例如下:

RootPath.cs
复制代码
public class RootPath : IRootPathProvider
{
    public string GetRootPath()
    {
        var basep = AppDomain.CurrentDomain.BaseDirectory;
        var rp = Path.Combine(basep, "site", "wwwroot");
        return rp;
    }
}
复制代码
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

     发布后,把网站的全部内容放入到“wwwroot”目录中。

 

   然后双击运行 owinhost.exe 。

 

   我们就可以在浏览器中正常的访问我们的项目了。

    熟悉的NANCY页面已经展现在我们面前。

    “轻身如燕,快如闪电”这就是TinyFox的本质。 


    好的。我们本次体验就到此结束,相信这款高性能OwinHost会很快发布,到时各位读者就可以在“大本营”中下载。谢谢大家。

  [ OWIN ]   [ C# ]   [ OwinHost ]   [ WebServer ]
知识共享许可协议 本作品由小蝶惊鸿创作,采用知识共享署名 4.0 国际许可协议进行许可,转载时请保留本文署名及链接。