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 января 22, 14:45
Добродел обновился http://dlvr.it/QCGHwl https://twitter.com/f1ashr/status/955451259439407105/photo/1

Twitter января 22, 13:32
Рейтинг каналов и ботов Телеграмм http://dlvr.it/QCFt9v https://twitter.com/f1ashr/status/955432885657395200/photo/1

Twitter января 21, 16:15
Битва за Мосул в 360 с вертолета http://dlvr.it/QC84Xk https://twitter.com/f1ashr/status/955111520337248256/photo/1

Twitter января 21, 16:15
3 февраля стартует год огненного Петуха http://dlvr.it/QC84XQ

Twitter января 21, 16:15
Когда будет обвал рынков? http://dlvr.it/QC84WR

Twitter января 21, 16:15
Независимая Подмосковия http://dlvr.it/QC84X3

Twitter января 21, 16:15
Designing for Scale with Windows Azure Storage http://dlvr.it/QC84V9

Twitter января 21, 15:09
Медведев теперь и на Ютубе http://dlvr.it/QC7kYz

Twitter января 21, 14:36
Львы в фамилиях иностранных агентов влияния http://dlvr.it/QC7ZC3 https://twitter.com/f1ashr/status/955086606188204032/photo/1

Twitter января 21, 14:36
Про школьников и Навального http://dlvr.it/QC7ZJ2

Twitter января 21, 14:36
Боинг 777 и москоское метро - взаиморасчет феодалов по правилам 16 века http://dlvr.it/QC7Z9J

Twitter января 21, 13:30
Дед Мороз похищает бизнес-женщин на НГ http://dlvr.it/QC7FqN

Twitter января 20, 15:55
Где искать инопланетян или как зародилась жизнь http://dlvr.it/QC2NhF https://twitter.com/f1ashr/status/954744219154829312/photo/1

Twitter января 20, 14:18
Про терракты в Лондоне http://dlvr.it/QC1tlb

Twitter января 20, 04:55
Вирусный ролик из Канады http://dlvr.it/QBzXyY https://twitter.com/f1ashr/status/954577999898161152/photo/1

Twitter января 20, 04:55
Мелькает число 35 в международных новостях http://dlvr.it/QBzY4f

Twitter января 20, 04:55
Спустя 18 лет в ЖЖ запустили поиск по постам http://dlvr.it/QBzY4s

Twitter января 20, 01:03
json for .net http://dlvr.it/QBymCm

Twitter января 20, 00:05
Флагостроение Юго-Востока Украины http://dlvr.it/QByXPL https://twitter.com/f1ashr/status/954505015724355584/photo/1

Twitter января 17, 13:37
программа instagramliker обновлена 2018г http://dlvr.it/QBbVpV

Мой твиттер

Копирайт

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

© Copyright 2008