我正在开发一个银行客户-服务器架构。
我想知道什么是最方便的方式来组织服务器端。银行是否需要在同一个文件中充当服务器和GUI?
因为目前我有一个服务器GUI,它实例化一个银行。这家银行有一张客户名单,每个客户都有几个账户。
发布于 2012-12-03 17:12:47
1)您希望您的AbstractTableModel在构造函数中接受一个Bank对象。然后,AbstractTableModel方法将委托给Bank的底层操作列表。
解决银行对象变更问题的方法有两种。
( a)使用一种方法假设一个银行对象:
public List<Operation> getOperations();每次向表模型发出请求时,都可以调用getOperations()。例如:
public Object getValueAt(int row, int column) {
return bank.getOperations().get(row)...
}这是一个缓慢,但一个简单的方式来获得更新。
( b)以更复杂的方式,当向银行添加新的操作时,您将在Bank对象中使用AbstractTableModel寄存器来接收事件。这看起来应该是:
public class BankTableModel extends AbstractTableModel {
private List<Operation> operations;
public BankTableModel(Bank bank) {
operations = bank.getOperations();
bank.addOperationEventListener(...);
}
public Object getValueAt(int row, int column) {
return operations.get(row)...
}
}这方面的问题是,RMI没有为服务器提供与客户端对话的机制,因此服务器和客户端都需要成为RMI端点。见RMI Events。
2) RMI的全部要点是获得驻留在服务器上的远程对象的存根。存根允许您调用远程对象上的方法,就好像该对象是本地的一样。不要担心这个级别的安全性,尤其是在学术环境中。
我将摆脱会话对象,直接返回Bank对象。如果要将所有调用转发给Bank对象,那么您实际上只是想直接与Bank对象交互。在一个更复杂的系统中,您可能有合理的理由添加代理或外观层,但在这种情况下,我会保持简单。
3) GUI和Server应该是两个不同的对象。GUI是您的客户端,服务器端应该没有GUI代码。
https://stackoverflow.com/questions/13686681
复制相似问题