今天推荐一下Java作为服务端开发语言。国内很多出色的页游和手游都是采用Java作为服务端语言的。比如《神曲》《秦美人》《龙将》《时空猎人》
等,不一而足。
本文主要探讨如何简化Protobuf程序的开发。
按照传统的开发流程,都是如下:
1.先编写proto文件格式,例如
message Person { required int32 id = 1; required string name = 2; optional string email = 3; }
//序列化 Person person = builder.build(); byte[] buf = person.toByteArray(); //反序列化 Person person2 = PersonProbuf.Person.parseFrom(buf);上面的流程看似很方便了,有什么问题呢?还能不能再改进呢?我们先看看生成的Person类代码吧,竟然有几千行。
public class Person{ public int id; public String name; public String email; }
public static void main(String[] args) throws IOException { // //类的模式设置为Person类 Schema<Person> schema = RuntimeSchema.getSchema(Person.class); Person person1 = new Person(); person1.id = 10086; person1.name = "ken"; person1.email = "[email protected]"; // 缓存buff LinkedBuffer buffer = LinkedBuffer.allocate(1024); // 序列化成protobuf的二进制数据 byte[] data = ProtobufIOUtil.toByteArray(person1, schema, buffer); // 反序列化 Person person2 = new Person(); ProtobufIOUtil.mergeFrom(data, person2, schema); System.out.println(person2.id); }
Protostuff的优势是将开发流程简化,让我们可以更高效,更专注地开发。有任何问题欢迎一起探讨[email protected]
下一篇,我将会用一个完整的demo,将整个Unity客户端和服务端的通信流程串联起来。