当前位置:文档之家› 学.Net还是学Java

学.Net还是学Java

学.Net还是学Java
学.Net还是学Java

因为.Net和Java是国内市场占有率最高的两门技术,对于准备学习编程语言的初学者来说,.Net和Java是初学者首先考虑的两门技术,因此很多人一遍遍的问“学.Net还是学Java”,社区中也每天都有“.Net控”在唱衰Java,也有“Java控”在唱衰.Net,一时间硝烟四起,让初学者更加迷惑。

做为一个.Net、Java、Delphi、Python、PHP等语言都进行过有一定复杂度的项目开发的人来说,我对任何一门语言都没有宗教式狂热崇拜,因此我也相对理性的对整个问题进行分析。从北京、广州、上海等地区2010年的就业统计数据(由于没有找到更权威的数据,这些数据是我对主流招聘网站和技术网站的相关数据进行的并不是太严谨的分析)来看,.Net和Java的职位数量比例为2:3,从就业网站和主要技术社区数据来看,2010年.Net和Java的学习人员数量比例为1:3。从数据上看,.Net的职位绝对数量比Java低一些,不过Java学习人员数量比.Net学习人员高出3倍,因此.Net职位的竞争激烈程度低于Java。

由于.Net秉承了微软技术的入门简单的特点,经过短时间的学习就可以掌握拖拉控件的快速开发方式,很多人被.Net的快速开发方式所满足,认为自己“学成了”,不再深入研究,因此人才市场上充斥着很多只会拖控件、而不懂.Net更深入一步技术的.Net开发人员,比如很多https://www.doczj.com/doc/3b5966740.html,的书上都是讲https://www.doczj.com/doc/3b5966740.html,服务端控件,很多所谓“精通https://www.doczj.com/doc/3b5966740.html,”的人连什么是Http、HTML、JavaScript、Dom等基本概念都稀里糊涂,实际公司项目中很多功能点的实现不是简单的拖一个https://www.doczj.com/doc/3b5966740.html,服务端控件就能搞定的,因此看似学习.Net的人非常多,但是真正满足企业要求的人则比较少;而Java则入门门槛比较高,如果想要配置一个Hello World级别的学习环境就会涉及到很多技术,开发环境也要学习者自行配置,对于初学者来说可能花费一周时间都无法配置一个最简单的环境出来,Java的开发环境也不像.Net开发环境那么可用性强,Java和.Net的区别就像Windows和Linux的区别,正因为Java学习门槛非常高,很多学习者被淘汰了下来,这样能够撑过一个个难关学习下来的开发人员都是水平比较高的人员。因此.Net初级开发人员的工资平均是比Java初级开发人员的工资平均略低的。但是由于.Net中高级人才非常缺乏,因此掌握.Net深入技术的开发人员在企业内部是非常吃香的,招聘人员经常发出这样的感叹“招合适的Java工程师能招来一堆,招合适的.Net工程师一个月都招不来几个”。

.Net入门快,在.Net中微软为开发人员提供了一套最佳的技术架构搭配、集成的开发环境,用微软的技术架构开发出的系统就可以保证最好的效果,而不用像Java开发人员那样去学很多开源框架再去学习搭建技术架构、开发环境,因此.Net学习周期比Java短,有了语言基础后再进行集训式的就业班学习,那么.Net学习者学习3个月可以进入就业,Java学习者需要5个月可以进入就业。

微软的本地化推广工作做得非常好,因此学习.Net有大量的中文资料可以参考,因此除非研究很高深的领域,否则中文资料基本能满足开发者的需求;而Java由于走的是高端路线,因此除了初学者资料外,大部分Java资料都是英文的,学习Java需要参考很多英文资料。因此如果英文非常好的学员学习Java就会很轻松,而英文不是很好的学员学习.Net会更好。

综上,Java入门门槛比较高,需要有足够的毅力和百折不挠的精神,只要你能坚持下来你就可以将很多人在入门门槛上就将很多竞争者甩在身后。.Net入门门槛比较低,装上VisualStudio就可以马上进行开发,不需要进行太多的配置、不需要学太多基础知识,这样可以很轻松的掌握入门.Net学习,是有很成就感的事情,能让你有兴趣进一步学习,但是你不能止步于此,因此你会发现身边也有无数的人也是“轻松入门”,你就需要继续深入学习,

深入学习同样需要毅力和探索的精神,你要在这个阶段上把绝大部分竞争者甩在身后,小吹一把:我教的有个学生面试回来说“在咱班里比我感觉我掌握的不是太好,但是和一起参加面试的北大某鸟的学生比我简直就是高手”,呵呵。在我讲“.Net入门简单”的时候,有学生问“.Net把问题都简化了岂不是.Net程序员都不值钱了?”,我的回答是“微软简化的是重复性的东西和低级的东西,这样我们就能从这些低级的工作中脱身出来研究更深入的东西,因此.Net把问题简化了只是使得那些只沉迷于简单的东西的人不值钱了,会使得研究深入的人更值钱”,这就是“.Net入门容易,深入同样难”这句话的意思。有人会问“哪些知识属于深入的知识呢?”,比如你不仅要会用https://www.doczj.com/doc/3b5966740.html,,还要研究https://www.doczj.com/doc/3b5966740.html,架构中的设计模式,再比如你不仅要会拖拉https://www.doczj.com/doc/3b5966740.html,控件,更要明白https://www.doczj.com/doc/3b5966740.html,控件内部发生了什么。这里允许我做一个广告,如果你想从学习一开始就尽快脱离控件型开发人员的行列,你可以跟着视频教程《传智播客.Net视频教程》学习,然后每天登陆博客园等高端.Net社区,你会发现你进步是非常快的。

可能因为我最近都是在讲.Net的课程,对.Net的描述中有或多或少的偏向,但是抛去个人因素考虑,我没有暗示Java好还是.Net好,请根据自己的情况进行选择。而且.Net和Java并不像360和QQ那样必须二者选其一,并不像很多初学者认为的那样“学一门语言就靠这门语言吃一辈子”,工作中很可能这个项目用Java,那个项目用.Net,因此你可以喜欢某个语言,但是不要抱着一门语言不放,更不用担心“Sun被Oracle收购了,Java是不是完了?”、“我学.Net,如果微软没落了我是不是就失业了”之类的问题,不同语言只是不同的工具,换了一个新的工具可以很快的熟悉新的工具,大部分内容都是相通的,比如java中的web开发很熟悉了,转而用https://www.doczj.com/doc/3b5966740.html,也会发现大部分东西都是和JavaWeb一样的,很快就能上手https://www.doczj.com/doc/3b5966740.html,,难道你现在用的是诺基亚手机,你会害怕诺基亚倒台你就不会用手机了吗?“Java 完了、微软死了”这类问题不是开发人员去关心的事情,而是华尔街那些金融大鳄去考虑的问题,咱们只管用技术去赚钱养家就是了。

学了.Net能做什么开发?

上篇文章《学.Net还是学Java?》中我阐述了不同语言学习的不同点,如果你开始决定学习.Net了,那么你的下一个问题很可能是“学了.Net我能做什么?”。

.Net目前主要的开发方向是:Web开发、桌面系统开发、移动开发。

Web开发通俗的说就是开发网站,包括类似于大众点评网等这样的互联网以及OA等内网系统,Web开发是目前.Net开发的主要方向,大部分招

聘.Net的职位都是做Web开发,以我教的传智播客.Net班为例,2010年几个就业班的学员90%以上找到的都是Web开发方向的职位。

?桌面系统一般指的是使用WinForm技术开发Windows软件,比如以Windows软件形式运行的仓库管理系统、图书管理系统等,也就是一般说的C/S开发(不严谨的说法),目前很多公司都有WinForm开发的产品,不过由于大部分公司的产品都开始转向基于Web的版本,WinForm版本都处于维护状态,因此基本不再招聘WinForm版本的新员工。

?移动开发主要指的是手机开发。.Net手机开发目前主要是WindowsMobile 的开发,目前中国大陆地区Windows Mobile开发的工作非常少。微软在

今年(2010年)推出了WindowsPhone7(简称WP7)手机操作系统,微软在WP7手机操作系统的推出上继续采用了微软一贯的“落后半步、后发制人”的战略,微软惯于后发制人,比如当年就曾经用IE干死了曾经领先

一时的Netscape浏览器,再比如.Net更是从先行者Java口中夺下了半

壁江山。因此我个人非常看好WindowsPhone的前景,预计在2011年底

WindowsPhone将会在移动市场上掀起狂澜,对移动开发感兴趣的朋友可

以提前关注一下WindowsPhone的开发。

微软在技术的延续性上做的非常好,无论是Web开发还是WinForm开发还是移动开发,他们采用的技术都是相通、相近的。因为他们都是基于同一个.Net Framework进行开发的,调用的语法、类都是一样的,学习的时候只要学习特有的小部分内容就可以了,比如访问数据库都是https://www.doczj.com/doc/3b5966740.html,、系统间通讯都是WCF。对于想学习.Net抓紧找工作的同学可以先以Web开发方向为主要学习方向,关于Web开发方向要学什么东西、怎么学,我将会在下一篇文章中介绍。

移动开发市场将会越来越大,微软现在推广WindowsPhone的力量非常大,而且商业策略非常厉害,因此我预计在2011年底WindowsPhone将会在移动市场上掀起狂澜,到时候WindowsPhone开发也将会带来非常多的工作机会。

如果对WindowsPhone开发感兴趣,可以在把Web开发掌握熟练后提前做知识储备。因为WindowsPhone界面用Silverlight,可以先学习Web下的Silverlight,这样也不需要安装额外的开发环境,掌握了Silverlight再学WindowsPhone开发就会轻松很多了。

对于移动开发来讲并不是只有手机客户端的开发,还会涉及到服务端的开发,所以https://www.doczj.com/doc/3b5966740.html,、XML、WCF、https://www.doczj.com/doc/3b5966740.html,等服务端编程技术同样需要学习。WindowsPhone 是移动设备操作系统,手机作为一种移动终端,必须与服务器端结合才能发挥巨大的作用。WindowsPhone是为移动互联网时代量身打造的,移动互联网时代的服务模式是“手机终端+互联网络+应用软件”,也就是所谓的“云终端+服务器”。比如开发一个查询公交线路的手机软件,WindowsPhone端只是一个交互和展示页面,具体查询、运算逻辑是放在服务器端的,手机端软件向服务器发出查询请求,服务端进行查询、运算,然后将运算结果返回给手机端软件,由手机端软件进行显示。除去手机单机游戏、短信管理、播放器等完全不需要服务端支持的应用之外,大部分手机应用都是需要服务端支持的,比如邻讯、淘宝手机客户端、金蝶随手记、手机版金山词霸、新浪手机微博等。WindowsPhone只是承载移动终端软件的操作系统,而服务端技术用于开发互联网络应用,所以未来移动互联网时代软件的主流应用模式将是“手机客户端+互联网络应用服务端”,

这种模式要求做移动互联网开发的程序员不但要掌握WindowsPhone这样的手机终端软件技术还要掌握开发互联网络应用的服务器端技术。

.Net应该学什么怎么学(一)

上篇《学了.Net做什么开发》中我讲到了目前.Net开发主要方向是Web开发,因此在本篇中我将主要讲解做Web开发要学哪些东西,怎么学,由于内容比较多,我将分几次发。下图是我推荐的学习内容和学习顺序(除了这里列出的内容,要走向高手之路肯定还有更多技术需要学习,我这里只是对于初学者列出的主干学习内容,并不是全部):

开发者口中的.Net全称是.Net Framework,在中国大陆,一般将.Net读作“道特耐特”(中文音标比英文音标更好读,呵呵)或者“点耐特”。.Net是微软推出的一门技术,它是一个技术平台,基于这个平台进行开发可以简化很多工作。关于到底什么是.Net,不是一两句话能说清楚的,而且也没办法让初学者理解到底什么是.Net,因此你只要记住.Net这个词,随着我们越学越深入,你就会理解.Net到底是什么东西了。

基于.Net平台上有很多语言,比如C#、https://www.doczj.com/doc/3b5966740.html,、IronPython、F#、Powershell 等,F#、Powershell是满足特定用途的语言,IronPython、IronRuby等并没有广泛应用,https://www.doczj.com/doc/3b5966740.html,是仅次于C#的第二大基于.Net的语言,不过按照微软的战略是把主要精力放到C#上,https://www.doczj.com/doc/3b5966740.html,只是微软为了将VB开发人员平滑的转移到.Net 平台下的语言。因此对于语言来说大家学习C#即可。C#在中国大陆的叫法一般是“C sharp(C煞普)”,也有少数人读成“C井”,我不推荐这种叫法。

初学者可能会弄不清C#和.Net的关系,.Net是一个技术平台,而C#是这个技术平台上的一门语言,就像Windows是一个操作系统,而Word、QQ、FireFox则是在Windows上运行的一个程序。初学者不必纠结于这个概念,不是很明白也没关系。

.Net的开发工具是VisualStudio,VisualStudio现在有VisualStudio2005、VisualStudio2008、VisualStudio2010等版本,注意不要纠结于“到底装VisualStudio2005还是VisualStudio2008,听说有的公司还在用

VisualStudio2005”、“到底是用新版本的VisualStudio2010还是用VisualStudio2008”这样的问题,因为这些版本并没有本质的不同,使用方法都类似,就像你会用WindowsXP,换了Windows7以后经过短暂的熟练会用Windows7了一样。因为VisualStudio2010比较消耗资源,如果你的计算机配置较好可以安装VisualStudio2010,如果配置较差则推荐安装VisualStudio2008。

要学习Web开发一定要按照正确的顺序进行学习,很多人被一些《21天精通***》这样的垃圾书的影响,不学C#、不学.Net Framework、不学Dom,直接上来就学https://www.doczj.com/doc/3b5966740.html,,拖两个控件、配两个属性、双击控件写一个事件响应方法,就开始自诩“精通https://www.doczj.com/doc/3b5966740.html,”了,照着书控件拖来拖去,可是连C#、.Net、https://www.doczj.com/doc/3b5966740.html,、HTML、JavaScript之前的关系是什么都不清楚,闹出了很多笑话。欲速则不达,速成的结果就是以后浪费更多的时间,回想这么多年你走过的路,有多少次为了走快点就跳着走,最后又浪费时间返工的事情,按照正确的顺序才能更快、更好的掌握.Net。

有的人可能认为“我不想成为高手,有一口饭吃就行了,会拖控件就行了呗”,千万不要以为会“不拖控件的开发”就是高手了,高手没有那么好当的。我没有奢求学编程的人个个都是以“成为世界顶尖级程序员”、“国内.Net开发者中的知名开发者”为目标,这个也不现实,大部分人学编程只是看做软件开发工资不低,想赚几年钱娶媳妇生娃,这种想法并不是多没出息的想法,毕竟“老婆孩子热炕头”是最朴实的幸福,你不需要背负“振兴中国软件产业”这种的重任,但是最起码应该找到一份不错的工作,工作几年以后能有钱交得起房子首付(对于大部分人来讲,能够交得起首付成为房奴都是很奢侈的事情)、每月供月供吧,如果只会拖控件的话就不是能不能成为高手的问题,而是能不能养家糊口的问题了。

下面来详细讲解学习的各个步骤:

一、C#面向过程编程。

学习C#语言分为C#面向过程编程和C#面向对象基础两部分。听到“C#面向过程编程”有人会问了“C#不是一门面向对象的语言吗,哪儿来的面向过程编程?”,其实面向对象不是代替面向过程的,面向对象是面向过程的一个补充和发展,面向过程就是代码逐行执行,面向过程就是if/else,面向过程就是for 循环,面向过程就是变量、函数,C#中最基础的也是if、for、变量、函数等这些东西,这些东西就是C#的面向过程部分。对于编程的初学者来说,最难的不是类、继承、控件、https://www.doczj.com/doc/3b5966740.html,、AJAX之类神乎其神的东西,而是“程序化的思维方式”,也就是怎么把一个问题的解决方式用计算机的思维方式进行描述。

我接到过很多想深入学习.Net学生的咨询,当我问到“你的.Net基础怎么样”的时候,很多人都回答“学过C#、.Net、https://www.doczj.com/doc/3b5966740.html,,感觉基础还行”,但是我给了他一个很简单的题,比如“用for循环累加的方式计算1到100之间整数的和”、“提示用户输入两个数字,然后程序打印两个数字的和”,很多人都做不出来。

对于初学者来说先不用管面向对象、https://www.doczj.com/doc/3b5966740.html,之类的东西迷惑,先学习用最朴实的for、if来编写程序,通过亲手编写练习题代码来逐渐形成程序化的思维方式,这个阶段也不要使用“看起来很酷”的WinForm或者https://www.doczj.com/doc/3b5966740.html,页面来做,因为那样就会涉及到这个阶段不需要去了解的问题,先编写最简单的控制台程序就可以。推荐大家看我录制的视频教程《【传智播客.Net视频】第1季C#编程基础》,这个教程针对C#零基础的同学进行讲解,并且在课程中给出了非常多的练习,一定要自己亲手把代码熟练的写出来,记住是亲手写出来,而不是照着我的代码抄,更不能是看懂了我的代码就以为自己掌握了,要知道“看懂了”和“会写了”之间差着十万八千里呢。对于初学者来说一开始写那些练习可能有点困难,先理解我写的代码,然后自己总结成“先***后***,再***,如果***则***”这样的用语言描述的算法,然后照着算法描述自己写代码,发现有地方写起来遇到问题的话再参考我的代码,最后做到不用看我的代码、不用看算法描述也能把代码写出来,这样第一阶段的任务就完成了。下面列出我视频教程中的一些练习题,大家可以自测看这个阶段自己是否合格:

练习1:提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“888888”,则提示正确,否则提示错误,如果用户名不是admin

还提示用户用户名不存在。

练习2:提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,则告知不允许查看,如果大于等于10岁,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户可以查看,否则提示不可以查看。(给出测试用例。)

练习3:从一个整数数组中取出最大的整数

练习4:计算一个整数数组的所有元素的和。

练习5:将一个字符串数组输出为|分割的形式,比如{“浮云”,”神马”,”穿梭”}数组输出为“浮云|神马|穿梭”。不要使用String.Join等.Net内置方法。

练习6:有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串保存到字符串数组中。

练习7:将一个字符串数组的元素的顺序进行反转。{"3","a","8","haha"} 转换为{"haha","8","a","3"}。提示:第i个和第length-i-1个进行交换。

学C#基础的时候的参考书推荐如下两本:

(1)《C#图解教程》,这本书讲的清晰易懂,不过部分内容安排顺序不合理,大家按照我视频中的顺序进行学习就可以。

(2)《C#入门经典》适合零基础的大部头,不过非常厚,采用的是老外的描述方式,中国人读起来有点别扭,而且中文版翻译的不是太好。

二、C#面向对象基础

初学者学面向对象的时候没必要(也做不到)把面向对象学的非常透、非常深,因为如果想深刻的理解面向对象,必须要有大量的编程经验才能真正体会面向对象到底是怎么回事、有什么好处。以前听到过有人建议初学者学习设计模式,我认为纯属误人子弟,对于初学者来说没有大量的编程经验,根本看不懂设计模式在说什么。这个阶段只要弄明白怎么声明类、什么是访问级别(主要是public、private)、什么是属性、字段、方法、什么是继承、什么是override就可以。面向对象有三个特性:封装、继承、多态。对于初学者来说理解多态是非常困难的也是没太大必要的,这个阶段只要能掌握封装和继承就可以。

三、简单的WinForm编程

WinForm是.Net中用来构建Windows窗体应用程序的技术,对于目前国内市场来讲一般也就是用来桌面版管理系统等的技术。有人会问“我们不是学B/S的https://www.doczj.com/doc/3b5966740.html,开发吗?为什么还要学C/S的WinForm?”,一定要注意我在这段的标题写的是“简单的”WinForm。和https://www.doczj.com/doc/3b5966740.html,比较起来,学WinForm需要学习的前置知识非常少,可以非常快的入手开发,而学习https://www.doczj.com/doc/3b5966740.html,则需要先学习HTML、JavaScript、Dom等知识。这个阶段的学习重点不是WinForm本身,而是通过WinForm在案例中理解类、对象、属性、方法、事件、索引器等概念,我们是“借壳学习”,因此不用对WinForm的深入技术(比如控件美化、布局、PInvoke、托盘编程、高级控件、ActiveX等)浪费时间去研究。初学者很难把握WinForm 学习的度,还是推荐大家参考看我录制的视频教程《【传智播客.Net视频】第3季WinForm基础》。

四、常用.Net Framework类

.Net Framework中的类是.Net中最丰富、最有价值的内容,.Net Framework中的类是和表现层无关的,也就是无论是在控制台中、WinForm中还是https://www.doczj.com/doc/3b5966740.html,中都可以调用这些类,比如把一个字符串转换为整数都是使用Convert.ToInt32()

这个方法,因此千万不能因为你是在控制台程序中写这些类就认为自己在“编写DOS程序”。

.Net Framework是非常庞大的,拥有上万个类,没必要把这几万个类掌握,在这个阶段把常用的.Net Framework类掌握了,会对后续阶段的学习非常有帮助。这些类包括:String类常用方法、StringBuilder类、IO类(FileStream、File、Path)、XML操作类、集合类(ArrayList、List、Dictionary)等。

五、SQL语句

这个阶段主要学习SQL语法,能够掌握常见的SQL语法。数据库管理系统有MSSQLServer、Oracle、MySQL、DB2、Access等,这些不同的系统对于数据库管理员来说使用方法各异,但是对于开发人员来说差不多,因为都是用的统一的操作语言“SQL”,通过SQL这门通用的语言,你可以和不同的数据库进行沟通,所以只要掌握了.Net开发最常用的MSSQLServer,以后根据工作的需要使用其他的数据库管理系统会非常简单。

现在企业招聘.Net开发人员的时候对于数据库考查非常多,甚至很多公司的笔试题中有1/3都是关于SQL语句、存储过程的,因此对于准备学习后找工作的同学来说必须把这部分内容学好。

这部分内容主要学习:MSSQLServer的简单管理,Select、Insert、Update、Delete 语句,学完了这些内容就可以继续学习后续的https://www.doczj.com/doc/3b5966740.html,了。学有余力的同学可以学习Join、Union、子查询、存储过程等高级的内容。

这部分内容学习时大家可以参考我的《程序员的SQL金典》这本书(我将近期发布这本书的全部免费电子版)和《【传智播客.Net视频】第4季SQL从入门到提高》。这套视频教程。

六、https://www.doczj.com/doc/3b5966740.html,

https://www.doczj.com/doc/3b5966740.html,是.Net中用来访问数据库的技术,通过https://www.doczj.com/doc/3b5966740.html,我们就能通过程序告诉数据库“请把年龄大于20岁的人员返回给我”。在学习https://www.doczj.com/doc/3b5966740.html,之前一定要把常用的SQL语句掌握了,千万不能学了一句Select * from Persons就来学https://www.doczj.com/doc/3b5966740.html,,否则可能会出现下面这个真实的故事中的笑话了:

我以前碰到过一个人写一个“查询学号为S001的学生的姓名”的功能,他这么写程序(示例性代码,不严谨):

SqlCommand cmd = conn.CreateCommand();

https://www.doczj.com/doc/3b5966740.html,mandText = “Select * from Persons”;

SqlDataReader reader = cmd.ExecuteReader();

while(reader.Read())

{

String no = (string)reader[ “No”];

if(no==” S001”)

{

string name = (string)reader[ “Name”];

MessageBox.Show(name);

}

}

看到这种写法相信所有人都要崩溃了,因为好像从来没学过where语句一样。因此必须在把常用的SQL语句掌握以后再来学https://www.doczj.com/doc/3b5966740.html,。

这阶段的学习主要学习使用SqlConnection、SqlCommand(ExecuteNonQuery、ExecuteReader、ExecuteScalar)等类的使用、参数化查询等,掌握DataSet

方式使用离线数据集,能够自己从头写一个SqlHelper类出来即可。

(注:这段我描述的是https://www.doczj.com/doc/3b5966740.html,基于接口的编程,属于深入一点的知识,对于初学者来说如果看不懂也没关系,不用纠结于此)SqlConnection、SqlCommand等类是https://www.doczj.com/doc/3b5966740.html,中用来连接MSSQLServer的类,连接Oracle等数据库则使用OracleConnection、OracleCommand等类,虽然看似不同的类,但是由于https://www.doczj.com/doc/3b5966740.html, 通过IDbConnection、IDbCommand等接口统一了类的方法,所以OracleConnection、OracleCommand等类的用法和SqlConnection、SqlCommand 基本一样,而且如果通过DbProviderFactories进行基于接口的https://www.doczj.com/doc/3b5966740.html,编程,那么编程的时候就是使用IDbConnection、IDbCommand接口,完全不用管SqlConnection、OracleConnection等这些不同的类。学有余力的同学可以深入研究一下https://www.doczj.com/doc/3b5966740.html,的接口编程,会对你理解设计模式有很大的帮助。

七、HTML、JavaScript、Dom

HTML是对网页长什么样子的一个描述,也就是“这里显示一个超链接、那里显示一个按钮”都是通过HTML来进行描述的。HTML做出来的页面是静态、不变化,如果要实现“点击【计算】按钮的时候让表格放大显示”这样的动态效果,则要通过程序操作Dom,一般使用JavaScript这种脚本语言来操作Dom。

如果不想成为只会拖控件的开发人员的话,需要在学习https://www.doczj.com/doc/3b5966740.html,之前把HTML、JavaScript、Dom这些好好学习。提到这一点有同学可能会提出异议“不是这样的呀,https://www.doczj.com/doc/3b5966740.html,已经封装的很好了,拖几个控件上来就可以了,https://www.doczj.com/doc/3b5966740.html,都帮我们生成HTML了,也不用学JavaScript,动态效果写C#代码就可以了”。https://www.doczj.com/doc/3b5966740.html,中这种拖https://www.doczj.com/doc/3b5966740.html,控件的开发技术就叫做WebForm,微软的WebForm封

装是非常伟大的技术,能够将复杂的Web开发简化到可以像开发WinForm程序一样点击,不得不佩服微软技术的强悍。使用WebForm我们就可以进行傻瓜化的开发,要是每天的工作、做每个项目的时候都能一直这样“傻瓜”下去也是很美好的,但是很不幸有一些场合中是不能使用这种傻瓜化的开发方式的,举几个例子:

例子1:在网站的注册页面中让用户所在的省、市,提供两个下拉列表框(DropDownList),一个为省的列表框,一个为市的列表框,当用户选择不同的省的时候,市列表框中就列出这个省下的所有市供用户选择。

对于这样一个功能点,如果只会拖控件的人很可能会这么写(假设省列表框id 为ddlProvince,市列表框id为ddlCity),在Page_Load中加载省列表到ddlProvince,然后在ddlProvince的SelectedIndexChanged事件中响应ddlProvince的选择变化,当ddlProvince选择变化后根据选中项来填充ddlCity。用这种方法实现最大的缺点就是页面会频繁的刷新,每次选择省以后页面都会唰一下的刷新一次,这在网速比较慢或者服务器压力比较大的时候是很慢的,而且用户体验很差。这种情况用JavaScript

八、https://www.doczj.com/doc/3b5966740.html,

https://www.doczj.com/doc/3b5966740.html,是.Net中用来开发动态Web应用程序的技术,https://www.doczj.com/doc/3b5966740.html,主要分https://www.doczj.com/doc/3b5966740.html, WebForm(以后简称WebForm)和https://www.doczj.com/doc/3b5966740.html, MVC两种技术,大部分人说https://www.doczj.com/doc/3b5966740.html, 都是指的https://www.doczj.com/doc/3b5966740.html, WebForm,而https://www.doczj.com/doc/3b5966740.html, MVC则是微软最近推出的一门技术,前面已经提到过了https://www.doczj.com/doc/3b5966740.html, MVC并不是用来代替https://www.doczj.com/doc/3b5966740.html, WebForm的,因此不要认为“https://www.doczj.com/doc/3b5966740.html, MVC淘汰了WebForm,学WebForm过时了”,对于初学者来说还是先学习WebForm,等WebForm掌握的比较好以后根据自己的情况学习https://www.doczj.com/doc/3b5966740.html, MVC,现在很多公司招聘的时候都提出了“掌握https://www.doczj.com/doc/3b5966740.html, MVC优先考虑”。下面我们还是主要来谈WebForm的学习。

很多人被那些“短平快”https://www.doczj.com/doc/3b5966740.html,的书误导了,开始学习就从Button控件、TextBox 控件、Repeater控件、GridView控件开始学习,为庞大的https://www.doczj.com/doc/3b5966740.html,体系所折服,看着千八百页的书感叹“晕呢,这么多控件、什么多方法、这么多属性哪辈子学完呀”。当然也有人会拖几个控件以后就自诩“精通https://www.doczj.com/doc/3b5966740.html,”,“拖控件、设属性、写事件”靠此三招走天下,但是一旦遇到稍微复杂一点问题就懵了。

WebForm是微软的一个伟大的创造,能够将复杂的Web开发进行了屏蔽,能够让我们进行傻瓜化的开发,但是微软再怎么封装也不可能让我们一直“快乐的傻下去”,不了解Http、不了解“请求—处理—响应”的模型、不了解https://www.doczj.com/doc/3b5966740.html,

的内部原理,那么遇到一些稍微复杂一点的问题的话就会感觉很茫然。一旦了解了Http、https://www.doczj.com/doc/3b5966740.html,的原理以后再去学https://www.doczj.com/doc/3b5966740.html,你就能知道那些控件到底帮我们做了什么,这样就可以轻松的掌握那些控件,不是成为控件的奴隶,而是成为控件的主人,让控件为我们所用。正是基于这样的原则,我在传智播客.net班讲https://www.doczj.com/doc/3b5966740.html,基础的时候,我没有立即讲解那些控件怎么用,而是使用了4天的时间来讲Http协议、Web开发基本原则、“请求—处理—响应”模型、基于HttpHandler 开发Web应用、ViewState原理、IsPostBack原理、XSS漏洞等基础的东西,前4天的内容是难度非常高的东西,一旦把这4天的内容掌握了,后面用几天时间

学员们就能掌握https://www.doczj.com/doc/3b5966740.html,的基础的东西,而且掌握的非常深入、牢固,如果对这个感兴趣可以参考我的《【传智播客.Net视频】https://www.doczj.com/doc/3b5966740.html,》上中下三季内容。

特别是以后会在https://www.doczj.com/doc/3b5966740.html,开发中占有一席之地的https://www.doczj.com/doc/3b5966740.html, MVC更是摒弃了https://www.doczj.com/doc/3b5966740.html, WebForm中复杂的事件驱动、属性等非Web本源的东西,https://www.doczj.com/doc/3b5966740.html, MVC 回归了Web开发的本质,把Web开发重新用“请求→处理→响应”这样一个最简单的模型进行描述,其实是比https://www.doczj.com/doc/3b5966740.html, WebForm更简单,但是如果只会用https://www.doczj.com/doc/3b5966740.html, WebForm进行拖控件开发,那么如果需要用到https://www.doczj.com/doc/3b5966740.html, MVC就会非常不适应。

学习WebForm的时候一定要先掌握不使用WebForm进行Web开发的技术,因为有的项目中如果完全使用WebForm中的服务端进行开发就会有性能等问题,因此这些项目中会不允许使用服务端控件或者不允许使用服务端控件的某些特性。服务端控件必须学,因为很多功能点中用服务端控件会“多快好省”,但是不要离了服务端控件就活不了。

WebForm中并不是所有控件都是常用的,初学者的目的是用最短的时间学最有用的内容。工具箱中“标准”中常用的控件如下:Label、Button、LinkButton、ImageButton、HyperLink、DropDownList、ListBox、CheckBox、RadioButton、Literal、FileUpload。很多书上讲WebForm的时候讲把大量的篇幅放到GridView、DataList、DetailsView、Repeater、ListView等这些数据绑定控件上,其实这些控件大同小异,只要掌握了一个控件另外一个控件很容易掌握,推荐大家学习ListView和Repeater就够了。

上面我谈了学习.Net Web开发的的八步,这八步看似漫长,其实如果能把所有精力投入上面的话大约两个月就能学下来。当然学完了这些只是掌握了.Net

开发的基础知识,还需要在项目开发中将这些基础知识进一步综合应用。Windows Phone开发“文字+视频”系列教程开篇:

移动开发是未来的一个新的浪潮,对于.Net开发者来说现在开始学习Windows Phone开发技术是一个非常明智的选择。但是目前Windows Phone开发的资料非常少,特别是视频教程资料更少。

我把我在传智播客.Net培训班20110420班讲的Windows Phone课程现场视频录像整理出来放到放上分享。基于众所周知的原因,我不可能把全部现场Windows Phone课程都分享出来,分享的内容主要是Windows Phone开发的基础部分,网络记事本和LBS项目恕不能分享。但是只要掌握了Windows Phone开发的这部分基础,自己完全有能力把这些基础知识组合成一个项目。

如果只是单单的放视频教程也就失去了我写这系列博文的意义,因为如果光有视频教程而没有配套讲义的话学习效率是非常低的。因此我将利用后面的时间为每

节教程配一篇博文,博文中不仅包含课堂上的关键性核心技术点、代码,也包含了我对这个技术点的理解。这套系列教程约分22节,由于为视频配文章也是需要时间的,我每周尽量至少公布三节。这22节主要内容为:智能手机概念、Windows Phone简介和演示、开发环境搭建、Task、外设(收音机、加速度感应器)、ApplicationBar、InputScope、独立存储、导航、墓碑机制、LBS应用概念及案例、地图控件BMSL(BingMaps Silverlight)。

第一节智能手机是个神马玩意

视频教程在线观看:

Windows Phone是微软推出的新一代智能手机操作系统。智能手机是搭载了智能手机操作系统的手机,那么先要弄明白什么是“智能手机”呢?

有人说“智能手机就是很智能的手机”,可是那种“拥有它就同时拥有了数码照相机、数码摄像机、MP3、MP4、家庭影院,还能无线上网、畅聊QQ”的998山寨手机也很智能呀?也能手机网上、也能手机聊QQ,还能玩游戏,双卡双待、超长待机、压不坏、帅不随……多么智能呀,难道他们不是智能手机吗?

有人说带操作系统的手机就是智能手机。但是比如诺基亚C3手机也搭载了S40操作系统,无数山寨手机使用的MTK架构就是使用Nucleus操作系统,那么为什么说他们不算智能手机?

智能手机和非智能手机的区别用通俗的话说就是“能否由用户安装软件”,能由用户自己安装软件的手机就是智能手机,反之不能由用户自己安装软件的手机就是非智能手机。那些几百元的山寨手机虽然也能聊QQ、上网、玩游戏,但是它的那些程序都是出厂时就内置的,用户无法安装新的软件。比如拿到一款手机,上面有QQ、有浏览器,但是没有MSN,如果能从网上下载MSN软件并且装到手机上就是智能手机,如果不能装就不是智能手机。

有人会说了“诺基亚的S40手机也能安装Java软件呀,为什么S40不是智能手机操作系统”,很多山寨手机、S40等手机系统都可以安装Jar、JAD的Java软

件,但是这些Java软件一般都比较简单、功能有限,因此提到智能手机的时候一般都把这些只能安装Java程序的手机排除在外。

由于智能手机可以安装软件,大大扩展了手机的能力。现在智能手机上的软件五花八门,益智类的游戏有:植物大战僵尸、愤怒的小鸟、水果忍者;超炫的3D 游戏有:极品飞车、街头篮球;有能屏蔽骚扰电话的手机安全卫士;还有能拍摄条形码自动显示商品比价的软件。想通过MSN和好友聊天就装一个手机版的MSN;想屏蔽响一声就挂、推销等电话就可以安装一个手机来电防火墙;每次都把名片手动录入手机很麻烦,因此就安装一个名片扫描软件自动识别名片;路痴就可以安装一个手机地图软件,到了陌生地方不用再问路……如果说非智能手机是能上网、聊QQ的手机,那么智能手机就是带短信、通话功能的随身电脑(随身智能终端)。

相关主题
文本预览
相关文档 最新文档