我想学习网络编程,在《C#简而言之》中有一个名为“networking”的章节,该章节包含'WebClient'、'HttpClient'、'FTP'、'TCP'等。但是有人跟我说要学WCF,我想知道WCF和c#网络编程有什么关系,我记得我在某个地方看到过WCF封装了网络编程,更灵活方便,但效率不高。这是否意味着它们之间的关系就像ado.net技术与orm?我应该学习哪个,网络编程还是WCF?c#网络编程是一种过时的技术吗?
谢谢
我想学习网络编程,在《C#简而言之》中有一个名为“networking”的章节,该章节包含'WebClient'、'HttpClient'、'FTP'、'TCP'等。但是有人跟我说要学WCF,我想知道WCF和c#网络编程有什么关系,我记得我在某个地方看到过WCF封装了网络编程,更灵活方便,但效率不高。这是否意味着它们之间的关系就像ado.net技术与orm?我应该学习哪个,网络编程还是WCF?c#网络编程是一种过时的技术吗?
谢谢
“网络编程”通常指的是套接字,这是网络通信的最低级别,处理网络上的推送字节 - 所有其他通信系统都建立在套接字之上。
大多数项目不直接使用套接字,因为您可以使用简单的高级系统,但我认为学习基础知识仍然值得,因为它并不复杂,它会帮助您处理那些高级系统中的问题。
下一个级别是 WebClient 和朋友,它们是相对简单的类,它们在套接字之上实现通信协议(例如 HTTP)。
绝对值得您花时间学习如何使用它们,因为它们简单且非常有用(例如,如果您想从 Internet 中提取文件或与 3rd 方服务通信)。
在您拥有 WCF 的最高级别上,这是一个广泛的(在我个人看来过于复杂和过度设计)的框架,它为您提供基于外部网络的服务的类接口,同时尝试(不成功)隐藏所有通信细节.
WCF 在大组织和“企业系统”中非常流行,因此,如果你想找到一份为大组织开发企业系统的工作,学习 WCF 是一个非常聪明的职业选择。
所以,我的建议是,从套接字开始,只学习基础知识——这将帮助你了解事情是如何在幕后工作的(当你必须调试网络问题时,这将变得非常有用)。
比继续学习更高级别的课程,编写一个简单的程序,使用 WebClient 从 Internet 读取页面,这样您就可以熟悉这个概念,不要为所有高级选项而烦恼,它们就在那里,您可以查找它们稍后当您需要它们时。
只学习套接字和 WebClient 的基础知识应该只需要几个小时,然后(如果你想在大型系统上工作)学习如何使用 WCF。
然后,您将获得简历所需的 WCF 知识,并且您将知道如何在不需要时使用庞大的框架,通过几行代码通过 Internet 获取一些东西。
如果您想学习网络编程,您将需要阅读有关套接字和 TCP/IP 的内容(如果您想流式传输或更小的数据包,请稍后阅读 UDP)。套接字是大多数操作系统用来处理 TCP/IP 等协议的 API。
你的比较是对的。WCF 是 .NET 网络层之上的框架。正如 ORM 是 ADO.NET 之上的框架一样。
WCF 不是所谓的网络编程。它们是具有某种关系的两个概念。
通常网络编程意味着套接字编程和TCP/IP。您应该熟悉协议,例如 HTTP、FTP、SNMP 等。然后,您可以编写充当协议服务器和客户端的程序。网络编程仍然很热门,尽管它不再那么流行。
WCF 是一个 Web 服务框架,它只是 HTTP(主要是 SOAP)。
如果可能的话,你应该两者都学,或者至少两者都知道。