Какой шаблон проектирования использовать в интерфейсе Async Server для базы данных? - PullRequest
0 голосов
/ 14 июля 2011

Я реализовал Async TCP Server, используя класс TcpListener. (Асинхронный означает, что это не блокирует). Он принимает несколько клиентских подключений, читает данные по мере поступления и обеспечивает обратный вызов Сообщения, которые принимаются сервером, по сути являются командами, которые необходимо проанализировать, и необходимо предпринять действия со структурами хранения данных. Позволяет называть этот сервер как,

Class MyTcpServer (with ReadCallback)

и структуры хранения упакованы как

Class MyDatabase (с добавлением, удалением, методами поиска).

Это многопоточное приложение, и эта база данных в конечном итоге будет доступна и для остальной системы.

Мой вопрос: какой подход к проектированию я должен использовать для взаимодействия MyTcpServer и MyDatabase?

Должен ли я просто создать синглтон под названием Class MsgProcessor. Этот класс будет иметь методы для обработки входящих сообщений и обработки данных в MyDatabase. Эти методы затем могут быть вызваны на любой ReadCallback() на MyTcpServer

Или Есть ли лучший дизайн шаблона?

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

Думаю, вам будет интересно использовать Командный шаблон в такой ситуации.

Отказ от ответственности: Это то, что пришло мне в голову после прочтения вашего заявления о проблемеи сделал очень короткий поиск по вики, чтобы убедиться, что я не совсем сошел с ума.

0 голосов
/ 14 июля 2011

У вас должен быть класс MessageHandler, который содержит экземпляр MyDatabase и MyTcpServer и подписан на обратный вызов чтения.

Кроме того, MessageHandler должен реализовывать некоторый механизм очереди или пула для запуска действий управляемым образом.

Затем, каждый раз, когда вызывается обратный вызов чтения, MessageHandler сначала анализирует и сохраняет его в очереди, а затем обрабатывает.

Здесь не нужен синглтон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...