使用 OWIN 自托管 Web API



我在基于 MVC 体系结构的客户端-服务器应用程序上使用 owin 自托管 Web api。我看到很多代码示例显示,具有配置的 Startup 类和具有 Main 方法的 Program 类"使用 (WebApp.Start(url: baseAddress((" 启动 owin 自主机 - 在同一个项目中。我是否应该绝望地将自己托管到一个项目中,以便WebApp.Start将位于一个项目中,而带有Startup claas的Web api将位于另一个项目中,具有所有控制器等等?

常见的答案是这取决于。通常自主机应用程序非常简单地提供一些简单的功能。在这种情况下,由于这两个部分都很简单,因此无需将它们分开(主机代码和Asp.Net Mvc(,并且可以将它们作为应用层放置在一个项目中。但是,如果您试图为主机代码增加一些复杂性(例如Asp.Net Mvc应用程序的一些预热(,那么您可能应该将主机代码和Asp.Net Mvc应用程序代码拆分为两个项目。

发现这可能是受关注点分离启发的好主意:自主机不应该知道服务器,反之亦然。Owin 和 Web API 有不同的工作,因此需要将它们分开。