2009-08-03 59 views
2

我正在爲兩家公司設計一個EDI系統:公司A和公司B.公司A已經作爲小型製造企業存在,而公司B是圍繞特定產品形成的新公司,公司A.公司A將擁有爲公司B生產產品的獨家權利。我應該如何確保「消息」一次發送和存儲一次?

我對這兩家公司的IT和開發負責。我需要設計一個EDI系統,以便將訂單和其他信息從公司B傳達給公司A,反之亦然(用於確認和狀態更新等)。

這種類型的東西對我來說是相當新的,所以我只是尋找關於如何從公司B發送新訂單到公司A的建議,並保證它到達那裏,存儲並且不會得到不止一次地發送。

我在想我可能會用Web服務來做到這一點。我應該看看WCF服務還是堅持使用ASP.Net Web服務?

我假設每個訂單都會發送一個唯一的ID,這樣A公司的系統就會認識到如果混淆後不保存兩次,但是我怎麼知道公司A得到了這些信息?

任何其他的提示或建議是非常值得歡迎的。

回答

2

請參閱Microsoft: ASMX Web Services are a 「Legacy Technology」瞭解爲什麼不堅持使用ASMX Web服務。

訂單是不是已經有一些獨特的識別?

無論如何,公司A的服務都希望確保訂單安全地記錄(可能在數據庫中),只有這樣「發送訂單」操作才能完成。


在A公司,我會創建一個訂單處理服務。到目前爲止,它只需要一個方法:AcceptOrder。這將接受處理訂單所需的所有信息。該操作首先將訂單保存到數據庫中,一旦數據安全存儲,將返回某種確認代碼。

嘗試再次發送相同的順序將失敗,因爲你會繼續在唯一訂單標識符的唯一密鑰從B公司

我們要相信我們的數據庫,因此,一旦我們知道數據已經提交,回覆「我們已經得到它!」是安全的。

也可以使用其他技術。事務性隊列,例如使用MSMQ。它有同樣的好處,一旦它說它有數據,你就可以相信它有數據。

+0

我明白了,但我怎麼知道它是完整的?我是否只是返回一個確認碼,以便知道它存儲並稱之爲一天? – 2009-08-03 20:30:31

1

發送唯一的ID與Web服務調用,並讓Web服務返回一個唯一的確認代碼和訂單狀態。這應該幾乎涵蓋你。如果您希望可以在Web服務中添加查詢訂單狀態方法,以便查看是否先前發送過訂單。

相關問題