C# asp.net web api自托管功能完成情况如何?

C# asp.net web api自托管功能完成情况如何?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我有一个要求,我需要能够有一个独立版本的应用程序,以及一个在线版本。实现这一点的一种可能方法是使用WPF版本(满足单机版)和MVC Web版本 显然,这将需要两个代码基(尽管不可否认,除了前端代码之外,它们应该是相同的)。Web API自托管是否足够稳定,如果需要,我可以在其中托管一个完整的Web应用程序?Web API可以运行自托管,但要运行ASP.NET(MVC),您需要一个类似的服务器 您可以在计算机上安装IIS Express,在其中托管Web应用程序,并在需要时自行托管Web API。

我有一个要求,我需要能够有一个独立版本的应用程序,以及一个在线版本。实现这一点的一种可能方法是使用WPF版本(满足单机版)和MVC Web版本


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

Web API可以运行自托管,但要运行ASP.NET(MVC),您需要一个类似的服务器


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

如果您可以使用相同的数据库/服务同时使用内部/外部应用程序,您可以在IIS中托管一个版本的WebAPI服务器,只需将其用于API控制器即可

然后,您可以使用两个相同的ASP.NETMVC站点(而不是桌面和Web),它们调用您的WebAPI服务。一个托管在企业内部网上,一个托管在互联网上——这两个都可以通过WebAPI实现业务功能和数据持久性


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

我使用WebAPI自托管许多正在生产的项目。该网站是一个自托管的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服务实现的相同接口。

您可以使用成熟的WCF,它将允许统一的代码base@SimonHalsey这到底是怎么回事?如果应用未连接到web,我将无法使用WCF与服务器通信,除非我缺少某些内容。WCF服务可以作为应用、IIS或windows服务托管。这三个场景中的任何一个都不需要修改服务&您只需要一点基础设施,这取决于您选择在其中承载服务的内容。