繁体   English   中英

ASP.NET Web API如何自托管?

[英]How feature complete is asp.net web api self-hosting?

我要求我必须能够拥有应用程序的独立版本以及在线版本。 实现此目的的一种可能方法是拥有一个WPF版本(可以满足独立要求)和一个MVC Web版本。

显然,这需要两个代码库(尽管公认,除了前端代码外,它们应该是相同的)。 Web API自托管是否足够稳定,如果需要,我可以在其中托管一个功能完善的Web应用程序?

Web API可以运行自托管,但要运行ASP.NET(MVC),则需要IIS(Express)之类的服务器。

您可以做的是在计算机上安装IIS Express,在其中托管您的Web应用程序,并在需要时自行托管Web API。 当然,如果您已经安装了IIS Express,则可能只想选择运行其中的所有内容:Web应用程序和Web API。

如果您可以使用相同的数据库/服务使用内部/外部应用程序,则可以在IIS中托管单个版本的WebAPI服务器,并将其简单地用于API控制器。

然后,您可以使用两个相同的ASP.Net MVC站点(而不是Desktop&Web站点)来调用您的WebAPI服务。 一台托管在Intranet上,一台托管在Internet上-两者都可以通过WebAPI实现业务功能和数据持久性。

这里的目标是减少所维护的代码量。 本质上,这是两个项目-您的WebAPI项目和一个ASP.Net MVC站点。

我使用Web API来自动托管生产中的许多项目。 网站http://www.hypermediaapi.com是一个自托管的Web API。

对于这种情况,不需要两个或多个代码库。 您需要一个为应用程序提供API的库。 该库可以直接在独立应用程序中使用,我认为这是桌面应用程序。

然后,您可以创建WCF或Web API,甚至可以在这两个层上创建,而不仅仅是围绕同一库的包装。 WCF / Web API合同可以与您的DTO相同,因此WCF服务实现将如下所示:

SomeObject IMyService.DoStuff(string param)
{
  var myLibrary = new MyLibrary();
  var someObject = myLibrary.DoStuff(param);
  return someObject;
}

唯一的开销是,当库中的接口更改时,更改也必须在服务接口中重复,但是不会重复任何实际的业务逻辑。 您甚至可以共享接口,即,如果您不介意在库接口上具有合同属性,则API将公开与WCF服务实现的接口相同的接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM