Рассмотрим существующий уровень доступа к данным и бизнес-логики, который используется несколькими различными приложениями, и что до настоящего времени требовалось только одно подключение к данным на время жизни любого конкретного приложения, которое его использовало - так что информацию о подключении можно было просто извлечьна уровне данных из файла конфигурации приложения.Однако для продвижения вперед классы данных и логики должны предоставить приложениям гибкость в определении соединения для передачи данных для каждого вызова.Более того, классы теперь вызываются несколькими приложениями одновременно через службы.
Вызывающие абоненты не хотят конкретно управлять строками соединения, а скорее именами соединений в форме перечисления, которое может быть преобразовано в строки соединения.в и из уровня данных.
В настоящее время все классы данных и логики являются статическими с внутренней областью данных и общедоступной логикой.
Какие есть хорошие стратегии для получения ключаот вызывающей стороны вплоть до методов в классах данных с учетом таких вещей, как применимость API, производительность, безопасность потоков / изоляция вызывающей стороны и т. д.
Два очевидных варианта:
Добавить ключ подключения в качестве параметра для всех методов.Тьфу - не произойдет, но в том числе для полноты.
Измените логику и классы данных на классы экземпляров и передайте ключ в конструкторах для использования любым методом-членом.Не будет никаких изменений сигнатуры метода, но будет существенное изменение в том, как вызывается API.
Какие есть еще варианты?