现实环境
在国内.Net开发这个环境里, 中小型公司,或者大公司但主营业务不是软件开发里面的软件小团队,针对.Net开发人员的要求都是十项全能型的全才, 能做的了从前台页面展现到最后数据存储的全套开发流程,甚至有些还需要程序发布,打包部署等知识, 以及还有其他方面的要求, 这个不说那么多.
招人难: 在招人的时候,我们碰到的大部分都是有多年工作经验,懂的东西也一大堆,或许有些懂的东西也没多少,问起基础性的概念问题,原理问题,大都没法准确的回答出来, 为何会出现这种情况? 这个时候我们那么多年的开发经验真有多少含金量?
从工作当中找原因: 在这里不说具体的做法,只说主要原因,
1. 有些东西做了,完成后没有做思考,没有转换为自己的东西, 没有系统的了解过其相关的东西.
2. 平时只忙着做项目,做完了轻松了,感觉好不容易做完了,就休息了,在业余时间不了解技术,不学习.
3. 缺乏坚持,这一点主要造成缺乏系统性的了解某方面技术.
给想做.Net Web开发这方面的人的一些建议:
适合人群: 对.Net, Web有一些了解.
1. 给自己一个合适的定位(可以参考下面几条的说明), 自己瞅准方向去了解某个方面, 当然了解的东西越多越好, 越精越好.
2. 多上一些技术社区, 多找些自己感兴趣方向的开源项目, 通过这样的方式来快速扩大自己的知识面, 使自己不至于跟前沿技术落下很多, 扩大广度
3. 勤学基础, 不定期的学习对你最有用的技术的基础, 万变不离其宗,说那么模式啊,算法啊,思想之类的,都是由那些你半折手指头就可以数过来基础变化出来的, 基础搞懂了, 才能理解那些高深的思想里领悟它是如何实现的, 增加深度.
上述这3点也是完全符合T字型技术人才的修炼之道的.
基本要求
1. 熟悉一种语言的编程模型(3中程序执行顺序, 相关基本类型, 事件机制,反射机制, 函数变量作用域, 线程)
技术进阶:
2. 事件导向思维(UI的操作与有些逻辑需要事件, ).
3. URL导向思维(Web原本就是URL导向的一种实现)
4. 按照某一原则对代码的抽象,分离能力.
Web前段技术
技术: HTML, CSS, JavaScript
其他辅助: AJAX, HTTP Protocal
主要特点
1. 提高用户体验
对程序员要求:
1. 使用标准编码,
HTML, CSS,JavaScript都是一些描述性的语言或语法, 不同浏览器对这三部分的实现都不一样, 在编码是采用标准编码能降低由浏览器或浏览器版本不同造成的兼容性问题,
2. 掌握HTML与CSS对应版本的规范,知道差别.
3. 熟悉JavaScript规范, 你可以写出跟多你想要的功能, 另一个方面是有助于理解某个框架里某个功能的实现.
4. 至少熟悉一种JS框架.
相关标准:
HTML 4/ HTML 5
CSS 2.0 / CSS 3.0
JavaScript 规范,
可以复用的框架:
JQuery 中小型站点.
YUI: 大型站点
这些框架都是JS框架, 主要为我们操作HTML 及CSS提供方便.
衔接技术:
这一部分要负责跟下一层-Web服务器进行数据交互
Web服务端技术
这一层主要做两点:
1. 客户端请求与回复处理
2. 如何生成客户端所需要的HTML
第一点WebServer会自动做处理,第二点我们主要是用某一种技术来实现,
1. 静态页面的时代,直接通过File函数,读取磁盘上的Html文件,返回就好.
2. 动态技术的时代, 可以通过一些业务逻辑来动态的产生Html, 主要的技术有: asp, jsp, php, asp.net
在asp.net的开发环境下,我们有两种编程模型(解析引擎)可以选择:
1. WebForms 模型,这种是在基于URL导向的Web环境中模拟了事件处理机制,使得开发Web Application变得跟开发Windows窗体程序一样简单.
2. MVC模型, 按照MVC的模式, 严格按照Web环境下URL导向开发
WebServer考虑点:
1. Client Request Receive
2. Client Request Response
Web请求处理
1. 请求一般分为: 普通请求跟Ajax请求.
2. 服务端资源有各种类型,需要我们编码的有: 动态页面(aspx,asp,jsp), web service
3. 根据返回值的不同, 一般有xml, json. 在这里,我觉得HTML应该是属于XML的一类.
主要特点 :
1. 客户端请求及数据处理的吞吐量
程序员要求:
1. 了解请求头与返回头(掌握这点之后,就可以用掌握的一门语言,通过Socket就可以写出你自己的Web Service),
2. 负载均衡(大型站点会需要, 估计同时在线< 100, 基本可以忽略).
业务处理技术(怎么用代码来实现业务处理)
各种编程语言
主要特点 :
1. 完成特定的需求
数据存储技术(如何跟数据库打交道)
1. 自己写数据持久化类库
2. 选择某一种ORM, 按照该ORM要求对数据进行建模, 使用ORM进行数据存储.
数据存储技术(偏向数据库)
用来存储数据, 一般叫数据持久化.
主要有各种关系型数据库, 非关系型数据库,
此领域主要是: 数据存储技术
主要特点 :
1. 高效存储, 坚持ACID原则.
思维组织特别杂乱,这点我感觉特别严重,需要慢慢的提高.