2011-07-13 7 views
0

TcpListenerクラスを使用してAsync TCP Serverを実装しました。 (非同期は、非ブロッキングであることを意味します)。複数のクライアント接続を受け入れ、データを読み込み、コールバックを提供します。サーバによって受信されるメッセージは基本的に解析される必要があるコマンドであり、データストレージ構造上でアクションをとる必要があります。データベースへのインタフェース非同期サーバーで使用するデザインパターンはどれですか?

Class MyTcpServer (with ReadCallback) 

、このサーバーを呼び出すとストレージ構造は(追加、削除、検索方法で)

Class MyDatabaseとしてパッケージ化されています。

これはマルチスレッドアプリケーションであり、このデータベースは最終的にシステムの残りの部分にも公開されます。

MyTcpServerとMyDatabaseのインターフェイスにどのような設計アプローチをとらなければならないのですか?

Class MsgProcessorというシングルトンを作成してください。このクラスには、受信メッセージを処理し、データをMyDatabaseに操作するメソッドがあります。これらのメソッドは、任意のReadCallback()で呼び出すことができますMyTcpServer

または 良いパターンがありますか?

答えて

0

MyDatabaseおよびMyTcpServerインスタンスを保持し、その読み取りコールバックに登録されているMessageHandlerクラスが必要です。

さらに、MessageHandlerは、管理された方法でアクションを呼び出すための何らかの種類のキューまたはプールメカニズムを実装する必要があります。

次に、読み込みコールバックが呼び出されるたびに、MessageHandlerが解析してキューに格納し、後で処理します。

ここではシングルトンは必要ありません。

0

このような状況でCommand Patternを使用することに興味があると思います。

免責事項:これは、問題の声明を読み、私のロッカーから完全にはずれていないことを確認するための非常に短いwiki検索を行った後、私の頭の上から来たものです。

関連する問題