2012-01-09 4 views
3

Nettyを使用してサーバーに接続するデスクトップクライアント(基本クライアント/サーバーのセットアップ)があります。クライアントはCRUDだけでなく、複雑なビジネスロジックを行うために多くのオブジェクト(POJO)を持っています。なぜなら、私はクライアントがデータベースに直接話すことができないからです。また、私はすべてのSQLロジックをクライアントに配置したくありません。Netty - たくさんのPOJOを持つデスクトップアプリケーション用のクライアント/サーバーのアーキテクチャに最適な方法

だから、例えば私が持っている:

boolean RaceTrackDAO.saveTrack(Track track); 
int RaceTrackDAO.getFastestLapTime(Track track); 
Driver[] RaceTrackDAO.getTopDriversForTrack(int trackID) 
... 

boolean DriverDAO.saveDriver(Driver driver); 
bollean DriverDAO.updateDriver(Driver driver); 
Driver[] DriverDAO.getTopTenDrivers(Driver driver); 
... 

などを...クライアントで

は、私が持っている:

someUICode() 
{ 
    ... 
    Driver[] topTenDrivers = DriverDAO.getTopTenDrivers(); 
    ... 
} 

を質問はIアーキテクチャ/実装行う方法ですクライアント/サーバーシステムでNetDAtyを使用するためのDriverDAOレイヤー?

私はyou can send POJO's through the Channelを理解していますが、ドキュメンテーションはPOJOの1つのタイプの送信について実際に話しています。私はいくつかの調査をして、すべての種類のオプションがあることを知りました。面白く見えるコマンドと状態のパターンがあります。

私にとって重要なのは、可能な限り定型的なコーディングを避けることです。 Nettyにはシリアル化によってPOJOのマーシャリングとアンマーシャリングを行うためのツールが組み込まれていることはわかっています。それは簡単な部分です。私は百万のif文ですべての可能なpojo(そしてどのバックエンド呼び出しを作るかを知る)に対処するために立ち往生したくありません。

私にとっての鍵は、全体を非常に保守的に保つことです。パフォーマンスは良いですが、システムは一度に何千もの接続を処理する必要がないので、少し余裕があります。

DAOレイヤでNettyを使用するようなシステムを設計するには、何が最善のアーキテクチャですか?

+0

上記以外の理由により、RMIは最適ではありません –

答えて

2

簡単にするには、RMI(?)を使用するか、Nettyでオブジェクトをシリアル化します。そうすれば、すべての可能なオブジェクトを処理する必要はありません。

+0

RMI以外の提案はありますか?RMI以外の提案はありますか?理由。 –

+0

nettyを使用してリモートメソッド呼び出しを実装すると、引数を指定してメソッドを呼び出すことができます。 –

+0

どうやってそれをしますか?チュートリアル、リソース、読書資料、例など。私はこのことについて何かを見つけることができませんでした。 –

関連する問題