Конфигурация контейнера для инъекций Dependeny - PullRequest
2 голосов
/ 04 апреля 2011

Эй!Первый пост для меня, но давний читатель Stackoverflow.

В любом случае, у меня возникла хитрая проблема, которая действует мне на нервы.Это вопросы о том, насколько настраиваемым должен быть DIC (Dependency Injection Container).Я работаю над обработчиком сеанса для нашей структуры, которую мы настраиваем.Обработчик сеанса зависит от службы хранения, некоторых простых параметров конфигурации и генерирует идентификатор сеанса с солью.

Обработчик сеанса загружается нашим контейнером, который принимает все настройки, либо в качестве конфигуратораобъект или массив параметров.Контейнер проверяет настройку, для которой вызывается служба хранения, загружает службу и внедряет ее в обработчик сеанса.Служба хранилища в настоящий момент не принимает никаких настроек конструктора.

Обработчик сеанса, в свою очередь, генерирует идентификатор сеанса из настроек, которые он внедрил.И оттуда вводит идентификатор сеанса и другие параметры, относящиеся к этой службе хранения.

Мои вопросы:

  1. Правильно ли, чтобы обработчик сеансов вводил параметры в службу хранения?Это как двухступенчатая ракета.
  2. Должен ли я вводить идентификатор сеанса и другие параметры с самого начала, когда я загружаю службу хранения в контейнер?В конце концов, у меня возникает проблема с генерацией идентификатора сеанса, и для этого приходится полагаться на службу хранения.
  3. Какие проблемы возникнут, если я воспользуюсь предложенными выше способами?
  4. Разбиваю ли я что-нибудь "святое":)

1 Ответ

0 голосов
/ 04 апреля 2011

Я немного смущен этой частью:

Обработчик сеанса, в свою очередь, генерирует идентификатор сеанса из настроек, которые он ввел.И оттуда вводит идентификатор сеанса и другие параметры, относящиеся к этой службе хранения.

Вы уже сказали, что обработчик сеанса зависит от службы хранения.Было бы плохой идеей, чтобы служба хранения также имела некоторую зависимость от обработчика сеанса, потому что тогда ваш процесс инициализации намного сложнее и подвержен ошибкам, чем это необходимо.

Так что вот вопрос: какие настройкинужна служба хранения от обработчика сеанса?Можете ли вы удалить какие-либо или все эти зависимости из службы хранения?Если это так, вы должны сделать это.

В качестве практического примера: допустим, служба хранения поддерживает хранение данных в виде именованных больших двоичных объектов (которые могут быть реализованы в виде файлов, или в виде строк в таблице базы данных, или чего-либо еще).).Вы используете имя, зависящее от идентификатора сеанса, для хранения данных сеанса.Вам не нужно сообщать службе хранения, что такое идентификатор сеанса, но вместо этого запишите обработчик сеанса и предоставьте эту информацию службе хранения только всякий раз, когда она использует функциональные возможности хранения.

Другими словами,постарайтесь, чтобы ваши данные были сгруппированы логически.Есть ли конкретная проблема, которая мешает вам сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...