標籤:style blog class code c tar
Asp.Net WebAPI產生的是一個程式集,並不是獨立的進程,因此,要啟動並執行時候必須將其承載在相應的宿主上,一般比較常見的是IIS承載。很多時候,我們為了簡化部署或者功能整合,需要將其承載到獨立的進程上,這種方式一般稱之為Self-Host,本文就簡單的介紹一下WebAPI的SefHost方法。
首先在Nuget上安裝Microsoft.AspNet.WebApi.SelfHost庫。
附上我們的WebAPI控制器
publicclassValuesController : ApiController
{
publicIEnumerable<string> Get()
{
returnnewstring[] { "111", "222" };
}
}
接下來的工作就是啟動我們的伺服器了。
classProgram
{
staticvoid Main(string[] args)
{
var config = newHttpSelfHostConfiguration("http://localhost:8080");
config.Routes.MapHttpRoute(
"API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
using (var server = newHttpSelfHostServer(config))
{
server.OpenAsync().Wait();
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
}
}
從上面的代碼可以看出,設定檔和Asp.Net程式中基本上是一樣的,如果是直接用Asp.Net項目中產生的DLL的話,我們也可以直接用其WebApiConfig.Register的方法來進行配置的。下面一段就是啟動伺服器了,也沒有太多好介紹啊的。更多內容可以參看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 。