前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OWIN 初探

OWIN 初探

作者头像
beginor
发布2020-08-10 14:26:51
6270
发布2020-08-10 14:26:51
举报

OWIN 初探

什么是 OWIN ?

OWIN 的全称是 “Open Web Interface for .NET”, OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口, 其目的是为了实现服务器与应用之间的解耦, 鼓励为 .NET Web 应用开发简单模块。

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

  • 服务器 (Server) HTTP 服务器直接与客户端交互, 并用 OWIN 语义处理请求, 服务器需要一个适配层将客户请求转换 成 OWIN 语义。 支持 OWIN 的服务器有 KatanaNowin
  • 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# 命令行程序, 如下图所示:
OWIN Hello
OWIN Hello
  1. 然后打开项目属性, 确认目标框架设置为 Mono / .NET 4.5 , 如下图所示:
OWIN Hello
OWIN Hello
  1. 向项目中添加如下几个 NuGet 包:
    • Owin
    • Microsoft.Owin
    • Microsoft.Owin.Hosting
    • Microsoft.Owin.Host.HttpListener
  2. 添加一个 OWIN Startup 类, 代码如下:
代码语言:javascript
复制
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!");
    }
}
  1. OWIN 约定的处理请求的代理类型是:
代码语言:javascript
复制
Func<IOWinContext, Task> handler
  1. 对应上面 Startup 类的 HandleRequest 方法, 所以上面的 Startup 类就定义了一个最简单的 OWIN 应用, 向客户端输出 Hello, World!
  2. 在自动生成的 Program.cs 文件中的 Main 方法中添加如下代码, 来启动 OWIN 应用:
代码语言:javascript
复制
class MainClass {
   
    public static void Main(string[] args) {
        var url = "https://localhost:8080/";
        var startOpts = new StartOptions(url) {
   
        };
        using (WebApp.Start<Startup>(startOpts)) {
            Console.WriteLine("Server run at " + url + " , press Enter to exit.");
            Console.ReadLine();
        }
    }
}
  1. 现在开始运行程序, 命令行显示如下:
OWIN Hello
OWIN Hello

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

OWIN Hello
OWIN Hello

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OWIN 初探
    • 什么是 OWIN ?
      • 为什么使用 OWIN
        • 怎么使用 OWIN
        相关产品与服务
        消息队列 TDMQ
        消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档