Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текстовый чат WCF, Обратная связь на WCF 
:(
    Опции темы
Bladerender
Дата 10.7.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Осваиваю WCF. Задача - Клиент-сервер месенджер
Сделал WCF Котракт:

Код

[ServiceContract]
    public interface IMessageContract
    {
         [OperationContract]
          void SendMessage(string message)      
    }



Серверная часть.
Сервис
Код

public class MessageService : IMessageContract
        {
            public void SendMessage(string message)   
           {
                   mbox(message);
           } 

        }



запускаю прослушивание
           
Код

 ServiceHost host = new ServiceHost(typeof(IMessageService), new Uri[] { });
            host.AddServiceEndpoint(typeof(IMessageContract), new NetTcpBinding(), "net.tcp://localhost:10/MessageService");
            host.AddServiceEndpoint(typeof(IMessageContract), new BasicHttpBinding(), "http://localhost:10/MessageService");
            host.Open();



Клиентская часть:

             
Код

ChannelFactory<IMessageContract> factory = new ChannelFactory<IMessageContract>(new NetTcpBinding());
             IMessageContract serverObject = factory.CreateChannel(new EndpointAddress("net.tcp://localhost:10/MessageService"));
             serverObject.SendMessage("Hello!");




Получается это действует только в одно сторону. Тоесть я сейчас могу отправлять сообщения с клиента на сервер и у него будут выскакивать MessageBoxes.

Каким макаром сделать что бы и сервер клиенту мог отсылать сообщения? Сделать оба приложения гибридными Клиент-серверными приложениями это первое что приходит на ум (тоесть запустить на клиенте сервис и сервером запускать меотды клиента).
Но мне кажется должен быть другой выход. Как-то же должна осуществлятся обратная связь между клиентом и сервером, кроме как делать с сервера клиент.
Можно конечно сделать в контракте еще один меотд типа string[] GetServerMessages и вызывать его время от времени. Но это ж не выход. Нужно как-то отслеживать действия сервера, ивентами какими-то или еще чем. Помогите технологическим советом.

PM MAIL   Вверх
PashaPash
Дата 10.7.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 6
Всего: 49



Bladerender, 
1. Периодически опрашивать сервер - оно же GetServerMessages()
2. Использовать дуплексные контракты - смотри msdn по ServiceContractAttribute.CallbackContract.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.