Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > WCF CallbackContrac


Автор: vlsaf 10.11.2009, 14:32
Всем привет.

Есть задача:

На сервере крутятся два приложения.
Первое приложение получает данные от такси. К какому таксопарку принадлежит такси, Координаты и прочее. 

Дальше оно передает эти данные второму приложению.
Это WCF. Это второе приложение должно послать данные о такси в нужный таксопарк.

Вопрос. Каким образом WCF определит, в какой таксопарк слать данные?





Клиент (программа в таксопарке) вызывает метод WCF InitCallback( int ID_таксопарка) и на сервере инициализируется класс,
который отвечает за обратный вызов.
Код

    class LookupService : ILookupService
    {
        ILookupServiceCallback callback;

        int unternehmenID = 0; // ID таксопарка

        public int UnternehmenID
        {
            get { return unternehmenID; }
        }

        public void InitCallback(int unternehmenID) // этот метод вызывает клиент
        {
            // тут мы инициализировали интерфейс callback, с помощью которого мы будем вызывать методы, реализованные на клиенте
            ILookupServiceCallback callback = OperationContext.Current.GetCallbackChannel<ILookupServiceCallback>();
        }
    }



И вот тут мне нифига не понятно. Объектов этого класса будет ровно столько, сколько программ клиентов из таксопарков вызвали данный метод.
Чтобы мне передать данные в определенный таксопарк, мне нужно обратиться к обекту класса LookupService именно данного таксопарка.
Как это сделать? Перебирать в цикле все объекты данного класса и выяснять ID таксопарка или можно как-то обойтись без перебора?

Да и при переборе, я не очень догоняю, как мне перебирать объекты класса.

Автор: vlsaf 10.11.2009, 15:38
Народ, я кажется догнал!

Все просто до безумия.

Нужно создать public static класс и в нем хеш-таблицу, в которую мы заносим ID таксопарка и ссылку на объект. И таким образом не остается никаких вопросов, как передавать в таксопарк данные smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)