• 使用ASP.Net WebAPI构建REST服务(六)——Self-Host


    Asp.Net WebAPI生成的是一个程序集,并不是独立的进程,因此,要运行的时候必须将其承载在相应的宿主上,一般比较常见的是IIS承载。很多时候,我们为了简化部署或者功能集成,需要将其承载到独立的进程上,这种方式一般称之为Self-Host,本文就简单的介绍一下WebAPI的SefHost方法。

    首先在Nuget上安装Microsoft.AspNet.WebApi.SelfHost库。

        

    附上我们的WebAPI控制器

        public class ValuesController : ApiController
        {
            public IEnumerable<string> Get()
            {
                return new string[] { "111", "222" };
            }
        }

    接下来的工作就是启动我们的服务器了。

        class Program
        {
            static void Main(string[] args)
            {

                //Assembly.Load("WebApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");    //加载外部程序集
                var config = new HttpSelfHostConfiguration("http://localhost:8080");

                config.Routes.MapHttpRoute(
                    "API Default", "api/{controller}/{id}",
                    new { id = RouteParameter.Optional });

                using (var server = new HttpSelfHostServer(config))
                {
                    server.OpenAsync().Wait();
                    Console.WriteLine("Press Enter to quit.");
                    Console.ReadLine();
                }
            }
        }

    从上面的代码可以看出,配置文件和Asp.Net程序中基本上是一样的,如果是直接用Asp.Net项目中生成的DLL的话,我们也可以直接用其WebApiConfig.Register的方法来进行配置的(需要像第一行注掉的那样使用Assembly.Load加载程序集)。下面一段就是启动服务器了,也没有太多好介绍啊的。更多内容可以参看MSDN文档:http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api

    值得一提的是,SelfHost是在一个独立进程中启动了Http服务,也可以是说,它是一个mini版的Http服务器,我之前介绍过通过HttpListener实现简单的Http服务,到了现在,用WebAPI的SelfHost方式是可以更加快捷的实现扩展性更好的Mini Http服务器的,当我们需要一个简单的Http服务的时候,可以使用这种方式。

    除了这种方式外,微软更加推荐用功能更加强大的OWIN来承载WebAPI服务,由于目前对OWIN还没有怎么研究过,后续有时间再介绍一下它。

    另外,除了IIS、SelfHost等方式外,云时代发布到Windows Azure也是非常便捷的,这里就不做多少介绍了,详细内容请参看MSDN文档:http://www.asp.net/web-api/overview/hosting-aspnet-web-api 。

  • 相关阅读:
    安装mysql-python:EnvironmentError: mysql_config not found
    github中non-fast-forward错误的解决
    centos 6.X 安装scrapy-原创
    如何解决php 生成验证码图片不显示问题
    Centos 6.4 python 2.6 升级到 2.7
    ubuntu默认防火墙
    Ubuntu 14.04 为 root 帐号开启 SSH 登录
    git配置ssh非默认端口
    jquery 选择器,模糊匹配
    CURD方法盘点:where方法-THINKPHP
  • 原文地址:https://www.cnblogs.com/Jeely/p/10956032.html
Copyright © 2020-2023  润新知