Форматирование и отправка клиентских сообщений, использование классов xxxService - PullRequest
0 голосов
/ 21 июня 2011

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

Ряд (идентичных) клиентских приложений подключаются к этой программе через сокет TcpClient. Различные типы сообщений должны быть отправлены из нескольких разных классов. Должен ли я вызывать класс обслуживания со статическими методами всякий раз, когда мне нужно отправить какое-то сообщение (как показано в приведенном ниже коде), или мне лучше вызвать событие и зарегистрировать некоторый класс для этих событий, который будет форматировать и отправлять сообщения. Это было бы более бесполезным, так что, может быть, это лучшая идея?

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

Хотелось бы услышать несколько советов по этому поводу. И если мое последнее предложение имеет смысл, как можно назвать такой класс, и будет ли он рассматриваться как класс ..Service? Просто чтобы дать мне лучшее понимание.

ура!

Пример: (код немного "грубый")

Class UserConnection 
   tcpClient As TcpClient

   Public Sub SendMsg(msg as String)
      ' Sending by tcpClient
   End Sub
End Class

Class UserAccount 
   userData as UserData
   conn As UserConnection
   balance as Decimal 

   Public Sub UpdateAccount(newBalance as Decimal)
       ' perform some logic
       Dim history as new AccountHistory(me.Balance, ......, ....) 
       UserMessageFormatSendService(history)
   End Sub
End Class          

Class UserMessageFormatAndSendService()
   Public Shared SendAccountUpdate(user as UserAccount, accountHistory as AccountHistory)
      ' Some code formatting it into a string message
      Dim msg = .......

      user.Conn.SendMsg(msg)
End Class

1 Ответ

0 голосов
/ 21 июня 2011

UserMessageFormatAndSendService должен реализовывать интерфейс вашего сервиса скажем, IUserMessageService - так вы можете протестировать его и / или заменить функциональность при необходимости

Сам класс (UserMessageFormatAndSendService) не является «Службой», это прокси для реальной службы, поэтому вы можете назвать его UserMessageServiceAgent .

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