Как лучше всего обрабатывать соединения Sql в длительных процессах с Ninject?

У нас есть рабочая роль Azure (в основном такая же, как у службы Windows), в которой мы используем Ninject для IoC и внедряем IDbConnection в наших сотрудников. Согласно передовому опыту, вы должны утилизировать соединение, как только вы его больше не используете, но в работнике / службе, который может иметь или не иметь смысла. Итак, что было бы хорошим способом обработки соединения с базой данных в таком сценарии?

Наши варианты включают (возможно, не ограничиваясь):

  • Используя шаблон ServiceLocator и запрашивать новое соединение для каждого сообщения, которое мы обрабатываем
  • Держите связь вокруг (то есть не делайте ничего с этим)

Мне тоже не нравится быть честным, и я надеялся, что было какое-то другое решение...

1 ответ

Решение

Я исключу шаблон ServiceLocator (анти). По моему мнению, используя концепцию NInject Provider<ISomething> будет соответствовать вашим потребностям. По сути, провайдер является своего рода фабрикой, возвращающей вам соединение, которое вы можете использовать, возможно, в using объем. Если вы хотите быть более независимым от IoC, вы можете, например, IConnectionFactory как это:

interface IConnectionFactory{
           IDbConnection Open();
}
Другие вопросы по тегам