架构(Architecture)是什么?可能每个人给出的答案都不同。业界流行一句笑话:
Architecture is like teenage sex,everybody talks about it,nobody really knows what it is.
当然,MOL也不可能给出一个关于架构的准确定义。MOL更愿意把架构归为哲学的范畴。架构本身其实和软件开发并无太大关系。一个国家有自己的管理体系;一个公司有自己的组织架构;一个家庭也有独特的男权或女权的特色,小到一个人;也是可以分为自我、本我和超我的。每个事物都是由一个个更小的事物组合而成的,而这些其实都与架构相关。
在宏观世界里,所有的国家公民构成了一个国家主体,国家主体对每个公民进行管理和约束,这是架构。
在微观世界里,电子绕着原子核高速转动,始终不会脱离原子核的管辖范围。而原子核和电子又组成一个原子。原子对电子、质子、中子的管理就是架构。
本书的读者一定是软件行业的高手或菜鸟,那我们就回到软件编程的世界里。
每个软件项目都是由代码和服务器构成的,如何统筹安排代码和服务器,就是架构的范畴了。
一个项目可能要使用多台服务器,如Web服务器、数据库服务器、文件服务器、CDN……如何针对不同的要求对服务器进行选型,这是架构;如何统一管理这些服务器,这是架构;如何让这些服务器平稳运行,这也是架构。
开发项目使用什么语言,是Java还是Node.js?选用什么数据库,是Oracle还是MongoDB?这是架构。
具体到开发过程中,某个模块应该如何安排,是交给DBA(数据库管理员)用存储过程来实现,还是让C#程序员访问数据库实现?这是架构。
在写C#代码的时候,采用三层架构,还是MVC?这是架构。
如何写日志,是使用I/O读写文件?还是采用log4net?或者是AOP切片写日志?这是架构。
甚至具体到某种技术的时候,也有架构。比如MOL规定项目要使用MVC架构,那么使用微软的MVC,还是Spring的MVC?这都是架构。
可见,架构涉及的范围非常之广。弱水三千,MOL只给一瓢。本书将从代码架构的角度来让大家一窥架构的真面目。
C#是一门非常优雅的编程语言(当然MOL并无编程语言的偏见),所以本书中所有的代码都以C#语言来描述。
MOL一直比较反对平铺直叙的讲解方式,所以本书的语言风格是比较幽默的。在本书的内容中将出现3个与MOL并肩作战的兄弟(公司老大邓总不在此列),以对话形式抛出问题并解决问题。
本书中只有一个项目“晋商卡”,但MOL会带着大家见证“晋商卡”从无到有的过程,大家可以在这个过程中获得很多意想不到的收获。
正如MOL在结语中所说,2017年是一个强调“工匠精神”的一年。几乎所有的人都在精益求精地做自己的事情。但MOL要分享给大家的是一种懒人精神,我们不愿意日复一日地重复昨天的自己,我们要站在更高的层面,做更少的事情,却有更多的收获。
本篇详细介绍了项目开发的前置节点——需求,并对常见的三层架构给出了分析。在第1篇中提出了面向对象的重点概念,并让大家初步认识抽象的过程。
相信很多人一定被书中大段的SQL代码搞得云里雾里,不用担心,在第3章中MOL将带领大家完成懒人的第一步——如何不写SQL代码。
NoSQL是现在比较流行的一个话题和技术。在第4章中将通过讲解MongoDB来介绍NoSQL如何使用,并且纠正大家的一个错误观念:NoSQL和ORM不能搭配使用。
第5章分享了测试的工作,并讲解了单元测试、黑盒测试、白盒测试……让大家在收获的同时,也能理解测试工程师在工作中所要面临的一些痛苦。
任何一个网站项目,似乎都绕不开“缓存”这个神奇的空间。缓存用得好,可以加快系统的反应速度。如果缓存用得不好,不仅用户体验差,还可能造成服务器宕机。第6章就分享了如何使用缓存。
每个程序员都有一个全栈的梦想,而前端又是全栈中必不可少的一部分,第7章讲解了如何使用EasyUI来搭建前端。
现在越来越多的电商网站都会做一些抢购或促销活动,当然这就使得网站不可避免地面临高并发。如何处理高并发呢?第8章将通过讲解消息队列,来说明如何应对高并发。
微信已经成了人们生活中必不可少的一部分。在2017年3月27日这一天,微信小程序也对个人用户开放了。我们如何把“晋商卡”挂到微信公众平台上,又如何开发微信小程序呢?这些问题都将在第9章中解决。
因为书中所有的代码都以C#语言来描述,所以本书读者如果有一定的C#语言基础更佳。
为了方便读者高效地学习,本书特意提供了以下配套资源:
这些配套资源需要读者自行下载。请读者登录机械工业出版社华章公司的网站 www.hzbook.com ,然后搜索到本书页面,按照页面上的说明进行下载。
本书主要由田伟(就是笔者MOL)和郎小娇主笔编写。其他参与编写的人员还有李小妹、周晨、桂凤林等。
读者阅读本书时若有疑问,可以发邮件到hzbook2017@163.com以获得帮助。