我有一組Web服務每天擊中200萬次; 7個Web服務。 每個服務當前都會將傳入的XML消息放入磁盤(這是一個大磁盤)。Webservice - 線程與異步方法調用
文件丟失發生在請求的開始處,我想將它分散到一個新的線程中,這樣我就不會失去寫入文件所需的20ms。是的,那20ms比你想象的更重要。
我正在使用.NET 2.0,並想到了2種方法來做到這一點:異步方法調用DropMessage()方法,或啓動一個新的線程並調用它。
private void DumpMessage()// this method dumps the incoming message to File.
DumpMessages管理它自己的業務。如果失敗,它知道該怎麼做,以及如何聯繫我的團隊。
public delegate void AsyncDumpMessage();
AsyncDumpMessage caller = new AsyncDumpMessage(DumpMessage);
IAsyncResult result = caller.BeginInvoke(null, null);
VS
System.Threading.Thread t = new System.Threading.Thread(DumpMessage);
t.Start();
是否有什麼注意事項上述兩種?我傾向於異步方法,因爲通過我的測試,我已經獲得了更好的性能
有更好的方法做到這一點的其他想法?性能和穩定性對我而言至關重要。
你爲什麼要使用.NET 2.0的工作,而不是4.0,這對線程管理更多的選擇(以TPL的形式)或者.NET 4.5(爲異步添加更多選項)? –
歡迎使用企業醫療保健軟件... 您不需要告訴我4.0/4.5有更好的線程管理選項;) –