【问题标题】:Is Owin/Katana supposed to replace Web API? [closed]Owin/Katana 是否应该取代 Web API? [关闭]
【发布时间】:2016-12-12 12:37:39
【问题描述】:

当 ASP.NET MVC 出现时,微软在很多地方多次宣布它不应该取代 ASP.NET Web 窗体。换句话说,它只是另一种您可能会觉得有用的技术,或者您可能会在其他场景中使用 Web 表单。

但是,随着公司进入市场,他们不能拥有一堆技术,因为这太贵了。他们通常会选择一种成熟的技术,坚持下去,在它的基础上进行构建和扩展,并重用其中的元素以降低成本。

现在我们正试图决定从 Web API 迁移到 Owin/Katana。我们只是想知道我们是否可以将 100% 迁移到 Owin?

我问这个问题的原因是因为我们已经为 Web API 创建了一个非常丰富的代码库,包括流式传输、压缩、身份验证、UGC 规范化、对 I18N 和 L10N 的支持等等。

如果我们想迁移到 Owin,我们需要为 Owin 重新创建这些设施/实用程序,因为它的架构与 Web API 不同。

我们希望迁移到 Owin,因为它更快、更轻、自托管服务器,并且似乎是 Microsoft 服务技术的未来。

完全迁移到 Owin 并想象未来我们的所有服务都通过 Owin 交付并且我们停止使用 Web API 对我们来说安全吗?

【问题讨论】:

  • 你的概念错了!您应该将OWINWeb host 进行比较。
  • 如果您确实需要自托管或在不同操作系统上托管,请尝试从 Web HostIIS 切换到基于 OWIN 的托管机制。

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


【解决方案1】:

OWIN 只是一个规范,仅此而已。它描述了服务器和应用程序都可以使用的通用接口,因此应用程序不需要与服务器紧密耦合。

Katana 是将 ASP.NET 与 IIS 分离的第一步。根据官方路线图,在 Katana has stopped now 上工作。为 Katana 开发的想法和技术已进入下一个版本的 ASP.NET (ASP.NET Core)。

在 OWIN 本身之上构建应用程序几乎没有意义,因为您在 HTTP 之上的最低抽象级别进行操作(字面意思是处理原始请求和响应)。这通常仅在您构建需要低级访问的中间件组件时才需要。

换句话说:您不应该在 OWIN 上重新构建您的应用程序,因为您将花费大量时间重新发明 ASP.NET 中已有的所有内容。

ASP.NET Core 是 ASP.NET 和 Web API 的下一个演变。它拥有你提到的所有东西:它快速、轻量并且可以自托管。如果您需要重建架构,请在 ASP.NET Core 上进行。

【讨论】:

  • 更多关于 ASP.NET Core 和 OWIN 的详细信息请参见我的回答:Does ASP.NET Core still use OWIN?
  • 您能否向我们推荐一个有效的链接,上面写着 Katana 已被弃用
  • @SaeedNamati 当然,用更多关于 Katana 的信息编辑了我的答案。在此处查看官方路线图(v3 后停止工作):katanaproject.codeplex.com/…
  • 我相信这个答案错过了一个简单的事实,blogs.msdn.microsoft.com/webdev/2014/11/14/…,它解释了差距。 ASP.NET Core 的管道/中间件设计与 OWIN 类似,但并不完全相同。我个人的看法是,ASP.NET 团队是从 OWIN 开始的,但 OWIN 并不能满足所有的要求。这应该可以解释为什么 Katana 和 Helios(另一个副项目)最终被放弃,转而支持最终设计。
  • @LexLi 缺少什么答案?我并没有声称 ASP.NET Core 和 OWIN 是相同的(我同意它们不是)。我认为在 ASP.NET Core 上而不是在 OWIN 上构建一个新应用程序更有意义,尽管您可以两者都这样做。
猜你喜欢
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2017-05-13
相关资源
最近更新 更多