WCF Proxy tunnel

Ниже расскажу о реализации проброса WCF запросов от одного сервера через несколько промежуточных, так называемый wcf tunneling, вопрос о реализации которого уже поднимался на gotdotnet.ru. Там автор предлагал использовать Castle.DynamicProxy для динамической генерации прокси-классов для создания канала. Однако комментаторы отметили, что полученный функционал дублирует лишь стандартные возможности при прямом взаимодействии точка-точка.
Актуальность приобретается, когда добавляется набор промежуточных точек. При этом на клиенте идет перехват вызова произвольной удаленной функции FuncName на вызов абстрактной функции object _DataTransfer(HeaderAuthen auth, object ServiceLink, object FuncName, object[] param); Далее обращение транслируется через серию промежуточных машин и в итоге обращение передается на ServiceLink, где обрабатывается. Также возвращается результат. Грубо говоря примитивный функционал Biztalk своими руками по передачи soap сообщений в многосвязной сети. Кроме того мы без ведома пользователя накладываем на канал защиту через HeaderAuthen auth.
Отдельно выкладываю реализацию класс DynamicServiceProxy и ServiceChannelManagerInterceptor, подменяющие вызов, а также сам вызов в ServiceChannelManager. Соответственно все закладывается в библиотеку, которая должна быть на всех точках, а на туннельных-промежуточных точках еще и реализуется Контранкт, в котором важно описать передаточную функцию _DataTransfer, все функции на конечных точках, а также все классы и типы через KnownTypeContainer. Также важно включить сериализатор XmlSerializerFormat, так как по умолчанию в WCF используется DataContractSerializer, которых не позволяет передавать object. То есть вызовы проходить будут, а данные - нет. Кроме того у XmlSerializerFormat тоже есть особенность, кто нельзя передать некоторые стандартные типы, например, DataSet как параметр, так как в них используется нетипизированный ArrayList. Вот пожалуй и все, что нужно знать.

Метки:   Категории:Csharp | Code


blog comments powered by Disqus

Добавить комментарий

Кто я?

Программист. Я слежу за блогосферой и знаю, как будет развиваться интернет. Когда у меня есть время я даже прилагаю для этого усилия. Подробнее

Последние комментарии

Не отображать

Topbot at FeedsBurner

Мои Твиты

Twitter октября 18, 06:44
Яндекс атаковал Израиль http://dlvr.it/QnhhCy

Twitter октября 17, 16:07
Как разверифицироваться в Твиттере? http://dlvr.it/Qnddsc https://twitter.com/f1ashr/status/1052591848303120390/photo/1

Twitter октября 17, 16:07
На батуте в космос http://dlvr.it/QnddrT

Twitter октября 17, 16:07
Estonian Fitsme http://dlvr.it/Qnddn3

Twitter октября 17, 16:07
Россия будет воевать http://dlvr.it/Qnddq7

Twitter октября 17, 15:33
Про браузеры http://dlvr.it/QndT1N

Twitter октября 17, 14:54
Прыгающий Робо-жук http://dlvr.it/QndGjW https://twitter.com/f1ashr/status/1052573591181582336/photo/1

Twitter октября 17, 14:54
Google Plus выкатывает красивые имена http://dlvr.it/QndGj2

Twitter октября 17, 14:54
Немецкие совестливые журналисты http://dlvr.it/QndGjD

Twitter октября 17, 09:27
Победа свободы над здравым смыслом http://dlvr.it/QnbjB5 https://twitter.com/f1ashr/status/1052491176593354752/photo/1

Twitter октября 17, 06:41
программа instagramliker обновлена 2018г http://dlvr.it/Qnb2DZ

Twitter октября 16, 07:50
CloudSearch http://dlvr.it/QnTLzB

Twitter октября 16, 07:50
Сидеть вредно. http://dlvr.it/QnTLzD

Twitter октября 16, 07:50
Вконтакте 7 лет http://dlvr.it/QnTLzH

Twitter октября 16, 07:50
Рейтинг авторитетности блогов http://dlvr.it/QnTLz2

Twitter октября 16, 07:50
Tech news http://dlvr.it/QnTLz5

Twitter октября 16, 07:13
Совет многоквартирного дома http://dlvr.it/QnTCHQ https://twitter.com/f1ashr/status/1052095075918872576/photo/1

Twitter октября 16, 07:13
Windows 10 и Новый мировой порядок http://dlvr.it/QnTCF0 https://twitter.com/f1ashr/status/1052095069317001216/photo/1

Twitter октября 16, 07:13
Украинские солдаты до сих пор не поняли с кем воюют http://dlvr.it/QnTC5Z https://twitter.com/f1ashr/status/1052095061586980864/photo/1

Twitter октября 16, 07:13
Продолжая тему браузеров http://dlvr.it/QnTC4k

Мой твиттер

Копирайт

Все мысли, высказанные в блоге, являются моим мнением и за это мнение меня никто не забанит! Кроме того, никто не имеет право копировать материалы блога без использования ctrl+C/V!

© Copyright 2008