我從未在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個實例,那麼並行運行方法中的循環將不會贏得你的任何表演。 –