首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Protobuf-net RPC与byte[]?

Protobuf-net RPC与byte[]?
EN

Stack Overflow用户
提问于 2012-01-25 12:33:43
回答 1查看 1.2K关注 0票数 1

我一直在使用protobuf-net以标准的protobuf-net方式传递对象状态数据。

我一直在序列化这个对象,获取一个byte[]数组,对数组进行加密,然后通过UDP发送出去。然后,客户端获取byte[]数组,解密并反序列化对象,一切都非常顺利。

我喜欢这样做,因为我们可以拥有许多数据查看器终端,这些终端可能并不总是具有最好或最可靠的连接。

现在我需要添加一些RPC机制。我非常想利用同样的特性集(序列化、加密和通过UDP传输)。

我已经有了一个接口,并且有WCF和XML-RPC连接到它。我已经考虑过使用protobuf-net作为WCF端点,但我不太确定它是否是我正在寻找的。我真的希望能够将我已经拥有的加密方案中的所有东西都打包在一起,并重用许多其他代码。

我已经在protobuf-net中查看了基本的http RPC示例,并且一直在寻找一种方法来获得供RPC使用的byte[]。我很愿意写一大块代码,只是我真的不知道从哪里开始。

有什么想法吗?

编辑:

下面是我通常发送状态消息的方式。它只是一些用protobuf-net序列化的变量

代码语言:javascript
复制
    ProtoBuf.Serializer.SerializeWithLengthPrefix(mStream, Common.Share, ProtoBuf.PrefixStyle.Fixed32);  

    byte[] ptext2 = RNGBytes.Concat(mStream.ToArray()).ToArray();  

    byte[] plainTextBytes = Encoding.UTF8.GetBytes(Convert.ToBase64String(RNGBytes) + plainText);  

    cryptoStream.Write(ptext2, 0, ptext2.Length);

    // Finish encrypting.
    cryptoStream.FlushFinalBlock();

    // Now we're done with the memory stream, let's turn it back into an array of bytes.
    byte[] cipherTextBytes = memoryStream.ToArray();

    foreach (IPEndPoint iep in BroadcastToIPs)
    {
        U.Send(cryptoStream.GetBuffer(), (int)mStream.Length, iep);
    }

    // Close both streams.
    memoryStream.Close();
    cryptoStream.Close();

现在我有了一个接口,类似于

public interface { void SetMovementMode(int Axis, int Mode); ..... }

有没有人有任何想法如何包装它,并以类似的方式发送它,能够加密它,等等?

EN

回答 1

Stack Overflow用户

发布于 2012-08-17 17:31:57

我使用zeroMQ和protobuf-net进行远程过程调用(从.NET到.NET,从python到.NET)。ZMQ是一个无代理的消息传递框架,它允许你发送byte[],并用最少的代码构建各种整洁的架构。此外,还有各种语言的绑定。查看他们的指南here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8997849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档