Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-UDPClient和套接字之间的关系_C#_Design Patterns_Networking - Fatal编程技术网

C#-UDPClient和套接字之间的关系

C#-UDPClient和套接字之间的关系,c#,design-patterns,networking,C#,Design Patterns,Networking,C#中的Socket和UdpClient类是什么关系 这种关系可以用一种设计模式来描述吗?UdpClient只是一个方便的类,它使使用套接字变得更容易。UdpClient是使用UDProtocol的套接字的包装器。它类似于TCPClient,它所做的只是提供另一层抽象,使网络编程变得更加容易 更新: 此外,我从未真正理解为什么有些人更喜欢UDPClient和TCPClient而不是使用基本套接字类。它可以给你一个在.NET中学习网络编程的充分的开始,而不会有太多的痛苦,但是我觉得你拥有的抽象层越

C#中的Socket和UdpClient类是什么关系


这种关系可以用一种设计模式来描述吗?

UdpClient
只是一个方便的类,它使使用套接字变得更容易。

UdpClient是使用UDProtocol的套接字的包装器。它类似于TCPClient,它所做的只是提供另一层抽象,使网络编程变得更加容易

更新:

此外,我从未真正理解为什么有些人更喜欢UDPClient和TCPClient而不是使用基本套接字类。它可以给你一个在.NET中学习网络编程的充分的开始,而不会有太多的痛苦,但是我觉得你拥有的抽象层越多,你就越不了解幕后发生的事情。我觉得从长远来看,这会使调试代码中复杂或奇怪的行为问题变得更加困难,因为发生的很多事情都是隐藏的,因为您的抽象层次很高。甚至.NETSocket类也是一个抽象层,它是一个本地(伯克利Socket接口)套接字的包装器,我从来没有真正感觉到在本地C++中的网络编程也很困难。 尽管如此,如果您遵循标准、指南并编写高质量代码,您可能根本不会遇到任何问题(除了环境和环境问题),但我始终建议您学习基本套接字类,以便更好地理解.NET网络。我想这一切都取决于你对学习框架和成为这方面专家的兴趣有多深


总之,根据您的需求和必要性,任何一种方法都是可以的,但我始终建议您在任何一天都要学习而不是抽象。

根据danderson的回答,这听起来不错

facade可以:使软件库更易于使用、理解和测试,因为facade具有用于常见任务的方便方法