• OWIN初探


    前言

         OWIN在.NET Web Servers与Web Application之间定义了一套标准接口,OWIN的目标是用于解耦Web Server和Web Application。基于此标准,鼓励开发者开发简单、灵活的模块,从而推进.NET Web Development开源生态系统的发展。Open Web Server Interface for .NET的首字母缩写即:OWIN

         更多关于OWIN的定义可访问百度百科

    一、OWIN

          目前微软为OWIN提供了一套解决方案即ASP.NET - Katana 项目,Katana项目依赖于OWIN.dll的类库,其中OWIN.dll类只有非常小的45k,以下为OWIN.dll的代码:

    复制代码
    using System;
    using System.Collections.Generic;
    namespace Owin
    {
        public interface IAppBuilder
        {
            IDictionary<string, object> Properties
            {
                get;
            }
            IAppBuilder Use(object middleware, params object[] args);
            object Build(Type returnType);
            IAppBuilder New();
        }
    }
    复制代码

         所以OWIN.dll只是定义了基础的接口,如何实现还需要依赖其他解决方案才能实现一个简单的Hello Word示例。所以OWIN是一套解耦Web Server和Web Application的标准,让开发者能居于该标准实现更多的底层架构。

         国内的大牛也居于OWIN标准开发了一套OWIN的Web Server,TinyFox

    二、用Katana实现一个自服务的OWIN的Hello Word

         需要引用一下程序集(可通过Nuget获取)。

         1、Owin.dll

         2、Microsoft.Owin.dll

         3、Microsoft.Owin.Hosting.dll

         4、Microsoft.Owin.Host.HttpListener.dll

        创建一个控制台程序

        新建一个Startup.cs文件,代码如下:

    复制代码
    public class Startup
    {
         public void Configuration(IAppBuilder app)
         {
             app.Run(HandleRequest);
         }
    
         static Task HandleRequest(IOwinContext context)
         {
             context.Response.ContentType = "text/plain";
             return context.Response.WriteAsync("Hello, world!");
         }
    }
    复制代码

    其中IAppBuilder接口定义于OWIN.dll,IOwinContext定义于Microsoft.Owin.dll.

         修改Program.cs文件,代码如下:

    复制代码
    static void Main(string[] args)
    {
         var url = "http://localhost:8080/";
         var startOpts = new StartOptions(url);
         using (WebApp.Start<Startup>(startOpts))
         {
             Console.WriteLine("第一个Owin自服务" + url);
             Console.ReadLine();
         }
    }
    复制代码

    、意义

         owin编写的自服务,可以运行于windows、Linux、FreeBSD。为C#的夸平台提供了可行的方案。在Windows上我们有强大的IIS,简易的部署方式。但是将NET程序部署至Linux、FreeBSD总是存在不同的坑,在Linux上部署Web应用,国内大部分使用的是Jexus。

         个人认为OWIN最大的进步是将owin + Web API + docker打包将Linux的环境部署的“坑”进一步可控,每次更新将一个稳定的Docker程序发布即可。为NET的跨平台商业应用必须从编码-->测试-->发布-->运维的生命周期内可控。

     
    **********************转摘:https://www.cnblogs.com/maydear/p/4695944.html
     
  • 相关阅读:
    <script type="javascript"> 与<script language="javascript"> 有什么区别啊
    <script language="JavaScript"> or <script type="text/javascript"> ?
    EL表达式
    为什么我用花括号jsp上就显示不出括号里的内容啊,大侠们帮帮忙
    structs2:action如何从页面获取参数值以及如何向页面传出参数值(set方法 、get方法、getParameters()方法
    HTML <script> 标签的 type 属性
    EL表达式EL表达式
    EL表达式(详解)
    java时间戳是什么
    window.onload函数用法
  • 原文地址:https://www.cnblogs.com/linybo/p/12100379.html
Copyright © 2020-2023  润新知