Encryption 带字节[]的Protobuf网络RPC?

Encryption 带字节[]的Protobuf网络RPC?,encryption,udp,rpc,protocol-buffers,protobuf-net,Encryption,Udp,Rpc,Protocol Buffers,Protobuf Net,我一直在使用protobuf网络以标准protobuf网络的方式通信对象状态数据 我一直在序列化这个对象,得到一个byte[]数组,加密数组并通过UDP发送出去。然后,客户机获取byte[]数组,对对象进行解密和反序列化,一切工作都非常顺利 我喜欢这样做,因为我们可以有很多data viewer终端,它们可能并不总是有最好或最可靠的连接 现在我需要添加一些RPC机制。我非常希望利用相同类型的功能集(通过UDP序列化、加密和发布) 我已经有了一个接口,并将WCF和XML-RPC连接到它。我已经考虑

我一直在使用protobuf网络以标准protobuf网络的方式通信对象状态数据

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

我喜欢这样做,因为我们可以有很多data viewer终端,它们可能并不总是有最好或最可靠的连接

现在我需要添加一些RPC机制。我非常希望利用相同类型的功能集(通过UDP序列化、加密和发布)

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

我已经看过protobuf net中的基本http RPC示例,并一直在寻找获取字节[]以供RPC使用的方法。我愿意写一段很好的代码;我真的不知道从哪里开始

有什么想法吗

编辑:

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

    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();
现在我有了一个界面,比如


公共接口
{
void SetMovementMode(int轴,int模式);
.....
}


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

我正在使用zeroMQ和protobuf net来执行RPC(.net到.net和python到.net)。ZMQ是一个无代理消息传递框架,允许您发送字节[],并用最少的代码构建各种整洁的体系结构。还有各种语言的绑定。查看他们的指南

我正在使用zeroMQ和protobuf net来执行RPC(.net到.net和python到.net)。ZMQ是一个无代理消息传递框架,允许您发送字节[],并用最少的代码构建各种整洁的体系结构。还有各种语言的绑定。查看他们的指南

我有一个想法:使用一个实现sumilar来实现from protobuf socket rpc Java项目,并使用反射将所有内容推回…但是如果我这样做,我觉得我遗漏了一些东西。当你说“获取字节[]以供rpc使用”时,你能更具体一点吗?字节[]不太关心如何使用它。。。更具体地说,是哪一步导致头痛?你在寻找什么用法?(我可能有一些想法,但我需要更清楚地了解这个问题)编辑以添加额外的信息;所以-我可以看到三种选择。。。1:代码生成,在构建之前为您的接口编写c#;2:元编程(动态编写接口的具体实现),3:表达式树解析;我对每一步都有一些粗略的步骤,但是——优雅地完成这一步绝非小事。我有一个基本的RPC服务器在一个tw代码剪辑,这可能是可以调整。。。但是它不是很漂亮(如果重写的话,我会做得很不一样)是的,我对选项2做了一些小尝试,但很快就变得很不优雅,这就引出了我的问题。作弊的出路是使用评论中的rpc.proto进行一些反思。不是最优的,但会是一个很好的临时解决方案。我一直有一个想法:对from protobuf socket rpc Java项目使用一个实现sumilar,并使用反射将所有内容推回…但如果我这样做,我觉得我遗漏了一些东西。当你说“获取一个字节[]以供rpc使用”时,你能更具体一点吗?字节[]不太关心如何使用它。。。更具体地说,是哪一步导致头痛?你在寻找什么用法?(我可能有一些想法,但我需要更清楚地了解这个问题)编辑以添加额外的信息;所以-我可以看到三种选择。。。1:代码生成,在构建之前为您的接口编写c#;2:元编程(动态编写接口的具体实现),3:表达式树解析;我对每一步都有一些粗略的步骤,但是——优雅地完成这一步绝非小事。我有一个基本的RPC服务器在一个tw代码剪辑,这可能是可以调整。。。但是它不是很漂亮(如果重写的话,我会做得很不一样)是的,我对选项2做了一些小尝试,但很快就变得很不优雅,这就引出了我的问题。作弊的出路是使用评论中的rpc.proto进行一些反思。不是最优的,但将是一个很好的临时解决方案。