2013-04-04 66 views
2

我將一些外部API集成到分層應用程序中。像通常的分層應用程序一樣,它有三層,我將這些API連接到業務層。通過「三方API和服務」,我的意思是像支付網關,郵政編碼查找等。集成第三方api或服務的最佳設計模式

目前,對於每個api,我創建一個服務契約接口,並且api包裝器將繼承接口類。這個接口將被注入到業務類的構造函數中,並且ioc容器將在應用程序的入口點解決這個問題。

我想解耦這些api層與業務層,並使它們在其他項目中也可重用。我的問題是,有沒有更好的方法或任何設計模式來用於集成外部服務。我很欣賞任何指向或代碼片段的鏈接。

+1

這裏有很多很好的描述設計模式,請檢查並獲得您的知識... http://planetofcoders.com/tag/design-pattern/ – 2013-04-04 13:36:35

+1

所有你需要的是基於接口的realtions /圖層之間的依賴關係 – sll 2013-04-04 13:36:51

回答

3

對於每一個第三方API我會創造一個接口的把它放進一個單獨的項目。然後我會創建一個新的項目來實現每個接口。

比如你的項目結構可能看起來像

YourSolution 
    ... 
    -Company.Interfaces.ThridPartyAPi1 
    -Company.Interfaces.ThridPartyAPi2 
    -Company.Interfaces.ThridPartyAPi3 

    -Company.Services.ThridPartyAPi1 
    -Company.Services.ThridPartyAPi2 
    -Company.Services.ThridPartyAPi3 
    ... 

這從API代碼解耦你的代碼和API代碼,這意味着它可以很容易地嘲笑/掐滅測試解耦API接口。

3

如果您想爲第三方API服務製作可插入框架,您可能需要查看MEF。這將使您能夠創建更加不可知論的服務配置類型,這意味着您可以從框架中交換服務 - 這可能使您可以更輕鬆地將當前和未來的外部服務整合到您的應用程序中,而不會產生重大的重構成本。

http://msdn.microsoft.com/en-us/library/dd460648.aspx

+0

非常感謝。我只是檢查該頁面上的計算器代碼示例,我覺得它有點不適合我的情況。 MEF更適合擴展而不是整合。在我的應用中,業務層負責向paygateway API層提供商戶數據。我不認爲這可以通過MEF完成。或者可以嗎? – kgfaith 2013-04-04 14:19:09

相關問題