|
WebSockets: как реализовать такое?
|
|||
---|---|---|---|
#18+
Задача: есть c# клиент, есть удаленный c# сервис, сервис устанавливает коннект к удаленному клиенту, после этого клиент работает с сервисом по принципу Request->Response по этому каналу. Здесь преимущество в том, что на машине, где сервис не надо открывать порт на вход. На чем такое можно реализовать? Подумал про WebSockets, но там фулл-дуплекс, а надо иметь запрос-ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2017, 16:12 |
|
WebSockets: как реализовать такое?
|
|||
---|---|---|---|
#18+
Вопрос актуален... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2017, 18:54 |
|
WebSockets: как реализовать такое?
|
|||
---|---|---|---|
#18+
Ролг Хупин, Клиент должен работать как сервер, чтобы постоянно слушать порт и отвечать на запросы. Реализуй на чём хочешь, на чем можно, на чем можешь, на чем умеешь и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2017, 20:45 |
|
WebSockets: как реализовать такое?
|
|||
---|---|---|---|
#18+
Ролг Хупин, какие хоть данные планируете передавать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2017, 06:59 |
|
WebSockets: как реализовать такое?
|
|||
---|---|---|---|
#18+
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 канал, а затем по этому каналу идет форвард запросов-ответов клиент->сервис, как и в оргиниале. Просто выражаясь - дать доступ к своей машине некоему специальному приложению через свой сервис, известный ему, не выставляя при этом машину в нтернет. + к том же легко переключается на другую локальную же машину. Т.е. клиентское приложение не знает, куда оно коннектится реально. Ну, вот. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2017, 13:44 |
|
WebSockets: как реализовать такое?
|
|||
---|---|---|---|
#18+
Ролг Хупин, Поглядите еще в сторону 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/ ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2017, 18:40 |
|
WebSockets: как реализовать такое?
|
|||
---|---|---|---|
#18+
вот еще развернутый цикл статей https://www.codeproject.com/Articles/772854/WCF-Routing-Service-Part-I-Basic-Concept-Simple-Ro ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2017, 18:49 |
|
|
start [/forum/topic.php?fid=19&fpage=3&tid=1396725]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 127ms |
0 / 0 |