C # - связь между UDPClient и сокетом - PullRequest
9 голосов
/ 07 июля 2011

в каком отношении находятся классы Socket и UdpClient в C #?

Может ли отношение быть описано одним из шаблонов проектирования?

Ответы [ 3 ]

19 голосов
/ 07 июля 2011

UdpClient - это оболочка вокруг сокета, использующая UDProtocol.Он похож на TCPClient, все, что он делает, это предоставляет еще один уровень абстракции, чтобы сделать сетевое программирование намного проще.

Обновление:

Кроме того, я никогда не понимал, почему некоторые люди предпочитают UDPClient иTCPClient через базовый класс сокета.Это может дать вам хорошее начало для изучения сетевого программирования в .NET без особых проблем, но я чувствую, что чем больше у вас абстракций, тем меньше вы будете понимать, что происходит внутри.Я чувствую, что в конечном итоге это усложняет отладку сложных или странных поведенческих проблем в вашем коде, потому что многое из того, что происходит, скрыто от вас, потому что вы на нескольких уровнях высоко абстрагированы.Даже класс .NET Socket является слоем абстракции, поскольку является оберткой вокруг нативного сокета (Berkeley Sockets Interface), и я никогда не чувствовал, что сетевое программирование на нативном C ++, например, также было бы таким сложным.

Хотя, если вы следуете стандартам, рекомендациям и пишете высококачественный код, у вас могут не возникнуть никаких проблем (за исключением экологических и косвенных проблем), но я всегда рекомендую изучить базовый класс Socket, чтобы вы лучше понимали работу сетей .NET.Полагаю, все зависит от того, насколько вы заинтересованы в изучении фреймворка и становлении экспертом по этому предмету.

Вкратце, в любом случае, как правило, все в порядке, исходя из ваших требований и необходимости, но я всегда рекомендую учитьсянад абстракцией в любой день.

6 голосов
/ 07 июля 2011

Судя по ответу Дандерсона, он звучит немного похоже на паттерн Фасад .

Фасад может: сделать библиотеку программного обеспечения проще в использовании, понимании и тестировании, поскольку фасад имеет удобные методы для общих задач;

2 голосов
/ 07 июля 2011

UdpClient - это просто удобный класс, который облегчает работу с сокетами.

...