.Net中进行RPC的优化方法

| 我正在考虑将.Net应用程序的一部分移至其他计算机。显而易见的方法是简单地将WCF与二进制tcp协议一起使用,例如\“使用.NET快速获得RPC的最简单方法?”中的描述程序。 我将拨打大量电话,而延迟是一个大问题。基本上,一台计算机将运行物理模拟器,其他计算机将使用数百个命令的API与之交互。 我在想最好的方法是创建一个自定义二进制协议,其中API命令由int16和序列号标识,后跟必需的参数。硬性发送和接收类将消除任何不必要的开销。 但这是很多工作,因为我们正在谈论数百个API命令。 有什么最佳实施方法的想法吗? 编辑: 需要说明的是:.Net中的AFAIK序列化未优化。例如,在内部使用Reflection时,序列化和反序列化对象的代价相对较高。我想避免这种情况,因此尽管如此,我仍然避免直接映射(硬接线)方法。 经过一番搜索后,我发现一个应用程序的记忆模糊了:http://www.protocol-builder.com/     
已邀请:
减少总流量(与使用WCF相比,这是自定义协议的主要优势)不会对延迟产生很大影响。主要问题将是使“必需参数”的数据量保持最小,因此每个请求都相对较小。 WCF中的默认序列化已经相当有效,尤其是在本地网络上使用TCP时。 在您描述的情况下,由于许多客户端连接到集中式服务器,因此消息本身的传输不太可能成为瓶颈-处理特定消息很可能成为瓶颈,并且传输机制不会\没关系。 就个人而言,我只会使用WCF,而不必费心尝试构建自定义协议。如果运行后发现有问题,则可以轻松地将传输抽象到自定义协议,然后将其映射到相同的接口。与仅在前面进行自定义协议堆栈相比,这将需要很少的额外代码,并且可能使代码更加整洁(因为自定义协议将被隔离为单个到“ clean” API的映射)。但是,如果您发现运输不是瓶颈,那么您将节省大量的劳动和精力。     

要回复问题请先登录注册