我正在使用Java编写客户端和服务器,客户端发送创建证书的请求。这个请求包含很多不同的数据类型,包括byte [],我现在这样做的方式是使用ObjectStreams,如:
objectStream.writeObject( new String("value of field1"));
objectStream.flush();
objectStream.writeObject( new String("value of field"));
objectStream.flush();
objectStream.writeObject( publicKey);
objectStream.flush();
...
现在我知道这是非常糟糕的设计,但我不太确定如何改进它。
XML会是一个好主意吗?
感谢,
答案 0 :(得分:2)
您有几种选择:
objectStream.writeObject(myObj);
答案 1 :(得分:1)
如果整个应用程序是用Java构建的,并且不必包含其他平台,您是否考虑过使用RMI?
您仍然需要处理序列化,但是您可以更原生地实现应用程序,而不必担心编组/解组或低级序列化等问题。
答案 2 :(得分:1)
使用Java序列化将服务器和客户端绑定到Java并且还使升级成为问题(是的,有很多方法可以解决它,但它常常是问题的根源)。 XML非常冗长,虽然可以处理少量数据,但不能很好地扩展。
答案 3 :(得分:1)
现在我知道这很糟糕 设计
你为什么这么认为? Java序列化易于使用和工作。 Don't complicate things needlessly.
您知道您是否必须容纳非Java参与者,或者在不能更新现有客户端的情况下发展协议?这些都是担心协议的原因。否则,做最简单的工作。将所有字段放在一个类中,制作Serializable
,它甚至比你现在所做的更简单。确保在一个地方保留与之相关的所有逻辑,如果您需要更便携的协议,那么序列化为XML或JSON而不是ObjectOutputStream
并不会太难。