使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM