前言

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的跨平台商业应用必须从编码-->测试-->发布-->运维的生命周期内可控。

一、OWIN初探的更多相关文章

  1. OWIN初探(转)

    什么是 OWIN ? OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一 ...

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

    本文是阅读网上大牛的文章总结而成. 目录 1.Owin定义 2.为什么要用Owin 3.作用 4.总结 1.Owin定义 Owin是Open Web Interface For .NET.也就是.Ne ...

  3. OWIN初探

    什么是 OWIN ? OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一 ...

  4. 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】

    因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...

  5. 动态WebApi

    动态WebApi实现了直接对Service的调用,其实没有跨过ApiController,只是我们自己创建出ApiController 实现主要分以下几步 一 对默认WebApi服务的替换 ApiGl ...

  6. 初探Asp.net5

    说到Asp.net 5,确实让我有种激动的心情,微软的全力大招在一波一波的发出,也在牵动着每一个程序员的心.作为你们中的一员,在每次看到微软的新技术时,都满怀一种激动的心情,也同时希望微软在开源和跨平 ...

  7. ASP.NET WebApi OWIN 实现 OAuth 2.0

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...

  8. ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus

    ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus 本文承接我的上一篇博文: ASP.NET 5 Linux部署,那篇文章主要是针对最新的ASP. ...

  9. 介绍一位OWin服务器新成员TinyFox

    TinyFox 是一款支持OWIN标准的WEB应用的高性能的HTTP服务器,是Jexus Web Server的"姊妹篇".TinyFox本身的功能是html服务器,所有的WEB应 ...

随机推荐

  1. 【P1915】[usaco09 dec gold]电视游戏问题

    在百度上搜到了nzx学长的题解orz 原题: 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶叫兽的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是因为满足的牛会产更 ...

  2. jd-gui报错INTERNAL ERROR 解决办法

    问题:我用dex2jar工具反编译了apk文件,但当我用jd-gui反编译前面操作获得的jar文件的时,能很完美地看到大部分类反编译后的代码,但有一部分类不能显示出来--constants类,仅仅显示 ...

  3. sql 查询执行的详细时间profile

    1.查看profile的设置 SHOW VARIABLES LIKE '%profil%' 结果如下:profiling OFF 为关闭状态 2.开启profile 结果: 3.执行需要执行的sql ...

  4. linux 目录定义

    /     根目录,存放系统命令和用户数据等(如果下面挂载点没有单独的分区,它们都将在根目录的分区中) /boot     boot loader 的静态链接文件,存放与Linux启动相关的程序/ho ...

  5. Android学习八:获取网络图片

    看到QQ群里有个朋友说加载图片内存溢出的问题,所以就按照自己的想法试试的.但是按照他的方法,不知道为何没有发生内存溢出,不知道什么情况. 写这篇文章主要有三个目的: 1.多线程的学习 2.图片加载的学 ...

  6. Codis集群

    一.简介 Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Re ...

  7. Oracle基本教程

    Oracle基本教程 1.Oracle介绍 2.SqlPlus使用 3.用户管理与权限控制 4.数据库备份与还原 5.物理备份--Rman 6.常用查询 7.Oracle用法集锦 8.oracle修改 ...

  8. 64位weblogic11g安装

    oracle官网上下载的weblogic就是全功能版本,下面是下载 64bit  weblogic 等待下载中…… 下载完成后运行 jar 文件(不会运行jar 的请自己百度) 运行时出现如下 原因是 ...

  9. ife-task0003学习收获总结

    + 编写可维护的css原则是,尽量减少改动时要编辑的地方(减少代码重复). + CSS布局奇淫技巧之-高度自适应 高度自适应:通过绝对定位来解决高度自适应的问题,元素不设置高度,设置绝对定位,将top ...

  10. laravel/lumen 单元测试

    Testing Introduction Application Testing Interacting With Your Application Testing JSON APIs Session ...