2014-07-11 57 views
0

我的公司使用.Net WCF提供大型SOAP应用程序。在这个现有的WCF应用程序中,我们现在需要托管一个Asp.net MVC 4(或5)网站。这意味着我们需要某种路由,将特定种类的URI完全重定向到Asp-Subcomponent并进行处理,就好像它是一个单独的应用程序一样。在现有的WCF应用程序(IIS)中托管ASP.net MVC 4网站

寻找这个问题我只能找到解决方法,你反其道而行之 - 确保在Asp MVC内部路由到一个WCF子组件将是相当简单和直接的。 但是,在我们的情况下,这是不可能的。 WCF包含了许多我们不能(也绝对不想)传输到Asp组件的安全钩子。另一方面,将它分成两个独立的应用程序,并让IIS执行路由也不是可能的解决方案,因为我们的应用程序与我们公司的其他软件包有很大的依赖关系,我们不希望在单独的应用程序中维护两次。

现有的WCF组件作为独立的Web应用程序托管在具有.NET 4.0应用程序池的IIS 7.5中。

是否有任何合理的方式从WCF分路由到Asp.net MVC?

+0

您的WCF应用程序以何种形式存在?例如它是在Windows服务中还是在IIS中自行托管?我怀疑你的体系结构描述不够清晰,无法得到答案 – Schneider

+0

它在IIS 7.5中 - 我也将其添加到我的问题文本中。请让我知道,如果你需要任何额外的信息! –

回答

0

这种方法听起来会让你和你的公司面临更多问题,而不是价值。 我看到你已经提到将它分成两个单独的组件是不可能的,但是我会考虑它的原因有几个。

  1. 验证和WCF和MVC授权相差很大,我会重构这些验证码成不依赖于每一个技术,然后写为每个应用WCF和MVC抽象库。这是你得到重用,但也有两个组件知道底层技术

  2. 路由 WCF不理解路由,它只有一个sinlge入口点。决定在消息的有效载荷中嵌入哪种方法。另一方面,基于url的MVC另一方面是 。

  3. 部署更新到MVC网站将需要WCF服务的更新和副CE反之亦然

这些都只是一些从我的头顶。它似乎过于复杂,并且hacky这样做。 我会考虑将两个应用程序单独托管在IIS中,并将常见逻辑提取到允许重用的通用类库中。

+0

好的和明确的答案,非常感谢。 –

0

我建议你给WCF Services and ASP.NET一个彻底的阅读。

你会发现让WCF坐在之间 IIS和ASP.NET非常困难(或至少开创性)。它们被设计成并排或独立工作。

鉴于让WCF和ASP.NET/MVC使用相同的底层认证系统(例如Forms Auth)非常简单,您对构建它的主要异议似乎是“与其他软件包的大量依赖关系我们的公司,我们不想在两个独立的应用程序中维护两次“。

再次解决这似乎是一个非常简单的重构位。您的任务只是从业务逻辑中提取出所有WCF特定的代码,然后将业务逻辑放入单独的类库中,以便在WCF和MVC应用程序之间共享。对我来说,没有其他明智的方法可以解决您的问题。任何其他方法都可能会让您比当前的WCF应用程序更加混乱。

+0

感谢您的回答,我以前也有同样的感觉,但我希望能有一个更简单的解决方案。但是恐怕我们必须找出一种共存我们应用程序的好方法。 –

相关问题