Как инкапсулировать код для сервисов WCF без использования базового класса?

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

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

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

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


person BVernon    schedule 29.06.2014    source источник
comment
Я думаю, что у вашего тимлида есть что-то по поводу расширений. WCF довольно красиво спроектирован и допускает индивидуальное поведение; перехватчики и так далее. Все это также способствует повторному использованию кода. Прежде чем создавать базовый класс, полезность которого может ограничить вас, необходимо помнить об ограничении наследования одного класса С#. amazon.com/Programming-WCF-Services-Mastering-AppFabric- электронная книга/   -  person MickyD    schedule 30.06.2014
comment
@MickyDuncan Спасибо, и да, я согласен. :)   -  person BVernon    schedule 30.06.2014


Ответы (1)


Необходимая функциональность — это пользовательский перехватчик.

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

person tom redfern    schedule 30.06.2014