我們希望在我們的商店中替換POS軟件的當前更新系統。目前,我們的網絡服務器上有一個文件夾,其中包含我們的註冊每30分鐘左右調用的腳本。他們傳遞他們當前的版本號,服務器返回一個XML響應,其中包含需要更新的任何文件,哈希以及用於寄存器下載更新文件的任何其他相關信息。多線程更新服務器
我們需要一個服務來監聽我們發送的UDP數據包,以便觸發更新。這將防止寄存器不必要地輪詢更新。我們正在編寫一個更新服務器,它將偵聽來自機器的TCP連接,進行身份驗證,執行一些日誌記錄,然後發送已更改文件的更新。我們希望轉移到自定義更新服務器,因爲我們需要在某些機器上發佈POS版本,以便在公司發佈之前進行測試後進行試運行。
我已經編寫了處理傳入連接的代碼,並創建了一個新線程來處理與該客戶端的通信等,但是我很難用多線程方式處理文件I/O。
我敢肯定,如果它已經在另一個線程中打開,我將無法通過從一個線程打開它來訪問文件。我不想將這些文件讀入內存,並且事先將它們保存在線程安全的容器中,因爲這會佔用大量內存,特別是如果事實證明我需要爲每個線程保留一份副本以避免線程問題。
如何在不使用大量內存或導致線程等待其他線程完成文件的情況下以線程安全的方式從磁盤/內存訪問這些文件的最佳方式是什麼?
編輯:忘了提及我們正在使用C#。
這聽起來像我需要的是一個數據庫或Web服務。 – Nate 2010-02-04 22:44:19