C# Mono-在客户端和服务器上共享代码。

C# Mono-在客户端和服务器上共享代码。,c#,java,shared-libraries,C#,Java,Shared Libraries,我们正试图提出我们的客户机和服务器标准,这是一个很大的争论。一个学派是C#客户端和java服务器,它们使用某种类型的专有消息库来共享数据对象(想想类似XML的结构吧) 这个模型的问题是,如果您在服务器上使用C#,那么有很多代码需要复制(验证、解析),这些代码可以简单地重用。如果有人大力推动使用linux机器,那么mono不支持您的目标吗 其他人都有这个难题吗?我会尽量让客户机和服务器保持相同的运行时(Java或CLR)。我们混合使用Mono和.Net客户机/服务器取得了很大的成功。有一些框架可以

我们正试图提出我们的客户机和服务器标准,这是一个很大的争论。一个学派是C#客户端和java服务器,它们使用某种类型的专有消息库来共享数据对象(想想类似XML的结构吧)

这个模型的问题是,如果您在服务器上使用C#,那么有很多代码需要复制(验证、解析),这些代码可以简单地重用。如果有人大力推动使用linux机器,那么mono不支持您的目标吗


其他人都有这个难题吗?

我会尽量让客户机和服务器保持相同的运行时(Java或CLR)。我们混合使用Mono和.Net客户机/服务器取得了很大的成功。

有一些框架可以实现这一点。ICE(ZeroC),“协议缓冲区”等


例如,我的protocol buffers实现(protobuf net)可以在mono、MS.net、CF、Silverlight等平台上运行,并且二进制格式与一系列语言(java等)兼容。如果您从.proto(一种定制定义语言)开始,您可以使用它以您需要的每种语言生成对象层。

在任何情况下,我都会使用协议缓冲区或其他以语言中立形式定义的通信,以确保您在将来不会受到限制


一旦你完成了,你就可以从单声道C#开始。然后,如果这被证明是不可行的,您可以切换到另一种语言。

我建议您使用一些旧的但很好的标准来在两者之间传输数据,SOAP和XML-RPC就是这样的例子。如果这两种方法中的任何一种都是可能的或可行的,那么您可以尝试使用JSON或编写自己的XML格式。协议缓冲区最近被提到了很多,但我没有研究它,所以我真的不能对它说什么