zoukankan      html  css  js  c++  java
  • OWin

    什么是 OWIN ?

      OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦, 鼓励为 .NET Web 应用开发简单模块。Owin将web服务器从web应用程序中抽象出来,所以还需要选择一种方式将应用程序链接到选择的Web服务器。

      OWIN 是一个开源开放的标准, 有助于建设 .NET 开发的开源生态环境,OWIN 定义了如下几个概念:

    • 服务器 (Server)

      HTTP 服务器直接与客户端交互, 并用 OWIN 语义处理请求,服务器需要一个适配层将客户请求转换 成 OWIN 语义。 支持 OWIN 的服务器有 Katana 和 Nowin 。

    • Web 框架 (Web Framework)

      构建在 OWIN 之上的自包含的独立组件, 向 Web 应用提供可用的对象模型或者接口。 Web 框架可 能需要一个适配层来转换 OWIN 语义。 支持 OWIN 的 Web 框架有:

    • Web 应用 (Web Application)

      一个特定的 Web 应用, 通常构建在 Web 框架之上, 使用 OWIN 兼容的服务器运行。

    • 中间件 (Middleware)

      特定目的的服务器和应用之间的可插拔组件, 可以监视、 路由、 修改请求与响应。

    • 宿主 (Host)

      应用与服务器所在的进程, 主要负责应用的启动, 有些服务器自身也是宿主, 比如 Nowin 。

      为什么使用 OWIN

      正如上面所说, OWIN 定义了 .NET Web 服务器与 .NET Web 应用之间的标准接口, 将应用与服务器 解耦, 使得便携式 .NET Web 应用以及跨平台的愿望成为现实, 标准的 OWIN 应用可以在任何 OWIN 兼容的服务器上运行, 不再依赖与 Windows 和 IIS 。

    创建一个控制台程序

    新建一个Startup类

    需要通过nuget安装 Microsoft.AspNet.WebApi.OwinSelfHost

     public class Startup
        {
           public void Configuration(IAppBuilder appBuilder)
           {
                //创建一个HTTP的实例配置
                HttpConfiguration config =new HttpConfiguration();
                //映射路由
                config.Routes.MapHttpRoute(
                   name: "Defaultapi",
                   routeTemplate: "api/{controller}/{id}",
                   defaults: new {id = RouteParameter.Optional}
                   );
                //将配置注入OWIN管道中
                appBuilder.UseWebApi(config);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                string addressUrl = "Http://localhost:8880/";
                WebApp.Start<Startup>(url: addressUrl);
                Console.WriteLine("程序已启动,按任意键退出");
                Console.ReadLine();
            }
        }
    创建一个api控制器
    
       public class BlogController: ApiController
        {
           public string GetName()
           {
               return "东升,你好";
           }
        }

  • 相关阅读:
    vue异步组件
    vue-awesome-swiper的使用
    自定义button组件时slot的使用
    axios拦截器的简单使用
    vue静态类名和动态类名绑定的几种方式
    快速知道所有元素的边框
    【转】CICD工具
    mocha学习(四)为项目开发一个BDD测试
    mocha学习(三)hook 机制 和 测试技巧
    mocha学习(二)mocha接口
  • 原文地址:https://www.cnblogs.com/xiaoyaodijun/p/4334964.html
Copyright © 2011-2022 走看看