Конфигурация WCF для нескольких баз данных
Я нахожусь в процессе преобразования нашего приложения Win Form для использования службы WCF вместо клиентских обращений к базе данных SQL.
Я не уверен, что лучше, но у нас есть идентичные схемы баз данных примерно на 600 базах данных.
Я надеялся найти решение, в котором я при запуске приложения winform объявляю службу WCF для использования этой базы данных. на данный момент я пытаюсь избежать в каждом методе передать параметр для какой строки подключения использовать.
У меня есть некоторое понимание WCF, но я очень мало знаю о "публичных декларациях" и контексте соединения и не нашел хороших примеров для своего сценария.
это вообще возможно?
если кто-нибудь может направить меня в правильном направлении или дать мне пример кода, это будет очень цениться!:)
заранее спасибо
2 ответа
WCF поддерживает сессии. Таким образом, вы можете передать, какую базу данных вы хотите использовать при первом вызове, а все остальные вызовы будут использовать значение в сеансе.
Смотрите: http://msdn.microsoft.com/en-us/library/ms733040.aspx
WCF - это странный API, в котором вы потратите первый месяц, не получая его вообще, а следующие несколько месяцев задаетесь вопросом, как вы не могли его получить. Я могу ответить на некоторые ваши вопросы.
Лучший ресурс, который я знаю, - это книга Джувала Лоури, хотя я слышал, что книга Бустаманте тоже очень хорошая.
Вы можете раскрутить службу WCF в Main() перед запуском формы
Для дизайна, о котором вы говорите, вам, вероятно, понадобится конструктор не по умолчанию для вашего сервиса. Это немного больно, и я думаю, что книга Лоури справится с этим. Если нет, посмотрите на IInstanceProvider и IEndPointBehavior
При этом я не очень понимаю, как WCF вписывается в эту схему проектирования. Это действительно для связи между клиентом и сервером. Если вы планируете использовать его для разработки типа SOA, есть другие методы, которые намного чище и легче. Введение зависимости и т. Д. Можете ли вы привести более простой пример того, что вы хотите сделать, возможно? Я бы даже предложил класс, который просто оборачивает вашу базу данных, которую вы передаете во все объекты, которым нужна информация о БД, а не WCF.