Как использовать сервисный локатор в сервисе WCF
Я использую сервисный локатор для хранения конкретных экземпляров классов, который используется в сервисе WCF. Вместо того, чтобы передавать ServiceLocator, я решил сделать его статичным, чтобы я мог получить к нему доступ из любого класса. Локатор службы заполняется при запуске службы WCF и, в зависимости от некоторых параметров, может заполняться различными конкретными реализациями.
Моя проблема заключается в том, что если сделать вызов службе WCF до завершения другого вызова, то (я думаю) ServiceLocator будет заполнен неверными реализациями.
Есть ли способ сделать локатор службы доступным для классов и не использовать его повторно различными потоками или вызовами службы WCF?
1 ответ
Вы предоставляете немного информации о вашем сервисном локаторе и неверной реализации. Из того, что я прочитал, я понимаю, что это твое собственное.
Мой личный совет заключается в том, что вы не должны использовать локатор служб в случае службы WCF, потому что WCF предоставляет некоторый интерфейс, который обеспечивает внедрение зависимостей.
Вы можете прочитать больше о локаторе службы шаблонов здесь: http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx
Вы не должны реализовывать свой локатор сервисов, потому что есть много проектов OSS, связанных с внедрением зависимостей, которые вы можете использовать, и которые делают работу правильно.
Вот правильная реализация внедрения зависимостей с использованием StructureMap со службами WCF: http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/.