2014-07-11 88 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

感謝您的回答,我以前也有同樣的感覺,但我希望能有一個更簡單的解決方案。但是恐怕我們必須找出一種共存我們應用程序的好方法。 –

相關問題