Объект C #, проходящий через сетевой поток с высокой избыточностью - PullRequest
1 голос
/ 07 августа 2011

Мне нужно отправить двоичную полезную нагрузку с метаданными по нетрадиционному медленному, с низкой пропускной способностью, дрожащему соединению, которое в принципе можно рассматривать как любое другое обычное соединение на уровне 3. и выше. Я ожидаю, что двоичная полезная нагрузка будет не более 512 КБно, вероятно, будет только около 16 КБ.Мой клиент работает под управлением .NET Compact Framework, и мой сервер может работать под управлением обычной платформы .NET Framework.

Я ищу метод или библиотеку для сериализации и передачи объектов через поток (в частности, SslStream или какой-либо аналог)последовательно через случайно расположенные интервалы (всегда при соединении) с высокой степенью избыточности, в основном в очереди сообщений.Я рассмотрел различные реализации XML, SOAP, JSON, protobuf и WCF, но некоторые из них не совместимы, слишком тяжелы, не имеют достаточно высокой избыточности или имеют плохую документацию.

Я готовнапишите что-нибудь самостоятельно или портируйте что-нибудь, но было бы очень полезно иметь что-то для работы и выдвинуть некоторые идеи.

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Я бы попробовал MSMQ. Он поддерживается на .Net CF и на всех платформах MS-серверов:

http://msdn.microsoft.com/en-us/library/ms229665%28v=VS.90%29.aspx

Я не использовал его для «ненадежных» соединений, но он поддерживает транзакционные очереди и надежную доставку, поэтому это звучит так, как вы хотите. В этом конкретном пространстве вы действительно не хотите придумывать что-то для этой цели или изменять что-то другое, так как сделать это неправильно очень сложно. Я думаю, что WCF также поддерживает транспорт MSMQ в Net CF, что позволило бы работать с чистой абстракцией обмена сообщениями.

Чтобы пояснить, WCF с транспортом MSMQ, если он поддерживается.

Ключевым моментом здесь является его оценка и тестирование в сценариях, которые вы описываете, поскольку ничто не идеально на 100%.

0 голосов
/ 08 августа 2011

Я нашел что-то под названием NetSockets , в нем есть несколько ошибок, но он простой, небольшой, многопоточный, и я могу изменить его, чтобы использовать нужные мне потоки, объекты данных и сериализатор, и портировать его моему клиенту. Мой ответ был в классах NetBasePayloadStream, NetBaseStream и NetObjectStream этой реализации.

...