2013-06-18 35 views
0

我想我只是簡單地解釋我的情況。我有一個桌面應用程序讀取和寫入XML文件。這個相同的XML文件由ASP站點讀取和寫入。價值變化時需要通知雙方。這在桌面應用程序方面是相對微不足道的,因爲我只是重新讀取XML並應用這些值,但是在Web上它變得更加複雜。已更改的XML值的通知

該網站需要立即從XML獲取更新的信息。問題是我找不出一個合適的方式來存儲這些值,並反過來處理更新/更改/新/刪除值的通知。發送整個XML文件是不可能的。

獲取數據到頁面不是問題,我已經全部連線了。問題是,我應該如何存儲這些數據,以便能夠處理增量更新並且還可以通知已更改的值?

我有一個非常笨重的解決方案,我絕對討厭它。我希望有人能夠指出我正確的方向,以什麼類型的容器來存儲這些數據;我在這個C#/ ASP領域相對缺乏經驗。

感謝您花時間閱讀我的小說。

回答

0

你是什麼意思,網站獲得更新「立即」?代碼通常只會在下一個請求中執行(無論何時發生)。所以在每一個請求你可能(但不要!)只是讀取文件的最新副本。

總體架構而言,如果你需要2個組件/應用的統籌像這樣 - 一個消息隊列是天然的抽象。現在你將XML文件當作共享內存來處理進程間通信。

如果它要保持像解決方案雜牌 - 我建議用DB表替代的XML。更容易輪詢,協調和接收更新。

+0

我完全同意使用適當的數據庫,但不幸的是我無法控制桌面應用程序。我使用的是SignalR庫(websockets),所以我可以通過推送它們來立即通知任何客戶端的變化。正如你所說,我試圖阻止必須發送整個XML文件(在我這樣做之前我將使用我的「kludgy」解決方案)。 – Skinner927

0

嗯,我有點找到了解決方案。

我把「當前」 XML的副本與適當類型的XmlSerializer的。當我閱讀新的XML時,我還將它作爲XmlSerializer讀取,但爲了比較它們,我只是使用JSON並進行標準字符串比較。

這對我的作品,因爲我的XML結構不會改變,只是裏面的值,以便我能檢查哪些「節」已經通過比較它們的序列化JSON改變。

有點奇怪,但它適合我。