“.NET 4.0网络开发入门之旅系列文章”开篇语—— 无网不胜(上)
“ .NET 4.0 网络开发入门之旅系列文章”开篇语
无网不胜(上)
1 引子
作为一名高校计算机专业教师,我接触到大量的学生,也经常收到其他高校学生以及许多 .NET 初学者的邮件,询问各式各样的问题。
- .NET 应该怎样学?
- .NET 能写什么样的程序?
- .NET 程序员是不是工资低?
- ……
前几天我在博客园 网站上看到了一篇刚工作没几年的程序员写的《 .net , 哥已心灰意冷 》 ,这篇博文引来跟帖无数。
我研究 .NET 有年头了,还不断地发现新的东西,深感 .NET 能做的东西太多了,奇怪怎会有人形成“ .NET 只能做些 CRUD 之类 MIS 系统”这种观点?
注:
CRUD指“Create、Read、Update、Delete”这四种基本数据操作,我个人认为将其意译为四个汉字“增删改查”最贴切。
所以,我想写些文字介绍 “ CRUD ”数据库应用程序之外的另一个非常重要的应用领域——网络应用程序开发。
前段时间 360 与 QQ 将整个中国互联网拖入一场混战,此处不对这场 3Q 大战的是是非非做评论,引起我们关注的是 QQ 之类即时通讯工具本质上是一种网络客户端软件,在功能强大的服务器的配合下(其实 360 系列软件也离不开其部署于互联网上的服务器),这些网络客户端软件给我们生活带来了巨大的影响,想想看,现在有多少人离得开 QQ ?而 360 系列软件的装机量不也上亿了吗?
软件技术的主战场早已由上个世纪的 PC 移到了互联网,而我们即将迈入的 21 世纪的第 2 个十年,移动互联网将是竞争最激烈的战场,想想苹果 iPhone4 的火爆,想想微软今年隆重推出的 Windows Phone 7 ,想想 Google 的 Android ,这些 IT 巨头们无不对移动互联网这一块“大肥肉”“虎视眈眈”。
很明显,现在已经是“无网不胜”的时代。
有人可能会说: QQ 好象不是 .NET 写的吧?
那我反问一句:你的意思是不是用 .NET 就写不出 QQ 这类软件啦?
的确,现在用 .NET 写一个 QQ 可能没有人用,因为要超过腾讯现有的 QQ 实在不容易, 毕竟QQ 历经多年的持续完善与升级,更关键的是它已经拥有了“粘性极强”的庞大用户群。
但使用 .NET 开发出的“ QQ ”能不能做到象腾讯那样的成功是一回事,使用 .NET 能不能写出同样的功能的程序是另一回事,仅由几个软件产品或应用的优劣成败而对整个软件运行平台做出判断是不能让人信服的。
另外,微软已经明确, Windows Phone 7 应用程序的开发平台就是 Silverlight ,虽然 Silverlight 运行环境完全独立于标准的 .NET CLR (这就是说,只要安装有 Silverlight 插件就可以跑 Silverlight 应用,手机并不要求安装 .NET Framework ),但 Silverlight 脱胎于 .NET ,从开发者角度来看,开发 Silverlight 手机应用程序,除了可用的 API 与功能少一点,与传统的 .NET 应用程序开发方式几乎完全一样。我从没有看到有人认为 Silverlight 不属于 .NET 技术家族。
大多数软件开发者其实都意识到了掌握开发网络应用技术的重要性,然而,对于初学者(尤其是在校的大学生)而言,面对着日新月异的网络开发技术,无不陷入“眼花缭乱”的困境(其实我也一样的)。
我这人没别的爱好,就喜欢钻研软件技术,而且喜欢以写书或技术文章的方式将自己掌握的技术介绍给读者,于是就有了这些年来我的 6 本有关 .NET 软件开发技术的书,同时还有个人博客上发表了的近 200 篇技术文章。
我一直有一个想法,就是能写作一系列的技术书籍和文章,帮助读者构建出一个比较完整的 .NET 技术体系。
事实证明,这是一个很艰巨的任务(我从 2008 年起追踪 .NET 4.0 ,又花了一年的时间才写完《 .NET 4.0 面向对象编程漫谈》,而这仅仅只是这个任务的一小部分,整个任务的完成看上去遥遥无期,我就干脆不去想它了)。
完成了《 .NET 4.0 面向对象编程漫谈》的写作之后,我认为已经帮助读者搭建了一个开发 .NET 应用软件的坚实基础,下一步应该在此基础之上,引导读者探索更为精彩也更为实用的新领域。
鉴于前述网络开发技术的极端重要性,本系列文章中我尝试向读者介绍 .NET 分布式软件系统开发技术,开始想直接介绍 WCF4 ,但后来我发现, WCF 实在太庞大了,一时还真不知道该以何种方式将这一复杂的技术展示给读者(我编写过一个 PPT 教案《 WCF 概述 》 ,放在 CSDN 频道上,似乎比较受欢迎,下载量上千),而且博客园中的 WCF 大牛——蒋金楠 已经写了一本《 WCF 技术剖析》,而且在他的博客上有非常精彩的 WCF 系列文章,我就不再“班门弄斧”了(虽然我以后肯定会写一些针对初学者的 WCF 文章)。
我选择的切入点是“ .NET 套接字( Socket )”编程,与 WCF/Silverlight 等这种“流行”与“时髦”的技术不一样, .NET 套接字编程似乎“落伍”了、“老掉牙”了,但以我到一些企业培训所了解到的情况,我发现这个“老掉牙”的技术其实是 .NET 中真正得到实际应用的技术之一,即使 WCF 出来了, Socket 编程仍然有其实际意义,在不少场合,使用 Socket 这种封装很少的组件开发网络应用程序,比使用 WCF 那个庞大而复杂的框架,更有实用意义。
对于尝试掌握网络应用程序开发技术的初学者而言,再没有比 Socket 更合适的切入点了。另外,掌握好 Socket 编程,对真正理解和用好 WCF ,以及探索无线网络开发技术(比如开发跑在手机上的无线应用),绝对是有很大的帮助。
所以,我打算写一系列的有关 .NET 套接字编程的文章,到底写多少篇我也不知道,粗粗想了一下,至少会涉及:
( 1 )理解 Socket 、 TCP 、 UDP 等概念的含义与相关的网络原理
( 2 )使用 TCP/UDP 在计算机网络中传送数据
( 3 )了解开发网络应用程序的特点与难点
有时间,有精力,有兴趣就多写一点,否则,就少写一点。
很奇怪,我发现国内中文技术书籍和文章中,有关 .NET 套接字编程的内容不多(另一个类似例子是 .NET 的多线程开发,如此重要的技术,比较全面与成系统的文章与资料也不多,所以我在《 .NET 4.0 面向对象编程漫谈》应用篇中用了 100 多页的篇幅介绍多线程,大家很快就会看到这些技术在网络开发中的应用了),希望我的这些文章能弥补一下。
这系列的文章包容许多例子,我初步计划会编写一些典型的局域网示例程序:比如支持多用户上传与下载文件的文件服务器,具备在多台计算机上同步显示图片的“网络幻灯片”等。
另外,由于网络开发技术涉及到的东西既深且广,而本人于此领域技术积累不多,因此,文章中存在的错误可能不少,敬请有这方面实际开发经验的朋友回贴指正,我写这些文章是希望能让读者体会到网络世界的精彩与有趣,起一个“抛砖引玉”的作用,大家共同学习,共同进步。
2 作好学习的知识准备
网络开发涉及到相当广泛的知识,要想顺利地掌握网络开发的技术,读者必须掌握好以下的知识:
( 1 )找一本《计算机网络》大学教材,了解计算机网络的相关原理,推荐潘爱民译的《计算机网络》(图1),你需要重点看看其中有关 TCP/IP 的部分,但并不需要弄清楚其中的每个细节。
图 1
( 2 )我写的《 .NET 4.0 面向对象编程漫谈 》(图2)
图 2
.NET 是一个全面向对象的软件平台,没有面向对象基础,不要谈开发 .NET 网络应用程序。如果你还没有掌握 C# 编程语言,我这儿有一个精简版的入门教程《 C# 编程语言与面向对象基础教程 》可供下载阅读,这个教程放在 CSDN 下载频道,已经有近 1500 名网友下载了,看来还是很受大家欢迎的。 :)
看完它,再看《 .NET 4.0 面向对象编程漫谈》就不太难了(当然还是有难度的,我的这本书不是写给初学者看的,要有心理准备)。
由于有纸面书做基础,本系列文章就将重点放在介绍网络开发上,不再重复介绍同样的内容。文章中会以“交叉链接”的方式点出相关技术点在书中的哪些章节有详细介绍,读者必须通过参看书的章节弄明白相关的技术。
附《.NET4.0面向对象编程漫谈》豆瓣链接:http://book.douban.com/subject/5319799/