2013-04-29 79 views
1

我有一個設計問題。 我正在建立一個消耗第三方服務的門戶。需要WCF和MVC 4設計說明

我已經把這個服務爲一體的DLL,當初始化一個DLL類我通過服務地址,一個服務(等方面的服務,其餘的 - 他們中的一些具有不同的地址)

public LogonService (string address) 
     { 
      EndpointAddress epA = new EndpointAddress (address); 
      proxyClient = new LogonServicePortTypeClient ("LogonServicePort" , epA); 
      //added this InspectorBehavior for logging and errrors 
      proxyClient.Endpoint.EndpointBehaviors.Add (new InspectorBehavior()); 

     } 

這是我的構造函數。 然後在實例中我公開了所有LogonService功能(登錄,註銷,刷新等 - 再次,這是一個服務的一個例子,其中很少有)。

此DLL由MVC 4互聯網應用程序使用。 我想添加一個BusinessLogic文件夾來保存每個DLL類的類,它將啓動所示的服務,並以控制器可以理解的方式將結果傳遞給控制器​​。 (這是我的設計思路)

如果(又是IF)這個設計很好,我想知道在哪裏以及如何初始化這些DLL類,存儲它們以供重用等等。

總結我的長問題:
1.這是一個有效的設計?
2.在應用程序生活中,我應該初始化這些Dll類嗎?
3.我將如何存儲這些服務實例(性能方面)?
4.最後,如果這種設計不合邏輯,那麼會推薦一個設計?

感謝 吉拉德

回答

2

我建議的第一件事就是去像城堡或Unity一個DI框架。這會爲類初始化帶來很多頭痛,並會讓你的類更具可測性。

另外,將您的端點配置外部化爲xml(位於system.serviceModel部分下)。我覺得流暢的端點配置是相當分散注意力的。

+0

thanks.i現在將檢查Unity框架。我不能把地址放在一個配置文件中,因爲它可能會改變,因爲第三方服務也是一個「產品」,可以賣給許多不同的客戶來實現它(因此每次給它一個不同的地址) – gilad 2013-04-29 09:31:02

+0

它不是一個完整的答案,幾天後,我發現Unity是一種很好的方式來「排序」的東西了,或出....感謝您指出統一給我 – gilad 2013-05-07 12:05:17

0

幾個月前,我走進了這個完全相同的問題,可惜我沒有花時間處理它的特權。據我所知,你的設計很好,這也是我採用的設計。

我更關心你的問題。我最終爲每個WS調用創建了一個服務實例(由於只有少數用戶在使用該Web應用程序,而且實際上並不經常,所以我對性能沒有太多關注)。不過,我會對這一點的某些意見非常感興趣。

我也同意來自aquaraga的評論。您應儘可能使用配置文件。當開發人員將部分配置硬編碼到他們的應用程序中時,我遇到了很多麻煩。

+0

感謝您的答覆。我沒有使用配置文件的原因是讓用戶有機會選擇他的提供商。通過提供在登錄頁面中輸入提供程序詳細信息的選項。這使得該站點在許多環境中更具通用性和可測試性 - 不僅是配置文件中硬編碼的那個。 – gilad 2013-04-29 10:04:51