Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Идентификация клиента в Remoting (не авторизация) / 6 сообщений из 6, страница 1 из 1
18.12.2007, 15:53
    #35018037
karioth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификация клиента в Remoting (не авторизация)
Раньше делал все приложения используя канал TcpChannel на клиенте и на сервере,
сейчас думаю, какой это изврат, ведь TCP соединение может передавать данные в обе стороны асинхронно.
Пишу свой канал DualTcpServerChannel и DualTcpClientChannel, каждый и IChannelReceiver и IChannelSender,
задумка такая: на сервере создается TcpListener, принимает подключения клиентов,
на клиенте как только канал создается, клиент тут же подключается к серверу.
Затем клиент вызывает методы на сервере и может принимать вызовы от сервера без создания слушающего сокета. Это позволит работать клиентам за прокси и фаерволлами.
На данный момент затык вот в чем: сервер хочет вызвать метод на клиенте, сообщение по цепочке доходит до моего транспортного синка, метод
void ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, out ITransportHeaders responseHeaders, out Stream responseStream). Как мне определить к какому из клиентов отсылать сообщение?
...
Рейтинг: 0 / 0
18.12.2007, 16:12
    #35018107
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификация клиента в Remoting (не авторизация)
Читал я в книжке такое решение, что сервер, получив коннект от клиента, запускает работу с этим клиентом в отдельном потоке (создавая экземпляр класса) , и продолжает ждать коннект от других клиентов. Таким образом, каждый клиент обрабатывается без задержек, которые могут быть не по его вине - не подойдет Вам такое?
Море излечило меня от Джихада...(с)
...
Рейтинг: 0 / 0
18.12.2007, 16:24
    #35018163
karioth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификация клиента в Remoting (не авторизация)
Не, это само собой понятно.

В .net framework есть два класса TcpServerChannel и TcpClientChannel, они реализуют однонаправленный канал от клиента к серверу для того чтобы клиент мог вызывать чтонибудь на сервере. Если надо получать оповещения от сервера (через event'ы или обычным вызовом функций), то необходимо создать еще канал (TcpClientChannel и TcpServerChannel) наоборот, т.е. клиент становится сервером, а сервер клиентов.

Смысл моей затеи в том, чтобы на клиенте не создавать прослушивающего сокета в принципе, а использовать один Tcp-сокет для передачи сообщений в обе стороны. Затык у меня в том, что есть удаленный объект, реально находящийся на клиенте, какой то метод этот объекта вызывается с сервера, этот вызов оборачивается в сообщение (IMessage) и передается по цепочке клиентских синков на сервере. Так вот как определить какому из клиентов принадлежит этот объект? Какому клиенту сообщение отсылать?
...
Рейтинг: 0 / 0
18.12.2007, 16:43
    #35018233
Volhv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификация клиента в Remoting (не авторизация)
kariothНе, это само собой понятно.

В .net framework есть два класса TcpServerChannel и TcpClientChannel, они реализуют однонаправленный канал от клиента к серверу для того чтобы клиент мог вызывать чтонибудь на сервере. Если надо получать оповещения от сервера (через event'ы или обычным вызовом функций), то необходимо создать еще канал (TcpClientChannel и TcpServerChannel) наоборот, т.е. клиент становится сервером, а сервер клиентов.

Смысл моей затеи в том, чтобы на клиенте не создавать прослушивающего сокета в принципе, а использовать один Tcp-сокет для передачи сообщений в обе стороны. Затык у меня в том, что есть удаленный объект, реально находящийся на клиенте, какой то метод этот объекта вызывается с сервера, этот вызов оборачивается в сообщение (IMessage) и передается по цепочке клиентских синков на сервере. Так вот как определить какому из клиентов принадлежит этот объект? Какому клиенту сообщение отсылать?

если вы работаете с utp - такое прокатит, а с tcp - нет, если выбрали tcp - играйте по более строгим правилам...
...
Рейтинг: 0 / 0
19.12.2007, 07:49
    #35019231
karioth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификация клиента в Remoting (не авторизация)
Volhvесли вы работаете с utp - такое прокатит, а с tcp - нет, если выбрали tcp - играйте по более строгим правилам...
Уже прокатило, загвоздка у меня в одном, я 100% уверен что это решается как-то ну очень просто,
начинайте читать сначала
...
Рейтинг: 0 / 0
20.12.2007, 11:21
    #35022623
karioth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Идентификация клиента в Remoting (не авторизация)
Проблема решена, оказывается цепочка клиентских синков создается для каждого сервера
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Идентификация клиента в Remoting (не авторизация) / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]