我需要從ASP.NET MVC應用程序調用WCF服務。設計ASP.NET MVC和WCF服務通信的更好方法是什麼?在ASP.NET MVC應用程序中調用WCF服務
控制器保留對WCF服務的引用並在需要時調用服務方法。
控制器使用DI容器,例如,統一解決WCF服務實例。它仍在控制器類中完成。
創建專門設計爲與WCF服務通信的服務中介類。控制器調用中介類(es)。
考慮一個相當複雜的情況下,當一個服務正在使用多個控制器和一個控制器可以調用多服務
我需要從ASP.NET MVC應用程序調用WCF服務。設計ASP.NET MVC和WCF服務通信的更好方法是什麼?在ASP.NET MVC應用程序中調用WCF服務
控制器保留對WCF服務的引用並在需要時調用服務方法。
控制器使用DI容器,例如,統一解決WCF服務實例。它仍在控制器類中完成。
創建專門設計爲與WCF服務通信的服務中介類。控制器調用中介類(es)。
考慮一個相當複雜的情況下,當一個服務正在使用多個控制器和一個控制器可以調用多服務
控制器可能需要您生成的客戶端代理作爲構造你得到了的ServiceContract接口參數。然後指示你的DI框架向其中注入適當的實例(這將是實現服務合約接口的代理)。
因此,基本上你的應用程序有一個服務層,它抽象在接口(服務契約)後面,但其實現位於其他地方(在遠程WCF服務中)。
恕我直言,你不需要創建一個服務中介類,除非你的WCF服務邏輯不足以滿足你的Web應用程序,你需要將更多的業務邏輯放入其中。在這種情況下,調解員可以提供幫助。
我同意。在大多數情況下,編程到服務接口(契約)並通過DI框架注入具體的依賴關係就足夠了。 – naveed
+1。完美的答案 –
此外,服務中介類甚至可以將服務消費者與服務完全分離(甚至是界面)。服務合同以及實施(如合同方法名稱)可以在不影響客戶的情況下進行更改。
鑑於服務被多個控制器使用,我認爲創建一個服務層將是最佳的。 將WCF實現抽象爲服務層,可以獨立地爲單元測試服務層和控制器動作提供靈活性。 也使控制器獨立於服務更改。
您有多少個WCF調用(或重用邏輯)?如果它在單個控制器中,那就在那裏做。如果您發現自己執行相同的呼叫,則將其重複分解爲中間服務。保持你的代碼「幹」。 –
你可以在你的項目中添加服務層,你可以實現所有的WCF服務操作並實現這個層的抽象視圖,這樣客戶端類將處理抽象視圖... – Kuldeep