#wcf #c_sharp
Технология WCF хорошо решает проблему с брандмауэрами при разработке распределённых приложений, так как предоставляет уровень абстракции над стандартными протоколами и готовые механизмы аутентификации. Но нижний уровень упаковки данных в WCF - это контракты данных. Мало того, что wsdl накладывает много ограничений на формат данных, так ещё и эффективность xml-упаковки оставляет желать лучшего. Я сделал обёртку, чтобы надстроить бинарный формат данных поверх xml, но это тоже не самое эффективное решение. Да, объём передаваемых данных уменьшился примерно на порядок, исчезли падения на превышении немаленьких квот при получении списка объектов на видимом прямоугольнике карты, но зато и перепаковка выполняется дважды - сначала объектная модель сериализуется в бинарник, а потом бинарник размазывается в xml. Когда операций перепаковки много, это заметно. В идеале для сервисов внутреннего пользования (т.е., не предназначенных для интеграции с внешними системами) вместо контрактов я бы хотел иметь Stream, который отвечает за взаимодействие Endpoint'ов, разруливает поддержку стандартных сетевых протоколов и аутентификацию, но в который можно писать / читать любые данные. То есть, я хотел бы снизить уровень взаимодействия с сетью, но сохранив то хорошее, что есть в WCF. Поточные контракты данных здесь не подходят, так как если сервис инстанцирован локально, никаких перепаковок происходить не должно. Есть ли статьи на эту тему? Есть ли альтернативные технологии? Может, есть настройки WCF, которые бы позволяли сериализовывать данные не через xml, а прямо гонять сформированные бинарные массивы?
Ответы
Ответ 1
В WCF можно собрать свой customBinding, включив туда альтернативный кодировщик сообщений.выглядит как то, что вам нужно. Ответ 2
Если ты объявляешь метод с параметром Stream и/или возвращающий Stream, то ты можешь делать с потоком всё что угодно. Wcf поддерживает альтернативные сериализаторы, в том числе бинарные.Ответ 3
Пока что в документации удалось найти вот это: Задание передачи данных в контрактах служб Большие наборы данных и потоковая передача Но тут немного смущает то, что там есть ограничения на способы обеспечения безопасности. Мы как раз используем шифрование сообщений. Впрочем, ограничение выглядит вполне логичным, надо будет придумать, как его обойти.
Комментариев нет:
Отправить комментарий