.NET 网络编程
 
    最近第一次用C#做了一个网络通信相关的项目,用到TcpListenerTcpClientNetStream.Net框架提供的类。感觉到好用的同时也有了了解它们实现的冲动。经过一番调查了得出了如下的类图。在加深了解的同时也可以感受其设计的美。

 
 
 
    宽接口窄接口,这是设计当中经常会遇到的一个选择。宽接口通常能够让一个类功能强大,但有时容易失去真正的关注点从而破坏了“单一职责原则”。窄接口则比较容易确保对某一特定点的关注。设计中经常可以配合着使用它们,这点很像铺设自来水管道。管路最初阶段可能从需求和效率考虑需要大口径的,但要入户的时候就要转成小口径。做设计也是这样,在图中较底层的Socket类提供的就是一个宽接口,而TcpListenerTcpClientNetStream则是针对服务器、客户端和流对Socket进行了一次适配后成为了窄接口。用户可以根据需要自主选择宽接口和窄接口。没有特殊要求的时候,较之Socket,使用TcpListenerTcpClient就更方便,更不容易用错。