初探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.writeHead(200,{‘Content-Type‘:‘text/plain‘});
   5:      res.end(‘hello Wrold‘);
   6:  }).listen(3000,function(){
   7:      console.log(‘server run ```‘)
   8:  });

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

恩,这样就可以运行了,在浏览器里键入localhost:3000你就会看到世界统一的也是夺走很多程序员第一次编程的那句经典的话:Hello
Wrold

那么说了这么多,和我们的今天要说的主题好像没有半点关系啊,边都沾不上,好,那我们现在进入主题,之所以在这里写上这么几行Node.js代码是为下面的主题内容铺垫的。

主题:

很多人都知道,如果用ASP.NET MVC 写一个hello
world,IDE会为你自动创建很多文件的,这是十分的繁琐和蛋疼的。那么Owin可以为我们做些什么呢?那就让我们初探一下Owin吧,首先创建一个ASP.NET
empty web Application.创建成功后,我们打开Nuget,安装相关的owin包,如图:

安装成功后,我们在继续创建一个startUp类,之后键入如下的代码:

   1:  public void Configuration(IAppBuilder app)
   2:          {
   3:              app.UseHandlerAsync((req, res) =>
   4:              {
   5:                  res.ContentType = "text/plain";
   6:                  return res.WriteAsync("hello world");
   7:              });
   8:          }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

大家可能猜到之后的运行效果了,这是不是和上面的额node.js很像?是不是很神奇,我们按一下f5,赶紧运行,你看看会出现什么?what?满屏的error提示,究极除了什么问题?看着error我们找到了错误,我们还需要在web.config中配置一下:

  <appSettings>
<add key="owin:HandleAllRequests" value="true" />
<add key="owin:AppStartup" value="tryOwin.startUp" />
</appSettings>

在这里第一个add就是设置他这个owin处理所有的请求,而这个第二个,是干啥的?聪明的你看到了key中的AppStartup可能就猜到了,对你猜的没错,这个就是设置它的启动文件的。但是这里我们可以偷一下懒,owin中有这样的规定:启动类定义为:Startup,在这个类中有一个Configuration方法,这是它的规定,owin会自动找的,如果你按照这个办法,我们就不需要按照我的办法写的,我也是首先尝试失败了才知道了:)

难道我的这篇博文到这里就结束了?就这么一点?怎么可能,还有更好玩的东西呢,我们再添加一个包:

当我们添加这个包之后,会有一个神奇的地方,interesting!!我们打开我们的cmd,到我们这个项目的根目录下,键入owinhost.你会发现,它就直接的运行了,没有IIS
express的运行,就这么赤裸裸的直接运行了。

我喜欢mvc的模式,那么用这个我们可以实现么?好!我们在添加一个包:

这是我通过控制台添加的,反正都一样,在于你怎么选择了。嘿嘿

添加之后,我们键入如下代码,算了在这里我把所有代码都贴上吧,下面就不贴了:

   1:  public void Configuration(IAppBuilder app)
   2:          {
   3:   
   4:              var config = new HttpConfiguration();
   5:              config.Routes.MapHttpRoute("default", "{controller}");
   6:              app.UseWebApi(config);
   7:              app.UseHandlerAsync((req, res) =>
   8:              {
   9:                  res.ContentType = "text/plain";
  10:                  return res.WriteAsync("hello world");
  11:              });
  12:          }
  13:      }
  14:   
  15:      public class HomeController : ApiController
  16:      {
  17:          public int[] GetValues()
  18:          {
  19:              return new[] { 1, 2, 3 };
  20:          }
  21:      }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

之后打开我们的git工具,键入curl http://localhost:运行端口号/home。

我们会得到返回值 1,2,3,如果你的电脑上没有git工具,你可以使用Google的一个工具,Postman,这也挺不错的。

好了,我们这次的初探owin到这也就全部结束了。我也在不断的学习。这也是我看一个国外视频介绍owin时记录的。

声明:

本篇博文属于原创,允许转载,但请标明原始连接!!

时间: 2024-10-08 03:10:23

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

ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程(转+亲测)

ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程 1.切换管理员身份 在ubuntu中需要用root身份进行操作,所以用下面的命令确保以root身份登录: sudo su 2.开始安装ssh (安装SSH-server:(用Xshell操作更方便,先获得ssh服务支持)sudo apt-get updatesudo apt-get install openssh-server openssh-client启动SSH-Serversudo /etc/init.d

CentOS 6.2下搭建Web服务器

1Centos 6.2下搭建web服务器 如今,Linux在Web应用越来越广,许多企业都采用Linux来搭建Web服务器,这样即节省了购买正版软件的费用,而且还能够提高服务器的安全性. 之前我们介绍了如何在openSUSE 12.1下搭建Web服务器,里面详细介绍了在openSUSE 12.1下搭建服务器的方法,其实除了Red Hat和openSUSE,CentOS也是人们经常用到的搭建Web服务器的Linux版本. CentOS是企业Linux发行版领头羊Red Hat Enterprise

server2016下搭建web服务器&amp;三种虚拟主机实验文档

安装web服务器 首先打开server2016的服务器管理器,点击添加角色和功能如图所示: 开始之前默认下一步如图所示: 安装类型默认下一步选择基于角色或基于功能的安装如图所示: 服务器选择默认下一步如图所示: 服务器角色选择web服务器(IIS)如图所示: 功能选项一般默认即可哦如图所示: 确认下无误后点击安装如图所示: 安装完成点击关闭如图所示: 以上web服务器安装完成我们在Windows管理工具里打开如图所示: 点击打开后点到网站会有一个站点在这里我们可以进行操作更改,点击这里的web网

外网主机访问虚拟机下的web服务器(NAT端口转发)

主机:系统win7,ip地址172.18.186.210 虚拟机:VMware Workstation 7,虚拟机下安装了Centos操作系统,ip地址是192.168.202.128,部署了LAMP,成为一个web服务器 网络环境:校园网(有认证服务器,需要账号认证才能上网),虚拟机采用NAT的方式联网 在校园网的环境下,可以把校园网内的其他主机看成是外网的主机.其实,虚拟机采用NAT联网的方式,可以让我们联想到计算机网络的相关知识,可以把我们的主机看成是一部路由器,然后虚拟机就是处在一个局域

Ubuntu 12.04下搭建Web服务器 (MySQL+PHP+Apache)(转)

看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这个适合新手.所以这里就跟大家分享下.其实这个网上也有教程的,但我这里算是优化前辈们的教程吧,因为 我当时按照他们的操作时卡了几次,因为他们的有的地方没讲清楚. Ubuntu 12.04(代号Precise Pangolin)是一个LTS长期支持版本,已如约正式发布.Ubuntu 12.04是第16代Ubu

Linux下Nginx web服务器的实现及功能模块指令详解

Nginx (engine x)是一个高性能的HTTP和反向代理服务器,也是一款轻量级的Web 服务器 关于http协议的相关概念: URL统一资源定位符的形式: shceme://username:[email protected]:port/path;params?query#frag http事务:一次请求和一次响应构成一次事务 request请求格式:         <method><URL><VERSION>         HEADERS         

Ubuntu14.4下搭配WEB服务器(apache + php + mysql)

今天,趁着自己动手安装web服务器的余热,将Ubuntu14.4搭配WEB服务器的过程记录下来. “一切皆文件”. 说明:网上关于类似搭配web服务器的教程,案例不计其数,但自己亲自动手“试试”,一定会有不一样的所获. 1.用户 默认为普通用户.也就是缺省的用户:user.  当然这个user是你登录系统的名称.如:wuheng wuheng@wuheng-virtual-machine:~$ 1-1,从user用户切到root用户 命令: wuheng@wuheng-virtual-machi

python下的web服务器模块

python下的web服务模块有三种: BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类 CGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类. 下面是CGIHTTPServer类示例: 1 [email protected]:~/cp# tre

Netbeans下远程web服务器部署

有时候会碰到这种情况,本地只有开发环境,没有运行环境,即有netbeans,但没有apache/nginx .mysql等等. 这是就需要将本地开发的代码同步到远程web服务器中. 一.用netbeans打开项目 如果是已有项目,直接新建项目--->基于已有php代码--->项目建完后,右击项目名--->属性--->运行配置--->设置见下图 二.远程连接设置: 点击 “管理” 进入远程连接设置--->设置如下  //端口22,是因为使用sftp 三.上载文件方式选择