Пользовательский RPC против WCF против .NET Remoting - PullRequest
2 голосов
/ 10 мая 2011

Я написал простой класс RPC, который позволяет мне сериализовать и отправлять двоичные данные между настольным приложением .net и серверным приложением .net. Одним словом, клиент может отправить:

Dim Message as new TCPMessage
Message.Handler = "NewUser"
Message.AddField("FirstName", "Paul")
Message.AddField("Photo", PhotoBytes)
Message.Send()

И сервер восстановит данные на другом конце:

Public Sub NewUser (Message As TCPMessage)
    Dim FirstName as string = Message.GetString("FirstName")
    Dim Photo() as Bytes = Message.GetBytes("Photo")
    ...
End Sub

Это все работает хорошо для того, что я делаю в данный момент - это кажется довольно легким и производительным.

Что я хотел бы знать, каковы плюсы / минусы этого вместо того, чтобы через .NET Remoting / WCF? Я не очень разбираюсь в этих технологиях, однако может показаться, что они гораздо более гибкие, и, возможно, они также будут менее эффективными и представляют значительную кривую обучения.

Что касается критериев производительности, кривой обучения и того, что никто другой не будет поддерживать код, должен ли я продолжать создавать небольшие внутренние приложения с использованием моей схемы DIY или отказаться от нее как можно скорее для Remoting / WCF?

Редактировать: производительность является ключевым фактором, клиентские приложения будут регулярно получать наборы данных ~ 200 000 строк (да, это абсолютно необходимо для получения такого количества данных). Это все работает только в локальной сети.

1 Ответ

1 голос
/ 04 января 2012

Во-первых, .Net Remoting теперь не рекомендуется в пользу WCF, см. Действительно ли WCF заменяет .NET Remoting?

WCF быстрый и относительно легкий. Главное преимущество WCF заключается в том, что он настолько настраиваемый. Внося в основном только изменения конфигурации, вы можете изменить формат сериализации, транспортный протокол, механизм аутентификации, функциональность QOS (надежность / безопасность / масштабируемость). Он также достаточно расширяем, чтобы, если он не обеспечивает то, что вам нужно, вы можете добавить его самостоятельно. Наконец, он абстрагирует код приложения от кода связи.

Я бы определенно использовал WCF для новых проектов. Буду ли я менять существующее приложение на стабильное, производительное, специально разработанное решение? Это зависит от степени изменений, недостатков существующего решения и потенциальных преимуществ, которые может принести wcf.

...