Некоторая производительность и метрики размера находятся на [1 112] эта страница . У меня нет статистики Jon на там в данный момент, просто потому что страница немного стара (Jon: мы должны зафиксировать это!).
Ре, являющееся прозрачным; protobuf-сеть может сцепиться в WCF по контракту; обратите внимание, что это играет приятно с MTOM по основному-http также. Это не работает с Silverlight, тем не менее, так как Silverlight испытывает недостаток в инжекционной точке. При использовании svcutil также необходимо добавить атрибут к классу (через частичный класс).
Ре BinaryFormatter (дистанционная работа); да, это имеет полный supprt; можно сделать это просто тривиальным ISerializable
реализация (т.е. просто звонить Serializer
метод с тем же args). Если Вы используете protogen
для создания классов, то это может сделать это для Вас: можно включить это в командной строке через аргументы (она не включена по умолчанию, поскольку BinaryFormatter
не работает над всеми платформами [CF, и т.д.]).
Примечание, что для очень маленьких объектов (единственные экземпляры, и т.д.) на локальной дистанционной работе (IPC), сырые данные BinaryFormatter
производительность на самом деле лучше - но для нетривиальных графиков или удаленных каналов (сетевая дистанционная работа) protobuf-сеть может превзойти его по характеристикам вполне прилично.
я должен также отметить, что буферный формат провода протокола непосредственно не поддерживает наследование; protobuf-сеть может имитировать это (в то время как сдерживающая проводная совместимость), но как с XmlSerializer, необходимо объявить подклассы заранее.
радости открытого исходного кода, я предполагаю;-p Jon и я работали над совместными проектами прежде и обсудили слияние этих двух, но факт - то, что они предназначаются для двух различных сценариев:
XmlSerializer
, DataContractSerializer
, и т.д.) , Если Вы работаете над Java и клиентами.NET, Jon является, вероятно, хорошим выбором для знакомого API с обеих сторон. Если Вы - чистая.NET, protobuf-сеть имеет преимущества - знакомый API стиля.NET, но также и:
[DataContract]
и [XmlType]
, классы могут часто использоваться без каких-либо изменений вообще) BinaryFormatter
, XmlSerializer
, WCF, DataContractSerializer
) - разрешение его работать непосредственно механизмом дистанционной работы. Это, по-видимому, было бы вполне большим разделением от основной соединительной линии Java для порта Jon. Ре, объединяющее их; я думаю, что мы оба были бы открыты для него, но кажется маловероятным, что Вы хотели бы оба набора функций, так как они предназначаются для таких различных требований.
Это делается через «контекст активации». На мой взгляд, WinSxS не имеет никакого смысла, пока вы не узнаете о контексте активации и о том, как им управлять.
Я разместил довольно длинное сообщение в блоге, объясняющее детали, на http: //omnicognate.wordpress. com / 2009/10/05 / winsxs / .
Подводя итог статье, контекст активации - это структура, которую WinSxS использует во время выполнения для преобразования имен неверсированных объектов (например, имен DLL) в полную информацию о том, как найти их. Назначение «манифестов» в WinSxS - создание контекстов активации. Не понимая, как и когда создаются эти контексты активации и как ими управлять (они хранятся в локальном стеке потока), невозможно осмыслить шаги, связанные с загрузкой DLL через WinSxS, и поэтому невозможно диагностировать большинство проблем, которые могут возникнуть.