Сериализация объектов и сети в C # - PullRequest
0 голосов
/ 09 ноября 2010

Я работаю над простым сетевым проектом и хотел бы передавать объекты напрямую, используя соединение TCPListener / Client. Я хотел бы избежать накладных расходов WCF и иметь простой способ сериализации объекта на выходе, отправки его по сети и, наконец, восстановления его в исходном на другом конце.

Спасибо

Ответы [ 3 ]

2 голосов
/ 09 ноября 2010

Дистанция удалена из-за отсутствия WCF. WCF высоко оптимизирован для производительности и в большинстве случаев победит удаленное взаимодействие. См. http://msdn.microsoft.com/en-us/library/bb310550.aspx.. Вы не упоминаете, беспокоитесь ли вы о накладных расходах времени выполнения или о затратах на обучение использованию WCF. При этом вы можете уменьшить накладные расходы времени выполнения, используя бинарный транспорт TCP вместо HTTP. Он работает хорошо, хотя HTTP (SOAP), конечно, сейчас очень популярен. Ваша служба может поддерживать несколько транспортов (например, TCP и HTTP) для правильной работы с клиентами .NET (транспорт TCP) и другими клиентами, соответствующими стандартам (транспорт HTTP SOAP).

1 голос
/ 09 ноября 2010

Посмотрите .NET Remoting; это облегчает жизнь!
И это большая тема для отображения образца в комментарии здесь =)
Читайте здесь: http://msdn.microsoft.com/en-us/library/kwdt6w2k(VS.71).aspx

0 голосов
/ 09 ноября 2010

Хорошо, если вам нужно ТОЛЬКО поведение сериализации / десериализации без участия WCF или Remoting, есть множество способов:

  1. Стандартная сериализация через SerializableAttribute и BinaryFormatter
  2. Сериализация XML
  3. Json.NET
  4. Буферы протокола Google через ProtoBuf.NET

У всех подходов есть свои сильные и слабые стороны, но я считаю, что для ваших нужд №1 будет достаточно.Разумный компакт и без необходимости внешних библиотек.

...