【问题标题】:How feature complete is asp.net web api self-hosting?asp.net web api 自托管的功能有多完善?
【发布时间】:2012-08-23 14:16:11
【问题描述】:

我有一个要求,我需要能够拥有一个独立版本的应用程序,以及一个在线版本。一种可能的方法是拥有一个 WPF 版本,它可以满足独立的需求,以及一个 MVC Web 版本。

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

【问题讨论】:

  • 您可以使用成熟的 WCF 并允许统一的代码库
  • @SimonHalsey 这究竟是如何工作的?如果应用程序未连接到网络,我将无法使用 WCF 与服务器通信,除非我遗漏了什么。
  • WCF 服务可以托管在应用程序、IIS 中或作为 Windows 服务。该服务不需要针对 3 个场景中的任何一个进行修改,您只需要一点基础设施,具体取决于您选择托管它的位置。

标签: c# asp.net asp.net-web-api


【解决方案1】:

Web API 可以运行自托管,但要运行 ASP.NET (MVC),您需要像 IIS (Express) 这样的服务器。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      我使用 Web API 来自托管一些正在生产的项目。网站http://www.hypermediaapi.com 是一个自托管的 Web API。

      【讨论】:

        【解决方案4】:

        对于这种情况,不需要有两个或更多的代码库。您需要的是一个为您的应用程序提供 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 服务实现的相同接口。

        【讨论】:

          猜你喜欢
          • 2015-01-09
          • 1970-01-01
          • 2022-12-19
          • 2014-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-31
          相关资源
          最近更新 更多