OWIN初探

什么是 OWIN ?

  OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦, 鼓励为 .NET 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 。

  怎么使用 OWIN

  OWIN 通过 NuGet 包的形式发布, 获取和使用都非常方便。 下面就先建立一个最简单的 OWIN 应用:

  1. 打开 Xamarin Studio, 新建一个 C# 命令行程序, 如下图所示:

  2. 然后打开项目属性, 确认目标框架设置为 Mono/.NET 4.5 , 如下图所示:

  3. 向项目中添加如下几个 NuGet 包:
    • Owin
    • Microsoft.Owin
    • Microsoft.Owin.Hosting
    • Microsoft.Owin.Host.HttpListener
  4. 添加一个 OWIN Startup 类, 代码如下:
    public class Startup {
        public void Configuration(IAppBuilder appBuilder) {
            appBuilder.Run(HandleRequest);
        }
        static Task HandleRequest(IOwinContext context) {
            context.Response.ContentType = "text/plain";
            return context.Response.WriteAsync("Hello, world!");
        }
    }

    OWIN 约定的处理请求的代理类型是:

    Func<IOWinContext, Task> handler

    对应上面 Startup 类的 HandleRequest 方法, 所以上面的 Startup 类就定义了一个最简单的 OWIN 应用, 向客户端输出 Hello, World!

  5. 在自动生成的 Program.cs 文件中的 Main 方法中添加如下代码, 来启动 OWIN 应用:
    class MainClass {
        public static void Main(string[] args) {
            var url = "http://localhost:8080/";
            var startOpts = new StartOptions(url) {
            };
            using (WebApp.Start<Startup>(startOpts)) {
                Console.WriteLine("Server run at " + url + " , press Enter to exit.");
                Console.ReadLine();
            }
        }
    }
  6. 现在开始运行程序, 命令行显示如下:

    打开浏览器, 访问 http://localhost:8080/ , 得到的响应如下:

  到目前为止, 没有 Windows , 更没有 IIS , OWIN 应用就能正常运行了。

时间: 2024-10-13 23:01:16

OWIN初探的相关文章

C# Owin初探 概念理解(一)

原文:C# Owin初探 概念理解(一) 本文是阅读网上大牛的文章总结而成. 目录 1.Owin定义 2.为什么要用Owin 3.作用 4.总结 1.Owin定义 Owin是Open Web Interface For .NET.也就是.Net开源的web接口,听起来口气有点大,值得我们下面深入了解. 2.为什么要用Owin 百度百科的CV大法 过去,IIS作为.NET开发者来说是最常用的Web Server(没有之一),源于微软产品的紧耦合关系,我们不得不将Website.Web Applic

上周热点回顾(11.24-11.30)

热点随笔: · 我是如何在SQLServer中处理每天四亿三千万记录的(马非码)· VS2015 Apache Cordova第一个Android和IOS应用(aehyok)· 薪资至少10K的一道题,你能拿下吗(小尧弟)· VS2015 ASP.NET5 Web项目结构浅析(aehyok)· 充满想象力的 JavaScript 物理和重力实验(梦想天空(山边小溪))· 用于新浪微博,腾讯QQ,淘宝 OAuth2.0 登陆的NET类库封装(天真的好蓝啊)· 无法到达的快递地址 一次偷懒表设计带来

初探Owin--.NET下的web服务器简易实现

废话先: 也许大家都知道很流行也是非常有意思的Node.js,用它开发web可以说是开发效率很高,而且部署十分的方便,一般的比如ASP.NET MVC 或者是JSP,发布的时候都需要IIS或者是Apache这样的web服务器.这样做有些费事(相对于Node.js),在Node.js中只需要这么几行的代码就可以创建一个web服务器: 1: var http = require('http'); 2:   3: http.createServer(function(res,req){ 4: req.

初探Asp.net5

说到Asp.net 5,确实让我有种激动的心情,微软的全力大招在一波一波的发出,也在牵动着每一个程序员的心.作为你们中的一员,在每次看到微软的新技术时,都满怀一种激动的心情,也同时希望微软在开源和跨平台的这条路上一路光明,乘风破浪. 看了博友们写的一些关于Asp.net 5的博客,博主我也情不自禁,想在这里留下点什么,关注一下新技术,接下来,我会持续关注这方面的动态,也会第一时间分享给大家. 初探Asp.net 5 想要了解五君(asp.net 5),首先我们先来说说关于他的一些特性: ASP.

如何定义一个有效的OWIN Startup Class

命名约定 Katana在程序集内的程序集名称空间下查找一个叫做Startup的类, 通过属性指定 [assembly: OwinStartup(typeof(OwinConsoleApp.Startup))] 通过配置文件 <add key="owin:appStartup" value="OwinConsoleApp.Startup1" /> 定义友好命名的Startup类 <appSettings> <add key="o

进阶之初探nodeJS

一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法--想在该篇随笔中,通过一步步编写一个稍大一点的node示例,让我们在整体上更加全面地了解node. so,该篇随笔是建立在"初探nodeJS"之上的,固取名为"进阶之初探nodeJS". 好了,侃了这多,那么我们即将实现一个

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分

[转载]HDFS初探之旅

转载自 http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html , 感谢虾皮工作室这一系列精彩的文章. Hadoop集群(第8期)_HDFS初探之旅 1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.它所具有的高容错.高可靠性.高可扩展性.高

MongoDB初探系列之二:认识MongoDB提供的一些常用工具

在初探一中,我们已经可以顺利的将MongoDB在我们自己的机器上跑起来了.但是在其bin目录下面还有一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹下创建的文件的用途. 1.bin目录下面的各种小工具简介及使用方式 bsondump.exe 用于将导出的BSON文件格式转换为JSON格式mongo.exe mongoDB的客户端 mongod.exe 用于启动mongoDB的Server mongodump.exe 用于从mongodb数据库中导