WebApi自宿主应用

转载 2013年12月02日 09:45:58

WebApi 自宿主一例,关于Web Api的基础入门和相关概念可以参考

官方入门教程

CodeProject入门例子

 

1. 简介

  WebAPI 托管有两种方式一种是通过IIS,一种就是通过寄宿在其他程序,例如window服务,window应用程序等等,前者主要用于发布和最后调试使用,后者一般多在开发测试环节。

  我们知道WCF服务可以通过System.ServiceModel.ServiceHost来加载和打开服务,那么web api可以通过System.Web.Http.SelfHost.HttpSelfHostServer来加载打开API服务

  在使用System.Web.Http.SelfHost.HttpSelfHostServer来打开服务的时候,需要通过HttpSelfHostConfiguration来配置下主机一些参数(主要是服务地址)

2.实例

 1) 通过VS2012新建一个window form工程,然后通过Nuget获取WebAPI SeltHost库,下载安装后的包:

   

    引用命名空间:

using System.Web.Http;
using System.Web.Http.SelfHost;  

  声明变量:主机服务和配置实例对象 

 

private HttpSelfHostConfiguration _config = null;
private HttpSelfHostServer _serverhost = null;

初始化:

 

_config = new HttpSelfHostConfiguration("http://localhost:5555");

API路由 +打开服务

复制代码
            _config.Routes.MapHttpRoute(
                "API Default",
                "api/{controller}/{username}",
                new { username = RouteParameter.Optional });

            //start 
            _serverhost = new HttpSelfHostServer(_config);
            _serverhost.OpenAsync().Wait();
复制代码

模型类:

复制代码
    public class UserModel {
        [Required]
        [StringLength(16,MinimumLength=4)]
        public string UserName { get; set; }

        [Required]
        [StringLength(16,MinimumLength=4)]
        public string Password { get; set; }

        [Required]
        [RegularExpression(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")]
        public string Email { get; set; }

        [Required]
        [Range(18,36)]
        public int Age { get; set; }

    }
复制代码

 接下来我们需要设计一个测试客户端来验证我们的API

 

2) 新建一个window form工程,依旧是通过NuGet获取WebAPI Client库(用于桌面客户端程序请求API服务)

 声明一个HttpClient对象,并初始化API服务地址

 

private HttpClient _httpCLient = new HttpClient();
_httpCLient.BaseAddress =new Uri( @"http://localhost:5555");

调用

复制代码
        private void GetUsers() {
            HttpResponseMessage responseMsg = _httpCLient.GetAsync("api/user").Result;
            responseMsg.EnsureSuccessStatusCode();
            var users = responseMsg.Content.ReadAsAsync<IEnumerable<UserModel>>().Result;
            string msg = string.Empty;
            foreach (var o in users) {
                msg += string.Format("Name:{0} , Email:{1} , Age:{2}", o.UserName, o.Email, o.Age);
                msg += System.Environment.NewLine;
            }

            MessageBox.Show(msg);
        }
复制代码

 

程序运行效果图:

点击initConfig(配置/打开服务) ---- 》 点击Get( 测api/User,获取所有用户信息)

 

源码下载 ,工程基于VS2012,NET FROMWORK4.5

WebApi系列~自主宿主HttpSelfHost的实现

宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自主宿主Se...

使用OWIN 构建自宿主ASP.NET Web API 2

ASP.NET Web API 2拥有符合RESTFUL风格,原生支持HTML协议,解耦IIS和windows server服务器等诸多优秀特性。本文讲述如何使用OWIN构建ASP.NET Web A...

WebApi系列~自主宿主HttpSelfHost的实现

宿主一词我们不会陌生,它可以看作是一个基础设施,它为一些服务和功能提供最底层的支持,如你的web应用程序可以运行在iis或者apache上,而这两个东西就是web应用程序的宿主,而今天说的自主宿主Se...

WCF中采用控制台宿主和Winform宿主的主要区别

一般的文章中都写到了WCF可以采用多种宿主方式,但是对于控制台宿主和Winform宿主有哪些区别,多数没有写清楚。 对于服务端来说,WCF消息监听和接收体系通过IO线程池并发的处理来自客户端的服务调...

OWIN 自宿主模式WebApi项目,WebApi层作为单独类库供OWIN调用

为什么我们需要OWIN 过去,IIS作为.NET开发者来说是最常用的Web Server(没有之一),源于微软产品的紧耦合关系,我们不得不将Website、Web Application、Web...

MEF程序设计指南一:在应用程序中宿主MEF

在应用程序中宿主MEF其实非常简单,只需要创建一个组合容器对象(CompositionContainer)的实例,然后将需要组合的部件(Parts)和当前宿主程序添加到容器中即可。首先需要添加MEF框...

docker【7】docker运行简单的应用程序(tomcat)以及怎么把宿主机的文件copy到容器

docker 运行tomcat docker 挂载宿主机文件 docker 从容器拷贝文件到宿主机

SharePoint 2013 App 介绍3 ---应用程序宿主类型和品牌化

SharePoint 2013 应用程序模型提供了两种类型的宿主环境: ·         SharePoint –Hosted ·         Cloud-hosted (又称 R...

(Siverlight应用程序之间)通过宿主(B屏)New对象,进行的交互消息(反射)

由于最近的项目要实现一机多屏(实际上属于同一个IE,同一个Siverlight程序,通过宿主(B屏)New对象,添加到B屏容器中,并展示B与C屏共同展示),B与C屏或者多屏之间的通信,此种方法只限于程...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebApi自宿主应用
举报原因:
原因补充:

(最多只允许输入30个字)