大家好,

在2012年(或者2013年,具体看时间安排了),我计划编写一本关于“Web开发”的书。图灵出版的图书基本上都是高精尖的大师作品,用老美喜欢用的一个形容词叫作“Rocket Science”。但我的这本书是绝对不够格的,所以如果我写好以后,图灵的诸位老师如果能够帮我出版,那我就太荣幸了。另外,和图灵的杨海玲老师商量好之后,已经拖了一年多了,实在非常不好意思~~ 不过慢工出细活儿,我在这儿也聊一些想法,希望得到一些建议和意见,谢谢大家!

这本书讲解的内容,就是使用最大众化的技术,做出最实用的东西。我常常提到一个观点(并非我原创,是澳大利亚一家出版公司 Sitepoint 说的):

现在这个时代,没有什么东西是在网络上找不到的,尤其是“非高精尖”技术,任何人想学习,都可以在网络上找到足够多的资源,看书并非唯一选择。那么我如果要写一本书,目的是什么呢?答案就是,网络上的资料存在一个缺陷,就是碎片的,分离的,需要学习者做大量的探索、整理。因此我们的书呢,就是给那些想学习这个技术的人一些帮助,减少一些他们自己摸索的时间。如果你在网络上搜索、泡论坛、摸爬滚打,可能需要3个月到达某个境界,而通过的跟着一本书学习,1个月搞定了,那么就节约了2个月,那这两个月的时间就是这本书的价值所在。

所以这本书并不是给高手看的,但是我希望它是一本看起来不费劲,看了就能用的书,看了就能做出实际东西,看了就能帮你去找到一份工作的书(这本书里的东西都掌握,绝对可以找一个开发的工作,但是否高薪,就看努力拉)。

在构思这本书的过程中,我会写一些文章,供大家参考,下面是将依次发布的 9 篇文章,此后的再逐渐增加。

  1. Web开发的“十事要说”
  2. 关于学习C#语言的几个建议
  3. 技术平台选择,兼谈 .Net 与微软
  4. 语言与框架
  5. ORM(对象关系映射)
  6. 学习编程实践之“五子棋”
  7. 学习编程实践之“文件压缩”
  8. UCLA计算机系如何教 C#
  9. 学习编程实践之“电梯模拟”

基本背景

Web开发从本质上说,在做三件事:

1)要给程序的用户提供一个美观、易用、灵活的用户界面;

2)根据程序的功能要求,实现一定的逻辑,包括接受用户的请求,从数据库中取出来,然后再传给客户端的浏览器上,以及把用户输入的数据存储到数据库里;

3)需要通过数据库系统(比如SQL Server),把内容存储在数据库中,或从数据库中读出来。

这三件事可以概括为“表现”、“业务逻辑”、“持久化”这三个词语。这本书我们将把目光聚焦于后两者(通常称为“Web开发”或“后端”),对于前端的Ajax和jQeury 会做介绍,对HTML/CSS就不再做讲解了。

enter image description here

基本内容

前端开发基本上都是按照标准走,所以基本都是相同的技术。但是服务器端程序的开发,有很多不同的工具和平台可以选择,所以一本书必须要结合一个具体的平台来具体实施。

目前Web开发的主流平台有“三巨头”(.net、Java 和 PHP),以及 Ruby on Rails 等其他工具。 我这几年来一直从事 .net 平台上的开发工作,因此将介绍与之相关的内容,所有内容都是来自于这几年的实践。

其实无论用什么,原理都是大同小异的,明白了一个,再用其他的也不是很困难的事情。就好像如果你钢琴弹得很好了,要学弹吉他,就容易多了。尽管手指头的动作相差很大,但是乐理都是相同的。

当然,很多人对微软和 .net 有一些看法,对这个问题俺不发表意见~~~ 微软没给我广告费,哈哈,不过我也会有一些数据的说明,告诉你用这个至少不会是一个不好的选择。仅作介绍而已。

具体来说,这本书主要包括以下两个核心工具:

1)ASP.NET MVC :这主要是来解决“业务逻辑”层的问题,也是 ASP.NET 未来的主流开发模式,我们将使用 ASP.NET MVC 3;如果这本书明年出版的话,就可以用 ASP.NET MVC 4 了,核心的东西已经很稳定了,没什么变化。

2)Entity Framework :这主要来解决“持久化”层的问题,这是微软的核心ORM(对象-关系映射框架)。在书中,将以 Code First 模式为主。尽管还有 Model First 和 Database First 两种模式,但是用了一次 Code First 之后,你就再也不会想用其他两种模式了。Trust me! 具体的版本将使用 Entity Framework 5.0(目前是Beta 2阶段) 。

此外,还希望把一些相关的基础内容也穿插其中进行介绍,使读者不但知其然,而且知其所以然,比如HTTP协议的一些基本知识、SQL数据库的性能优化等等。

目标读者

写任何一本书,第一步是确定目标读者,我基本设想为:

1)对 HTML、CSS足够熟悉;

2)对 Javascript 基本了解,能够使用一点 jQeury;

3)对 C# 语言和 OOP 概念有一定的了解。

也就是说,对前端要足够熟悉(书中不会再做相关介绍),编程有一定基础(对于一些重要内容,我会做一些重点说明,比如Lambda表达式、Linq、SQL语句等概念)。当然,这里面的一个问题,本书肯定会比较重的倚赖C#语言,我原来打算先写一本书C#+OOP的书(其实已经写了100多页),但是我后来觉得市面上的C#书还是有不少不错的,似乎我再写一本的意义不是很大,所以就决定还是写一本更偏重实际开发的了。

图书体例

实际上,写实践型的技术书籍,最重要就是做好案例、讲好案例。实际工作中, Web开发通常解决的是两类任务:

1)对外的网站。例如做一个博客系统、论坛系统,或者时髦的微博系统等等;

2)企业内部使用的信息管理系统,实际上这部分需求比第一类更大。例如ERP、客户关系管理、办公自动化系统。

我希望在书中,介绍若干实际的系统。实际上,用上面提到的工具,开发一个博客、微博这样系统,并不是一件很困难的事,任何人都可以做到。Ruby On Rails的官网首页就有一个“15分钟开发一个博客系统”的视频演示,很吸引人眼球,我们也可以在第一章,就给出一个Just Follow 模式的例子,做一个博客出来。

以前的计算机语言的书,第一个例子都是著名的“Hello World!”,对于今天而言,开发一个博客系统就是“Hello World!”。

当然,要开发一个安全可靠的、有性能要求的系统,还是很复杂的,并非看一本书就可以搞定的。比如,作为演示,实现一个微博系统并不复杂,但是要真实现一个几亿人使用的微博,就完全是另一回事了。

请不吝赐教

如果您对这个题目感兴趣,欢迎给我一些建议。可以在这里留言,也可以到我的微博跟我交流: http://weibo.com/1906984307 。

希望对更多的读者有帮助!谢谢大家的支持!