.NET简谈网络系统大局观

简介: 我们都知道软件发展经历了很长一段路程,在软件刚刚起步的时候,有一批世界顶尖的科学家用自己整个的人生为我们创造了今天美好的信息世界,我印象最深的是我看过一本书,书名是《优雅人生》是专门介绍一位伟大的女性IT工作者,她是一位传奇人物,她是编译器的先驱,在她晚年的时候都拼命在一线开发环境中肩负着整个美国的...

我们都知道软件发展经历了很长一段路程,在软件刚刚起步的时候,有一批世界顶尖的科学家用自己整个的人生为我们创造了今天美好的信息世界,我印象最深的是我看过一本书,书名是《优雅人生》是专门介绍一位伟大的女性IT工作者,她是一位传奇人物,她是编译器的先驱,在她晚年的时候都拼命在一线开发环境中肩负着整个美国的IT重任,这位女性就是,格雷斯-霍珀;值得我们去敬仰,去学习;我为什么要讲上面的一段话呢,其实这源自于本人对技术强烈的欲望和兴趣,尤其崇拜那些传奇人物;在我们现在的软件开发人员中很大一部分人没有兴趣去关心那些历史,那些过去很老的技术,很麻烦的操作过程;有没有必要那就要看每个人的理解了;我们大部分的开发人员都是做应用层开发,也很少接触底层技术,什么编译器、动态链接等等复杂枯燥的东西;在我看来,尽管我们在日常开发中不需要去关心那些底层的技术,但是那些技术跟我们日常开发息息相关,比如编译报错、动态链接内存分配、PE文件符号重定位,都是我们需要了解的东西;不错,可能有又很多人不赞成这种观点,熟话说得好,苏业有专攻;凡事都是相对的,我们拿园子的前辈来说,他们都是精于某个领域,都是不断的挖掘底层的实现,这些内容在书上是更本找不到的,比如袁永福袁老师他在图形软件领域已经摸索了很久,对底层操作系统的消息、事件等等,对底层都是很了解的;这样的前辈数不胜数,他们都有一个共同特点,就是专研实现背后的实现,知其然而知其所以然;偶尔跟一些同僚朋友聊天,他们对软件开发的理解很简单,无非就是上网搜一堆别人封装好的控件或者DLL,然后自己捣鼓捣鼓,拼成一个界面看起很完美,后台一片杂乱无章的软件;
唠叨了这么多,就是希望能将自己的这份热情去感染很多的人,朋友不要浮于表面,一定要沉,沉的越深越好;本人在思考一片有关程序员修炼之道的文章,这篇文章需要我们站在一定的高度看技术,把技术比喻成金字塔,倒立的金字塔,我们要向下走,越走越宽松,本人近期将出搞,供大家学习;

好了我们进入今天要讲的主题,".NET简谈网络系统大局观",我所有的技术性的文章都围绕着微软的.NET领域,所以我的文章都会以.NET作为前缀,让客友们能清楚的知道这篇文章是那个技术领域的;所谓网络系统,可能又有很大一部分人觉得那不就是ASP.NET之类的B/S系统吗,其实不是,它跟具体的软件应用模式没多大关系,不是我们所谓的C/S或B/S,而是我们所有通讯系统的根基,了解网络的朋友可能就很清楚了,不管什么软件模式、软件架构如果要实现通讯都必须经过底层的通讯系统来传输消息,我们所谓的B/S系统是站在一个应用协议角度去看的,HTTP、FTP等等都属于应用层协议,这些应用层协议本身是不能够进行网络传输的,必须向下传递直到网络层,然后通过网络协议如:TCP、UDP等等将其上层协议包装起来在进行向下传递至链路层然后进行传输,当然我讲的简单了,能说明原理就行了;看过OSI模型的朋友可能就知道我说的是什么意思了,我们来看一张图:[王清培版权所有,转载请给出署名]
1:

img_fdad1fa7ebe54bf9a3b74981c62bfcee.jpg

这幅图大致的给出了消息传递的流程,我们就拿B/S系统来说吧,我们的HTTP应用层协议向下传递至表示层,表示的作用大概是将我们上层的消息进行必要的编码、加密;继续向下传递至会话层,会话层的功能大概是添加必要的会话信息,比如我们在通讯过程中可能由于网络故障网络长时间没有响应,这时候我们可以通过这部分消息进行判断当前会话的情况是否中断,中断后消息从何处重新发送;我就讲两个层面了,如果有兴趣的朋友可以自己参考相关文档,说的比我专业详细,我只是简单的帮助初学者了解这部分内容;最终消息通过Internet传输到IP所指定的对方机器中,这个时候我们就涉及到了网络通讯中的关键部分端口,很多人对端口的概念不是很理解,很多大型软件都有端口的设置,比如我们的SQLSERVER数据库就有1433端口,其实端口的概念就好比我们把IP比喻成一栋大楼,端口就好比我们大楼的房间,我们的PC机有很多应用程序,如:HTTP、FTP等等包括我们自定定义的一些列协议,这些协议是针对某些应用程序存在而有效的,如HTTP协议离开了浏览器,它的存在可能没有多大意义了,我们不可能让用户对着一堆乱七八糟的HTML吧,所以我们要用端口进行区分,应用程序用端口进行侦听网络上的消息,端口是依附于具体的应用程序的;请看图:[王清培版权所有,转载请给出署名]
2:

img_8411280db91c7266359f11f48e3170a9.jpg 

这幅图是一个程序流程图,可能还不是不够清晰的说明我们上面比喻的例子;我们来一幅更能说明问题的图:

3:

img_8c135c95435df0a323a9578c2806bc6f.jpg

图3应该能很清楚的说明我们上面的问题了,打个比方有一个送快递的将包裹送到我们前台接待那里,然后前台接待人再看包裹的收货人是谁是哪个部门的,在将包裹送到部门中去;这样就完成了包裹的整个邮递过程;我们的消息也是一样的,必须明确知道消息的端口是什么,这样我们的“消息总闸”才能知道这个消息是正确并且是安全的,不是黑客来探访的;我们用.NET开发网路系统时,首先我们要定义我们应用程序要使用的接口,然后要传输的消息;我们开发一个服务器端和一个客户端,在服务器端,发送消息的时候,客户端要在消息到来之前进行端口侦听;

基本的网络系统结构就讲完了,希望对一些初学者来说能有帮助,谢谢;[王清培版权所有,转载请给出署名]

目录
相关文章
|
4月前
|
开发框架 算法 Java
.NET 开发:实现高效能的秘诀
【7月更文挑战第4天】探索.NET高效开发涉及理解运行时(如GC、JIT)、代码与算法优化及工具利用。关键点包括适应性垃圾回收、异步编程、明智的并发控制;编写高效代码(避免对象创建,选对数据结构和算法);使用性能分析工具,善用高性能框架如ASP.NET Core,并借助云服务和CI/CD流程持续优化。性能优化是持续学习与实践的过程。
43 1
|
3月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
52 5
|
开发工具 数据库 C++
0001net程序设计-net大学校园二手交易平台2
0001net程序设计-net大学校园二手交易平台
60 0
|
SQL 数据库 数据安全/隐私保护
0001net程序设计-net大学校园二手交易平台1
0001net程序设计-net大学校园二手交易平台
52 0
|
Windows API
.Net程序开发中一个较为隐蔽的GDI泄露探析
最近一直在调试第三方委托开发的医疗输液系统(我接手时,代码已经完成,原则上我只修改接口部分以适应我们的硬件即可,不过调试过程中,该程序本身问题暴露不少),该系统用VB.net开发,该软件的图形界面是花费n多银子专门做的美工,大量的贴图,就是目前的主流PC机配置,也很难在调试模式下走顺溜
1149 0
Silverlight杂记-本地程“.NET研究”序间的互通
  只要使用到两个类一个用来发送一个用来接收。可以有多个发送端,但只能有一个接收端。   来段demo public partial class localcoon : UserControl {       public localcoon() {           InitializeC...
1116 0
|
缓存 .NET 数据库
一起谈.NET技术,构建高性能ASP.NET站点之三 细节决定成败
  前言:曾经就因为一个小小的疏忽,从而导致了服务器崩溃了,后来才发现:原来就是因为一个循环而导致的,所以,对“注意细节“这一说法是深有感触。   问题的描述   首先,描述一下故事的背景:(希望大家耐心的故事读完)   在网站中,网页中的分页控件每次显示10条数据,每次点击下一页,就再次去取下一个10条数据。
947 0
|
架构师 测试技术 开发者
一起谈.NET技术,你是个软件架构师吗?
  开发和架构的界限难以捉摸。有些人告诉你它根本不存在,架构只是开发者们所做的设计过程的简单扩展。 另外一些人认为这是一个鸿沟,它只能由那些做到高度抽象,而且不会陷入实现细节的开发者才能跨越。通常,在这两个极端的观点中间某处有个可操作的平衡点;不论如何,怎么从开发转换为架构师都是个有趣的问题。
1122 0
|
Web App开发 Windows
你应该知道“.NET研究”的15个Silverlight诀窍
  我热爱Silverlight,并且身体力行写了很多Silverlight程序,也讨论了很多关于Silverlight的技术。对于刚刚接触Silverlight的开发人员来说,这篇文章是最适合你的。这篇文章列出了我使用Silverlight进行开发后,发现的15条小诀窍。
1009 0
|
.NET Java Python
一起谈.NET技术,谈谈微软技术,以及对待技术应有的态度
  昨晚在家上网,看看微软研究院TechFest 2010的消息,逛逛Channel 9,瞅瞅DevLabs里的项目,以及F#与Reactive Framework之类东西。然而,我一边对那些有趣而奇妙的技术感叹不已,同时却又产生出一种忿忿之情。
979 0
下一篇
无影云桌面