Мы работаем над сервисом ac # windows, используя NHibernate, который должен обрабатывать пакет записей.
Служба должна обработать около 6000 нечетных записей, и в настоящее время их обработка занимает около 3 часов.Произошло много обращений к базе данных, и хотя мы пытаемся свести их к минимуму, мы также изучаем возможности многопоточности для повышения производительности.
Мы используем шаблон UnitOfWork для доступа к сеансу NHibernate.* Примерно так выглядит служба:
public class BatchService
{
public DoWork()
{
StartUnitOfWork();
foreach ( var record in recordsToBeProcessed)
{
Process(record);
// Perform lots of db operations
}
StopUnitOfWork();
}
}
Мы думали об использовании библиотеки параллельных задач, чтобы попытаться обработать эти записи партиями (используя метод Parallel.Foreach ()).Из того, что я читал о NHibernate до сих пор, мы должны предоставить каждому потоку отдельный сеанс NHibernate.
Мой вопрос заключается в том, как нам предоставить этот .., учитывая шаблон UnitOfWork, который позволяет только одному сеансу быть доступным.1012 *
Стоит ли смотреть на упаковку UnitOfWork вокруг обработки одной записи?
Любая помощь, высоко ценимая.
Спасибо