书海网短评:
你是否还在为了“三层”而“三层”?甚至不知道为什么分层。你是否还在为项目中难以维护的SQL语句而头疼不已?你是否还不知道MongoDB这样的非关系型数据库也可以使用ORM框架?你是否
你是否还在为了“三层”而“三层”?甚至不知道为什么分层。
你是否还在为项目中难以维护的SQL语句而头疼不已?
你是否还不知道MongoDB这样的非关系型数据库也可以使用ORM框架?
你是否对前端或测试这些领域也一无所知?
你是否面对高并发时手足无措?
……
《大话代码架构(项目实战版)》将以轻松幽默的风格解决你所面临的这些问题。
《大话代码架构(项目实战版)》以一个真实的项目案例——“晋商卡”从无到有的整个开发过程为主线,用大话的语言风格,风趣幽默地讲解了代码架构的相关知识。《大话代码架构(项目实战版)》通过5个人物角色,模拟实际的项目开发过程,以对话形式抛出问题,然后解决问题,让你在身临其境中轻松愉快地掌握代码架构的知识。
《大话代码架构(项目实战版)》涵盖的主要内容有敏捷开发的方法论、项目开发流程、传统的三层架构、源代码管理、几种常见的实体关系模型、使用IoC和接口、使用缓存和静态页面减少服务器压力、在项目中使用消息队列、尝试使用前端框架、微信公众号开发及小程序开发。
《大话代码架构(项目实战版)》适合对代码架构感兴趣的初学者和爱好者阅读。另外,高校学生和参加软件开发的培训学员也可将《大话代码架构(项目实战版)》作为兴趣读物。对于初入职场还比较迷茫的程序员,《大话代码架构(项目实战版)》可以作为一本提高读物来阅读。建议阅读《大话代码架构(项目实战版)》的读者具有一定的C#语言基础。
一分钟了解《大话代码架构(项目实战版)》精华内容
引言
故事从一个电商开始
为什么是三层
ORM实体关系映射
换个数据库试试
越俎代庖搞稿测试
神奇的缓存
程序员眼中的前端
人生中的第*次高并发
微信公众号
田伟
自称MOL。长期从事软件开发及团队管理工作。擅长代码框架的搭建和优化。善于将敏捷方法论用于项目开发中,从而提高团队的开发效率。坚持一个原则,即自己认为好的东西应该分享给大家。提倡软件开发不仅需要“工匠精神”,也需要“懒人”精神。喜欢以幽默风趣的语言风格讲述技术问题,并以此风格著有《ASP.NET入门很简单》一书,颇受读者好评。
郎小娇
毕业于北京工业大学。现任职于某著名互联网公司,任产品经理。对方法论有独特的见解,尤其对敏捷开发的方法论颇有见解。经常把“哲学思维”用于工作。善于使用不同的方法论指导项目成员的工作,规避项目的风险。曾主导过某大型购物网站的架构工作,以及主要模块的设计实现。
只是因为在书丛中多看了你一眼,就再也没能忘记你的内容和风格。难得有计算机类的书籍能让人如此轻松愉悦地读完。阅读这《大话代码架构(项目实战版)》,不仅能让你感受到作者字里行间的欢乐,还能让你有很丰厚的技术收获。相比大多数软件开发类图书,《大话代码架构》这《大话代码架构(项目实战版)》分享的不仅仅是技术层面的东西,还有对开发思想的领悟,值得一读。
——牛昭中体彩科技发展有限公司技术经理
一本好书,就像一个好朋友一样,隔三差五地想见他一面。MOL与郎小娇的大作《大话代码架构》就是这样的一《大话代码架构(项目实战版)》。书中以情景对话的方式,用通俗易懂的语言介绍了与代码架构相关的很多开发知识,不仅有原理性讲述,还有大量的原创实践,值得推荐给广大读者阅读!
——王化军优板科技、京融界、京钱客、京融客联合创始人
作为MOL的同事,很高兴向大家推荐《大话代码架构》这《大话代码架构(项目实战版)》。书如其人,风趣幽默,又不失内涵。很多晦涩难懂的专业技术,经过作者的大话式解读之后,马上变得通俗易懂,活灵活现,让人很容易理解。如果你还不知道代码架构为何物,或者你在程序架构的道路上走得比较迷茫,那么《大话代码架构(项目实战版)》绝对是你的不2之选!
——徐鸿飞中体彩科技发展有限公司技术经理、信息显示游戏项目负责人
序言
前言
引言1
一个架构师的例子1
背景及人物介绍3
我们的目标3
第1篇需求与三层架构
第1章故事从一个电商网站开始6
1.1需求?需求!6
1.2敏捷开发简介8
1.3UI——用户界面9
1.3.1从UE说起9
1.3.2HTML5&CSS39
1.3.3微信10
1.4数据库10
1.4.1PowerDesigner设计工具11
1.4.2关于SQL语句12
第2章为什么是三层14
2.1MOL带兄弟们去吃饭14
2.2动手写一个三层结构16
2.2.1DAL层的实现17
2.2.2BLL层的实现18
2.2.3UI层的实现19
2.3简说MVC20
2.3.1纠正一下老师的说法20
2.3.2MVC的第一个程序21
2.3.3为什么要用MVC之我见25
2.4向三层代码中加入面向对象25
2.4.1实例化数据库表26
2.4.2增加数据库操作类29
2.4.3加强版的数据库操作类30
2.5小说代码管理33
2.5.1什么是代码管理软件34
2.5.2TFS管理软件36
2.5.3SVN管理软件40
2.5.4Git管理软件41
2.6小结51
第3章ORM实体关系映射52
3.1说说OCP开放封闭原则52
3.2解耦第一步——接口要上位53
3.2.1代码结构的前提53
3.2.2创建接口层56
3.3解耦第二步——工厂模式解决new的问题58
3.4Spring.NET横空出世61
3.4.1酒文化发展史61
3.4.2神奇的IOC62
3.4.3引出Spring.NET64
3.5我不想写SQL语句67
3.5.1什么是ORM68
3.5.2ORM之iBATIS.NET70
3.5.3ORM之NHibernate75
3.5.4ORM之EF86
3.5.5懒人无敌93
3.5.6完成查询操作106
3.5.7数据库先行、模型先行、代码先行109
3.6小结110
第2篇NoSQL和测试
第4章换个数据库试试112
4.1客户总有一些非分的想法112
4.2MongoDB简介113
4.2.1安装&配置114
4.2.2可视化工具116
4.2.3MongoDB的基本操作119
4.3.NET操作MongoDB121
4.4让NoSQL面向对象123
4.4.1实体抽象124
4.4.2操作抽象132
4.5NoSQL题外话135
4.6关于日志136
4.6.1为啥要写日志136
4.6.2如何写日志138
4.6.3注意事项144
4.7小结145
第5章越俎代庖搞搞测试146
5.1简单说测试146
5.2冒烟测试147
5.3黑盒测试148
5.4单元测试149
5.4.1单元测试是什么150
5.4.2如何进行单元测试150
5.4.3测试驱动开发161
5.5白盒测试162
5.6压力测试163
5.7其他测试163
5.8小结163
第3篇高精尖技术
第6章神奇的缓存166
6.1网站崩溃了166
6.2缓存是什么168
6.3微软提供了缓存170
6.4自己做缓存173
6.5第三方缓存176
6.5.1MemCache缓存178
6.5.2Redis缓存189
6.5.3把缓存抽象出来197
6.5.4读写分离198
6.6利用模板引擎生成静态页面198
6.6.1初识NVelocity200
6.6.2使用NVelocity生成静态页面207
6.6.3静态页面带来的问题211
6.7CDN的加入会大大减少服务器的压力212
6.8小结213
第7章程序员眼中的前端215
7.1常见的前端框架216
7.2尝试EasyUI220
7.2.1基础框架220
7.2.2常用的控件232
7.2.3小说权限分配247
7.3其他的前端框架264
7.3.1Bootstrap框架264
7.3.2jQueryUI框架265
7.4小说HTML5265
7.5小结266
第8章人生中的第一次高并发267
8.1网站又崩溃了!267
8.2从相亲说起268
8.3简述消息队列270
8.3.1串行设计270
8.3.2多线程设计271
8.3.3消息队列设计274
8.4常见的消息队列275
8.4.1MSMQ消息队列275
8.4.2RabbitMQ消息队列282
8.5小结288
第9章微信公众号289
9.1李老板出场,请热烈鼓掌289
9.2初探微信公众号290
9.2.1申请订阅号291
9.2.2小机器人294
9.2.3把晋商卡挂到微信公众平台上298
9.3微信小程序299
9.3.1微信小程序是什么299
9.3.2写一个简单的Demo300
9.4微服务310
9.5MongoDB数据库312
9.6大数据314
9.7小结316
序言
2017年是不平凡的一年。
时隔4年,Nokia终于带着情怀回归了。
苹果也迎来了10周年纪念。
微信小程序对个人用户开放了。
2017年是一个非常强调“工匠精神”的一年,但是MOL(即笔者本人)在《大话代码架构(项目实战版)》中强调的是“懒人精神”。不管你承认与否,所有的人都希望自己能不劳而获。当然,这只是一个美好的愿望。MOL只能教大家做最少的事情来赚取更多的休息时间及陪伴家人的时间,这就是我所谓的“懒人精神”。
有些读者可能好奇为何笔者给自己起了MOL这个奇怪的笔名。关于这个问题,笔者在2014年出版的《ASP.NET入门很简单》一书中有过交代,有兴趣的读者可以去看看那《大话代码架构(项目实战版)》。
凡属过往,皆为序章。
写《ASP.NET入门很简单》的时候,MOL刚刚结婚。在写《大话代码架构(项目实战版)》的时候,MOL已经有了幸福的三口之家,宝宝已经可以通过一些简单的词汇来表达自己的情绪和意愿,并且还会跟MOL抢键盘。我的妻也在为这个幸福之家努力奋斗。想想自己真是幸运。虽然《大话代码架构(项目实战版)》写得艰苦,家庭工作琐事也繁多,但是为了自己的这份幸运和广大期待《大话代码架构(项目实战版)》已久的“摩丝”(MOL的粉丝),即使再艰苦,MOL都没有放弃。
所谓更牛,只是换个“罪”受。
作为一个技术宅男,MOL更愿意每天只对着计算机写写代码就可以完成自己养家糊口的任务。理想总是那么丰满,而现实又是如此骨感。对于一个职业程序员来说,MOL的经历还算比较丰富。记得图书市场上出版过一本《不想当厨子的裁缝不是好司机》,后来这个有点无厘头的书名成了一句经常被人引用的调侃语。在此MOL也想把这句话改改,和朋友们说“不想当程序员的艺术家不是好魔术师”。非常幸运,这几种职业MOL都做过,也希望读者朋友们的职业经历丰富一些。
在我带领自己的技术团队做项目的时候,经历过痛苦,也经历过欢笑。我一直都觉得自己非常幸运,因为在《大话代码架构(项目实战版)》中出现的刘朋、岳鹏辉、李冲冲他们3个人,悟性非常高,而且颇有自己的见解。在征得他们的同意后,他们将以真实名字在《大话代码架构(项目实战版)》中出现。
MOL不是大牛,只是愿意把自己的经历与更多的人分享。所以,《大话代码架构(项目实战版)》中并没有讲解非常高、精、尖的技术,而是带领大家走进了“懒人”的世界。每个程序员都会进入迷茫期,不知道自己要干什么。所以希望《大话代码架构(项目实战版)》能从另一个也许大家从未思考过的角度给大家一些启发。
从你翻开《大话代码架构(项目实战版)》的第一页开始,MOL相信你已经准备好换一种“受罪”的方式了,那你离“更牛”也就不远了!
最后,MOL要响应习主席的号召,撸起袖子,加油干!对于MOL和大多数的“摩丝”来说,恐怕我们要脱掉秋裤,加油跑了!
先给自己定一个小目标,今年,2017年,我要成为一个“懒人”!
田伟
前言
架构(Architecture)是什么?可能每个人给出的答案都不同。业界流行一句笑话:
Architectureisliketeenagesex,everybodytalksaboutit,nobodyreallyknowswhatitis.
当然,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#语言来描述。
《大话代码架构(项目实战版)》特色1.风趣幽默
MOL一直比较反对平铺直叙的讲解方式,所以《大话代码架构(项目实战版)》的语言风格是比较幽默的。在《大话代码架构(项目实战版)》的内容中将出现3个与MOL并肩作战的兄弟(公司老大邓总不在此列),以对话形式抛出问题并解决问题。
2.案例分析
《大话代码架构(项目实战版)》中只有一个项目“晋商卡”,但MOL会带着大家见证“晋商卡”从无到有的过程,大家可以在这个过程中获得很多意想不到的收获。
3.向循规蹈矩说NO
正如MOL在结语中所说,2017年是一个强调“工匠精神”的一年。几乎所有的人都在精益求精地做自己的事情。但MOL要分享给大家的是一种懒人精神,我们不愿意日复一日地重复昨天的自己,我们要站在更高的层面,做更少的事情,却有更多的收获。
《大话代码架构(项目实战版)》内容及体系结构第1篇需求与三层架构(第1~3章)
本篇详细介绍了项目开发的前置节点——需求,并对常见的三层架构给出了分析。在第1篇中提出了面向对象的重点概念,并让大家初步认识抽象的过程。
相信很多人一定被书中大段的SQL代码搞得云里雾里,不用担心,在第3章中MOL将带领大家完成懒人的第一步——如何不写SQL代码。
第2篇NoSQL和测试(第4、5章)
NoSQL是现在比较流行的一个话题和技术。在第4章中将通过讲解MongoDB来介绍NoSQL如何使用,并且纠正大家的一个错误观念:NoSQL和ORM不能搭配使用。
第5章分享了测试的工作,并讲解了单元测试、黑盒测试、白盒测试……让大家在收获的同时,也能理解测试工程师在工作中所要面临的一些痛苦。
第3篇高精尖技术(第6~9章)
任何一个网站项目,似乎都绕不开“缓存”这个神奇的空间。缓存用得好,可以加快系统的反应速度。如果缓存用得不好,不仅用户体验差,还可能造成服务器宕机。第6章就分享了如何使用缓存。
每个程序员都有一个全栈的梦想,而前端又是全栈中必不可少的一部分,第7章讲解了如何使用EasyUI来搭建前端。
现在越来越多的电商网站都会做一些抢购或促销活动,当然这就使得网站不可避免地面临高并发。如何处理高并发呢?第8章将通过讲解消息队列,来说明如何应对高并发。
微信已经成了人们生活中必不可少的一部分。在2017年3月27日这一天,微信小程序也对个人用户开放了。我们如何把“晋商卡”挂到微信公众平台上,又如何开发微信小程序呢?这些问题都将在第9章中解决。
《大话代码架构(项目实战版)》读者对象
l对代码架构感兴趣的初学者;
l对代码架构感兴趣的爱好者;
l高校学生和相关培训学校的学员;
l初入职场需要提高开发水平的开发人员。
因为书中所有的代码都以C#语言来描述,所以《大话代码架构(项目实战版)》读者如果有一定的C#语言基础更佳。
《大话代码架构(项目实战版)》配套资源
为了方便读者高效地学习,《大话代码架构(项目实战版)》特意提供了以下配套资源:
l《大话代码架构(项目实战版)》源代码文件;
l《大话代码架构(项目实战版)》涉及的一些开发工具的安装包。
《大话代码架构(项目实战版)》作者
《大话代码架构(项目实战版)》主要由田伟(就是笔者MOL)和郎小娇主笔编写。其他参与编写的人员还有李小妹、周晨、桂凤林等。
读者阅读《大话代码架构(项目实战版)》时若有疑问,可以发邮件到hzbook2017@163.com以获得帮助。









