为什么微软不给C#中的TcpClient和UdpClient提供抽象层?

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:28:23
TcpClient和UdpClient有诸多相似的借口,如果提供一个抽象层,可以很好的将具体协议向调用者隐藏。为什么微软不这样做呢?

不写抽象层,意味着这两种协议的不同。虽然实现的方式相同,但是具体的部分还是各有差距。

抽象,在于将具体事务抽象化。但并不一定所有一类事务都必须抽象,想2楼说的,有些东西抽象出来反而就不好用。

再有一点,就是拓展,你是抽象到一个层里面去拓展方便,还是不同的抽象层里拓展方便呢?有可能有一天tcp有100中拓展,udp有200中拓展,那么他们还共用以前的那个抽象层的意义就已经微乎其微了。

所以,具体事务具体考虑而已,不用太那样斤斤计较微软的设计。从实用角度上,我们的目的是使用,只要符合我们的使用习惯,用起来方便快捷,他怎么设计都可以。从学习角度上说,我们应当更专注于微软这样设计的好处和优点,而不是从理论的角度去批驳他,毕竟微软已经这这么多年来的软件巨头了,这不是没有道理的。

微软就是微软,循规蹈距

因为这些需要各种的具体设置和操作,现在已经是很抽象的了,还怎么再抽象?如果改成某些设定好的具体参数,那么很多地方使用起来反而不方便。

协议不用隐藏,因为这是这些协议都是公开的,并且协议不是微软的,而是W3C(或者其他组织)的。而且在实际应用中,LZ可能觉得没必要的一些可以默认执行的协议选择部分,恰恰是别人用得着的部分。
不能说微软做的就是最好的,至少微软工程师不是傻子,这样做也是为了考虑大部分用户。
LZ你如果用不着管协议,换句话说你希望用默认的实现,那你自己可以封装类啊