2011-07-18 77 views
1

早上所有,Web服務客戶端體系結構 - c#

我一直負責爲雲Web服務API(簡單的WSDL)開發客戶端工具。我不是一個經驗豐富的或者甚至是合格的開發人員,我擁有C#的中間知識並且足夠我相信能夠完成這項工作,但是我不想要一個可行的解決方案,我想要構建一個乾淨且編碼良好的另一個開發人員可以閱讀和理解,哪些是直觀的。

你可能想阻止我,說:「這是你只能通過經驗學習的東西。」如果是這種情況,那麼我可以接受並繼續前進,但如果你有一些建議,其餘的細節如下。

該解決方案將是一個C#控制檯應用程序。我已經爲這個規範,這是下面:

1.)創建在.NET,其具有以下功能 控制檯應用程序:

2.)消費含有處理過的數據或ODBC CSV文件 連接到分段SQL數據庫和直接讀出 負載表

3)進行以下調用web服務Zuora的(異步)·
SubscribeWithExisitingAccount()記錄· 的Create()·
登錄()·訂閱()·更新()·刪除()

(*)調用標有此是可能避免的,

*就可以創建預訂(訂閱())

* Create()可能是一個例外情況,因爲在我們需要 創建沒有相應訂閱的對象的實例時,可能會出現這種情況。

4.)將每個記錄的成功和錯誤報告爲CSV 文件。凡我所缺乏的知識之後的設計,這將使得這個應用程序是有意義的和有效的工作

Mappings will be done on a 1 to 1 basis, where the input file 

將有相同的列名的目標

。我不想找人爲我做這件事,我正在尋找的是如何改進我已經在做的事情的提示

目前我只是有機構建解決方案,因爲缺乏對工作的遠見像這樣,所以我也對我可以做後期開發的事情感興趣。

歡迎提供建議和批評。

由於提前,

馬特

+0

我的代碼正在工作,但已進化的設計意味着它是一個笨重的解決方案,我沒有遵循任何設計原則,我在尋找一般的設計建議,當建立這樣的解決方案 – Yoda

回答

2

設計原則是一個很大的課題,如何正確地應用它們只是帶有經驗的東西。有更多的人在那裏,那麼你曾經在一個給定的項目中使用,在某些情況下正確使用它們意味着完全不使用它們(或只選擇適合該項目的特定項目)。第一步就是想編寫好的代碼,所以你開始在正確的地方。 :)有幾樣事情都站出來對我說:

2)消費CSV文件,其中包含處理數據或ODBC連接到 分期SQL數據庫和讀取記錄直接出負載表

什麼你打算在這裏做的只是建立一個邏輯來處理這些數據一次。實現這一目標的最直接方式是讓您的邏輯以某種格式期待數據(可能包含解析數據的業務類以及您的邏輯使用)。

所以你要做的就是把輸入數據(CSV/SQL表/任何),並首先解析它到你的內部業務類。然後,將解析後的數據提供給您的邏輯,無論您的應用如何使用它。這樣做的好處是你可以改變邏輯一次,它可以同時處理兩種數據類型,如果稍後有人出現並說「現在我們需要它來讀取這個Excel文件」,你只需要添加另一個解析器將Excel數據轉換爲您的內部格式。不需要改變邏輯。

4.)將每個記錄的成功和錯誤報告爲CSV 文件。

映象將在1比1的基礎上,在輸入文件

將具有相同的列名的目標

同上來完成。不要以爲你會永遠導出爲CSV,製作一個簡單的「ReportError」類或一些可以保存錯誤細節的類,並在進行處理時將其粘貼到列表中。最後,當您輸出錯誤時,您可以將其轉換爲CSV格式。因此,如果此需求發生變化,而您將錯誤報告給Web服務,則只需更改一小部分代碼(而不是您的處理邏輯)。

這裏有一個主題。 :)嘗試封裝邏輯位,以便在發生更改時很容易找到代碼中的內容。如果你可以學會這樣做,即使你沒有遵循任何其他流程或模式(特別是因爲你不會做大型項目),你會得到可維護的代碼。

3)製作)以下調用web服務Zuora的(異步)· SubscribeWithExisitingAccount(·創建()·登錄()·訂閱()· 更新()·刪除()

作爲一個控制檯應用程序,我會質疑你是否真的需要這些應用程序是異步的。你希望從Login()的異步調用中獲得什麼?您的程序可以在等待Login()返回時執行任何操作嗎?

這不是異步非常困難,但它更多的是管理同步調用。對於那些不熟悉該技術的人開發的控制檯應用程序,我不確定您將獲得哪些好處來抵消它對您所需的額外工作量。

+0

這絕對是我一直在尋找,一些常識可以回答我的規範和合理的一般建議。 – Yoda

+0

感謝您抽出寶貴時間寫下所有內容。 馬特 – Yoda

0

我會建議你讀一本書,web服務(this is a good one)他們arent真正的東西你可以從播放約拿起並可以相當frustraiting如果你不知道你在做什麼。

至於發展,我建議你先把它原型化。搗亂一些亂七八糟的東西,但讓你知道如何做事。然後,您可以使用它作爲您實際構建應用程序時的參考。