Шаблон проектирования Singleton действительно должен быть помечен как анти-шаблон. Это зло . Не используйте его.
Лучшая альтернатива - использовать Внедрение зависимостей (DI) и внедрить класс, который можно использовать для хранения непостоянных данных, которые вам нужны.
Многие люди не понимают, что WCF поддерживает шаблоны Dependency Injection (DI), такие как Constructor Injection без особых хлопот.
Если вы внедрили внедренный класс как долгоживущий объект (обычно называемый синглтоном стиль жизни , но его не следует путать с шаблоном проектирования синглтона), вы можете продолжать обращаться к одному и тому же экземпляру между вызовами .
Однако всякий раз, когда вы используете общие объекты (используете ли вы Singleton как шаблон проектирования или стиль жизни), вы должны быть готовы к решению проблем с многопоточностью .
Среди прочего, в этом посте описывается, как внедрить зависимости в реализацию службы WCF, когда у нее нет конструктора по умолчанию.