powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WebSockets: как реализовать такое?
7 сообщений из 7, страница 1 из 1
WebSockets: как реализовать такое?
    #39409609
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача:

есть c# клиент, есть удаленный c# сервис, сервис устанавливает коннект к удаленному клиенту, после этого клиент работает с сервисом по принципу Request->Response по этому каналу.

Здесь преимущество в том, что на машине, где сервис не надо открывать порт на вход.

На чем такое можно реализовать?


Подумал про WebSockets, но там фулл-дуплекс, а надо иметь запрос-ответ.
...
Рейтинг: 0 / 0
WebSockets: как реализовать такое?
    #39442936
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос актуален...
...
Рейтинг: 0 / 0
WebSockets: как реализовать такое?
    #39442975
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Клиент должен работать как сервер, чтобы постоянно слушать порт и отвечать на запросы.
Реализуй на чём хочешь, на чем можно, на чем можешь, на чем умеешь и т.д.
...
Рейтинг: 0 / 0
WebSockets: как реализовать такое?
    #39443014
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин, какие хоть данные планируете передавать?
...
Рейтинг: 0 / 0
WebSockets: как реализовать такое?
    #39443275
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРолг Хупин, какие хоть данные планируете передавать?

вот, это вопрос прямо в точку.

Для наглядности возьмем вот такое

https://github.com/sailro/Bdtunnel


авторBoutDuTunnel is a useful software for users behind restrictive firewalls and is intended to use network services that normally you cannot. You need a server located outside the firewalled area (for example your computer with permanent connection at home) which have full access to the Internet. BoutDuTunnel is then able to create virtual connections tunnelled in HTTP requests. All data is scrambled to preserve anonymity.

BoutDuTunnel is compatible with HTTP proxy servers, even if they use NTLM authentication (like ISA Server) and even if they prohibit the "connect method". BoutDuTunnel client acts as a Socks Server (v4, v4a and v5 are supported) and is compatible with static forwards. Several communication protocols are supported (a Built-in HTTP Server is available on the server side):

HTTP binary (good performance, good compatibility, proxy compatible)
HTTP SOAP (maximum compatibility, proxy compatible)
TCP binary (maximum performance)
IPC (for testing purpose only)
BoutDuTunnel can also be directly hosted inside IIS or Apache/mod_mono (HTTPS protocols are then supported)


Т.е. есть клиент и есть сервис, между ними туннель, у клиента есть конфигурация, какие входящие на него коннекты куда должен форвардить удаленный сервис. Это принципиально работает так: клиент коннектиться к сервису (туннель) и затем по этому каналу форвардит входящие реквесты на удаленный сервис и получает от него ответы и возвращает их своим клиентам.
Сервис работает с базой в той локальной сети.

Недостатки: если такой сервис поставить на localhost, а клиент поставть на публично доступной машине в интернете (например, в туче), тогда надо открывать входящий порт на localhost.

Чтобы избежать этого хотелось бы изобразить нечто типа reverse tunnel, т.е. коннект устанавливается сервисом из localhost к клиенту в туче используя только обычный выходной http канал, а затем по этому каналу идет форвард запросов-ответов клиент->сервис, как и в оргиниале.

Просто выражаясь - дать доступ к своей машине некоему специальному приложению через свой сервис, известный ему, не выставляя при этом машину в нтернет. + к том же легко переключается на другую локальную же машину.

Т.е. клиентское приложение не знает, куда оно коннектится реально.
Ну, вот.
...
Рейтинг: 0 / 0
WebSockets: как реализовать такое?
    #39444259
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Поглядите еще в сторону Protocol Bridging. Когда некий WCF сервис может принимать запросы "извне" и пробрасывать на другие сервисы внутри сети - которые делают реальную работу. И потом возвращать ответ от них "вовне".

При этом протоколы, и политики безопасности "внешнего" и "внутренних" WCF сервисов могут отличаться.
Пошаговое руководство как реализовать Protocol Bridging.
http://www.dotnetcurry.com/wcf/718/protocol-bridging-using-routing

К примеру, "внешний" сервис может быть настроен на прием зашифрованных сообщений через HTTPS, а после проверки прав доступа пересылать уже на внутренние сервера через TcpIp без шифрации.

"Внутренних" сервисов может быть много, и тогда "внешний" сервис, параллельно, будет выступать как балансировщик нагрузки.
Как реализовать балансировку нагрузки описано, например, тут
http://www.c-sharpcorner.com/article/server-load-balancing-in-wcf/
...
Рейтинг: 0 / 0
WebSockets: как реализовать такое?
    #39444267
TsHeloWorlder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WebSockets: как реализовать такое?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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