当我可以创建基于 Web 的 RESTful 端点时,为什么要将 OWIN 用于基于服务的 API?

Why should I use OWIN for a service-based API when I can create web-based RESTful endpoints?

我正在重写现有应用程序的架构,该应用程序将托管在 Azure 上并且至少有两个 API - 一个 public,另一个为内部私有RESTful 相关的 CRUD 调用。

主要技术栈为ODATA、WebAPI2、C#、MVC5、EF、AngularJS。我的想法是 RESTful 端点将全部通过 Azure Web 角色公开(就像任何其他 URL)。

在阅读更多关于 OWIN and using it with the WebAPI and the Azure Worker Role 的内容时,它看起来完全一样,但作为一项服务。

走这条 OWIN 路线(想到哪里,我什至可以编写一个 WCF 服务来做同样的事情)而不是基于 Web 的路线有什么好处吗?RESTful API 电话?

我正在寻找一些原因,为什么我应该完成迁移到基于服务的练习 API。

技术说话

对于您的 public API,我建议以 RESTful 的方式使用 Owin。这将为您的内部系统创建一个外观。

在内部,WCF 将提供更好的性能。


优点

  • 有了好的计划,维护起来会容易得多。由于其分散式设计,重构带来的风险包含在特定的上下文中。维护就是最小化和控制与变更相关的风险。

这些链接更多地是在谈论 SOA,但我相信您可以从中提取所需的信息:

缺点

你应该知道,因为它也有缺点。您将需要可靠的单元测试、日志记录和版本控制策略。


希望对您有所帮助。我尽量只保留要点,因为这个问题的完整答案可以作为一本书出版。