我过去唯一的插件编程是简单的文本流。我想知道什么是通过套接字发送类似Java对象的最有效方法。
例如,如果我有以下Employee类(Dependent将是一个由依赖的信息组成的简单类):
public class Employee {
private String name;
private double salary;
private ArrayList<Dependent> dependents;
}
我是否应该使Employee对象Serializable并通过套接字发送实例。或者我应该写一个包含Employees信息的xml文件并发送?任何指导将不胜感激。还是有一些完全不同的更好的方式?谢谢!
答案 0 :(得分:3)
如果您只发送Java JVM之间的数据,则可以选择其中一种。
文本表示(XML,JSON或自定义)有几个优点:
根据格式的不同,它可能会慢一点,但这通常不显着。
答案 1 :(得分:3)
如果您不一定要使用XML,那么您也可以尝试使用JSON。 google-gson库使这非常简单。要序列化代码,它很简单: -
Employee employee = new Employee();
...
Gson gson = new Gson();
String json = gson.toJson(employee);
并在另一端反序列化String
: -
String socketDataAsString = null;
...<read from socket>...
Gson gson = new Gson();
Employee employee = gson.fromJson(socketDataAsString, Employee.class);
答案 2 :(得分:0)
如果必须直接使用低级套接字,有几种方法可以实现。您可以将其转换为文本格式并发送字节,然后在另一侧重新构建它。如果您的对象是可序列化的,您可以通过套接字发送它们(http://www.rgagnon.com/javadetails/java-0043.html)。
如果您有一定的灵活性,您也可以使用RMI进行远程交互。