我即将设计一个客户端应用程序,服务器部分也没有设计。
我需要决定通信协议。
要求是:
到目前为止,我已经考虑过这些:
我愿意接受建议。到目前为止,我倾向于protobuf。
修改:更多信息
答案 0 :(得分:0)
我会使用简单的HTTP,TCP(带套接字)或FTP,除非你真的需要一些更软化的功能
答案 1 :(得分:0)
协议缓冲区确实对我们有效:)
您可能希望通过HTTP对它们进行分层。显然,您需要在TCP / IP和协议缓冲区本身之间使用某种类传输层 - protobufs不会定义除序列化消息之外的任何内容。 HTTP通常很容易理解,很容易通过防火墙,并且在多个平台上都支持客户端和服务器。
一个问题:我不确定PHP中支持哪种协议缓冲区。有一个beta library here,但我在3rd party add-ons page中列出了所有内容。
答案 2 :(得分:0)
请记住,在使用HTTP时,服务器无法在没有请求的情况下向客户端发送信息,因此您可能必须使用类似于长轮询的技术。
我想将此添加为评论,但我无法做到。
答案 3 :(得分:0)
我认为协议缓冲区听起来是个不错的选择。这几乎就是它的设计目标。
.NET端口是由Jon Skeet编写的:
http://code.google.com/p/protobuf-csharp-port/
我不确定PHP的支持程度有多大。这可能是个问题。
答案 4 :(得分:0)
我还建议通过TCP协议缓冲区。除非你使用隐式使用HTTP的更高级别的抽象,否则应该避免使用HTTP。
协议缓冲区的.NET端口AFAIK不支持异步读取protobuffers,所以我建议使用异步套接字并使用长度前缀的protobuffers。
我已经在我的.NET TCP/IP FAQ上为协议设计写了几条建议,包括基于TCP / IP的XML(我同意XML并不适合您的需求)。
答案 5 :(得分:0)