我有一组每天被访问 2,000,000 次的 Web 服务;7 网络服务。每个服务当前都将传入的 XML 消息放入磁盘(它是一个大磁盘)。
文件丢失发生在请求开始时,我想把它放到一个新线程上,这样我就不会失去写入文件所需的 20 毫秒。是的,这 20 毫秒比你想象的更重要。
我正在使用 .NET 2.0,并想到了两种方法来做到这一点:对 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);
对比
System.Threading.Thread t = new System.Threading.Thread(DumpMessage);
t.Start();
以上两个有什么注意事项吗?我倾向于异步方法,因为我通过测试获得了更好的性能
还有其他更好的方法来做到这一点吗?性能和稳定性对我来说很关键。