2014-06-29 1 views
1

Все наши сервисы принимают объект ServiceCallContext в качестве параметра. Затем служба создает брокера и сообщает брокеру, какую строку подключения использовать на основе ServiceCallContext.Как инкапсулировать код для служб WCF без использования базового класса?

Другими словами, некоторые наши клиенты имеют свои собственные базы данных, поэтому вызовы служб должны указывать брокерам на их базы данных.

Я хотел бы взять код, который смотрит на ServiceCallContext и выбирает правильное соединение и помещает его в базовый класс сервиса. Мой руководитель команды не любит эту идею, потому что со службами он чувствует, что это будет «скрывать» поведение и что это будет плохо. Он предположил, что могут быть лучшие способы выполнить одно и то же с помощью каких-либо расширений WCF.

Мне действительно все равно, как мы реализуем код, пока я могу его повторно использовать, потому что я считаю, что для меня абсолютно глупо переписывать его в каждой службе, которую я создаю. Я начал изучать некоторые видеоролики WCF на PluralSight, и похоже, что есть много отличных вещей, которые он может сделать, но, к сожалению, я не совсем уверен, с чего начать. Может ли кто-нибудь дать мне небольшое руководство относительно того, сможет ли WCF выполнить то, что я пытаюсь сделать, и если да, то какие особенности WCF я ищу?

+2

Я думаю, что у вашей команды есть что-то в отношении расширений. WCF довольно хорошо спроектирован и позволяет настраивать поведение; перехватчиков и т. д. Все это и способствует ** повторному использованию кода **. Нужно помнить о ограничении наследования одного класса C#, прежде чем создавать базовый класс, чья полезность может ограничить вас. http://www.amazon.com/Programming-WCF-Services-Mastering-AppFabric-ebook/dp/B0043D2DUK/ref=sr_1_2?s=books&ie=UTF8&qid=1404102735&sr=1-2&keywords=wcf – MickyD

+0

@MickyDuncan Спасибо, да Согласен. :) – BVernon

ответ

1

Необходимая функциональность: custom interceptor.

Это позволяет вам указывать стек WCF для просмотра входящих сообщений и выполнять некоторые действия на их основе. Если вы переместите перехватчик в свою собственную сборку, вы можете ссылаться на нее из нескольких служб.