Является ли то, что я спрашиваю, считается внедрением зависимости для WCF? - PullRequest
0 голосов
/ 24 февраля 2011

Я работаю с коллегой по веб-сервису на нашем продукте. Он собрал несколько методов обслуживания, но все они требуют одного и того же объекта. Вот пример:

public interface IQueueService
    {
        [OperationContract]
        UserBase LoginUser(MessageBase message, string userName, string password);

        [OperationContract]
        bool LogoutUser(MessageBase message, string userName);
}

Как видите, для каждого метода требуется объект MethodBase. Каков наилучший метод, чтобы требовать, чтобы этот объект использовал «конструктор WCF вида / сорта», прежде чем можно будет вызывать любые другие методы. Это что такое внедрение зависимости? Я читал об этом, но не уверен, что это то, что нам нужно.

Полагаю, у нас может быть метод для создания экземпляра MethodBase, и, если его нет ни в одном другом методе, мы выдаем исключение?

Любые мысли приветствуются. Спасибо

1 Ответ

1 голос
/ 24 февраля 2011

WCF основан на интерфейсе - и у вас нет конструкторов для интерфейсов, поэтому внедрение зависимостей вам не поможет.

В зависимости от того, какое взаимодействие вы ожидаете от клиентов суслуги, и в зависимости от семантики вашего MessageBase класса, вы можете выбрать дизайн, ориентированный на соединение:

public interface IQueueService
{
    [OperationContract(IsOneWay = false, IsInitiating = true)]
    void Connect(MessageBase message);

    [OperationContract]
    UserBase LoginUser(string userName, string password);

    [OperationContract]
    bool LogoutUser(string userName);

    [OperationContract(IsOneWay = false, IsTerminating = true)]
    void Disconnect();
}

Вашим клиентам необходимо сначала Connect(), предоставив MessageBase, затемвызовите операцию (скажем, LoginUser()), затем вызовите Disconnect().

Конечно, все это зависит от семантики, которую вы не указали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...