我从未在c#中尝试过并行编程。 因此,在我加入之前,我希望能够快速回答它是否值得深入研究。 我有.NET 4.0的C#WCF Web服务应用程序。 (如果并行编程可以升级到4.5)C#并行编程修改xDocument
所有的服务都是REST服务。 有一种服务特别有时需要很长时间。 该服务正在处理和修改一个xml文档。 该服务接受一个xml字符串作为输入,并返回修改后的xml文件。
该服务确实在不同的位置和不同的元素处理xml。 所以,我创建了一个由名为IDocumentProcessor接口继承类,我的那些
代码简要看起来像这样
interface IDocumentProcessor {
void Process(XDocument doc);
}
public class DateProcessor : IDocumentProcessor
{
public void Process(XDocument doc) {....};
}
public class CountryProcessor : IDocumentProcessor
{
public void Process(XDocument doc) {....};
}
public class AddressProcessor : IDocumentProcessor
{
public void Process(XDocument doc) {....};
}
public class AuthorProcessor : IDocumentProcessor
{
public void Process(XDocument doc) {....};
}
....
Public class DocumentProcessorService
{
public class ProcessDocument(string xmlFileAsString)
{
var processorList = new List<IDocumentProcessor>{
new DateProcessor();
new CountryProcessor();
new AddressProcessor();
new AuthorProcessor();
}
var xDocument = XDocument.Parse(xmlFileAsString);
processorList.forEach(x => x.Process(xDocument));
}
}
所以我快速的问题的列表,我钻研才这样并行: 可以并行计算修改相同的xDocument对象(在不同的位置)
并且可以将此代码翻译为使用.net 4.0进行并行计算吗?
所以你正试图加快“ProcessDocument”完成所需的时间。你每秒或每分钟调用一次这种方法(在不同的文件上)多少次?也许不是让这个方法运行得更快,你可以在不同的文档上运行它的实例吗? –
我们已经运行了许多服务实例。 我们有负载平衡器。 但是对于某些文件(大小几个千兆字节),服务有时需要5分钟 –
如果你有8个CPU核心,并且你在8个不同的线程上运行8个实例,那么并行运行方法中的循环将不会赢得你的任何表演。 –