购买链接:http://www.china-pub.com/197209

 译者序

做.NET 或是微软平台的架构设计既简单又困难。说简单的理由是,微软提供的产品往往考虑全面,容易上手,并且文档丰富。说困难的理由是,微软往往没有什么权威性的“指南”推荐说A方面可以用X 技术,B 方面可以用Y 技术(比如JAVA 开发流行的Struts2+Spring+Hibernate 框架),甚至更大的问题是(特别是前几年)微软没有提供针对一些常见技术(比如ORM/MVC/AOP)的“官方”实现。这就使得.NET 平台的一些系统的架构五花八门,有的架构师愿意自己写一些轻量级的实现,有的则愿意使用从JAVA 移植过来的一些实现,比如NHibernate、Spring.NET 等。
而现在,《微软应用架构指南》这本书针对前面提到的问题提供了一个不错的答案,它针对不同的技术点或应用场景或应用程序的类型,给出了一些微软平台(甚至开源界)可用的或是推荐的一些技术或框架,还介绍了何时适用这些技术和框架及在处理这些点的时候应该考虑的问题。更重要的是,微软在近几年确实针对很多技术提供了微软自己的实现,比如ORM 框架ADO.NET EntityFramework、SOA 框架WCF、MVC 框架ASP.NET MVC,等等。对于那些对框架的选择头疼(想引入非官方框架却又怕遇到难以解决的问题)的技术人员和架构师来说确实是好消息。
在翻译和阅读本书的过程中,译者有几点体会和读者一起分享。
(一)如何使用本书?
作者不止一次提到本书是一个大纲而不是大全,本书的重点在于介绍架构设计的方法学;架构设计中要考虑哪些方面的问题,这些问题有哪些技术可以解决或实现;微软平台有哪些应用程序类型,这些应用程序有哪些技术可以实现;应用程序怎么进行拆分,拆分后的每一部分可以由哪些技术来实现。也就是说本书主要解释的是有哪些“东西”以及这些“东西”可以由什么来实现这两个问题。对于后者,由于篇幅的关系只能列出技术或方法的名字然后提供一个参考链接。
我们知道,对于架构设计来说,其中包含的技术、框架、原则不太可能靠几小时或几天来彻底了解透彻,应该通过阅读本书来了解我们手里有哪些“东西”,这些“东西”适合什么样的应用场景。如果在之后架构设计的过程中你发现可以并且适用这个技术,可以进一步深入阅读和研究这些扩展资料。个人认为应该这样阅读本书:首先把自己不知道的知识点通读补全,然后可以把本书当作一本参考书,在实际架构设计的过程中根据自己的记忆能回忆起“这个问题好像在书中提到过可以用XXX 来解决”,那么再拿起本书找一些书中列出的参考链接或在网上找一些参考资料进一步学习。
(二)读不懂怎么办?
译者认为本书针对的是架构师和有架构经验的开发人员,如果读者刚接触程序开发或从未对完整的系统或是系统的一个模块进行过架构设计(所谓架构设计可以理解为设计一个系统中需要哪些组件及各个组件之间如何协同工作,以及确保这个系统达到预计的质量和需求需要做的工作),那么确实会比较难理解本书,在经过了自己的实践尝试之后回头再阅读本书您会发现不再是完全看不懂了,而是可以知道自己要了解的那部分内容可以在哪里找到答案。其实,即使是经验丰富的开发人员和架构师也可能会遇到不理解的内容,因为微软平台的技术是如此广泛,我们的工作往往关注的是某个平台的开发,比如桌面应用程序、移动应用程序、网站等,而不会面面俱到,因此您完全可以不必介意读不懂哪部分内容,有的只需要了解即可。
对于每一个方面,本书会列出许多需要考虑的要点,需要实现的步骤,能使用的技术。列出的这些条目源自许多技术专家在针对这方面进行架构设计时积累的经验,如果读者进行过这样的考虑甚至是尝试,就会容易理解作者想表达的意思,甚至会在读到这个条目后暗自叫好。译者就有这样的体会,由于自己做过一些横切关注点的框架实现,在阅读横切关注点一章时,看到和自己的思考吻合的一些条目时,才能体会到小小的一行条目包含了作者大量尝试后的经验和体会(十几个字归纳了译者经过几小时甚至几天的实践得出的结论)。相反,对于一些自己不熟悉的技术,确实也难以彻底理解每一个条目。因此,如果读者正在从事相关架构设计或开发的话,可以再仔细阅读每一部分内容下的一些子条目,或许你可以有新的发现。
(三)如何进行架构设计?
如何进行架构设计是本书讨论的重点,译者认为最主要的是权衡、渐进两点。所谓权衡,就是我们在进行架构设计的时候首先需要找出我们的目标包括哪些因素,每一个因素又需要达到怎么样的指标;然后根据这些因素的重要程度结合我们实际情况(软硬件、成本、资源)等等权衡得出一种比较适合的架构。所谓渐进就是架构设计和软件开发相似,应该是一个迭代的过程,每一个系统都会经历从少到多,从简单到复杂的过程,我们的架构往往只需要满足当前的负载即可,过于超前的考虑会带来不必要的成本,随着时间的推移,我们可以通过不断演化架构来满足新的功能和负载需求。其次,在为一个大型系统做架构设计的时候,可以先考虑把这个架构划分成独立的关注点,然后针对每一个点,分别进行方案制定、技术评估、开发测试等过程,最后把每一个点的方案合并在一起组成一个完整的架构。另外,对于架构设计中引入的技术根据项目的性质可以采用不同的策略,如果是一个内部项目,面向少量用户并且不会是一个长期的项目,那么可以考虑引入一些新技术、新框架,如果是一个外部项目,面向大量的访问并且需要保持数年的稳定,那么一定要慎用一些未经验证的新技术,慎用一些我们不能掌控的框架,否则一旦出现问题我们很难在短时间解决。
本书的前半部分(从第1 章开始到第19 章)由我翻译,后半部分(从第20 章开始到最后)由我的同事高翔翻译。由于时间和能力的关系,翻译中肯定有很多不足,欢迎大家提出自己的意见和建议。同样欢迎读者和我探讨有关架构和设计的问题,我的邮箱是yzhu@live.com。
朱晔
2010年10月

转载于:https://www.cnblogs.com/lovecindywang/archive/2010/12/03/1895517.html

微软应用架构指南(第2版)出版相关推荐

  1. 《微软应用架构指南》前言

    前言 Preface 在那些搞笑的开发人员之间有个常讲的老玩笑,你只要用"视情况而定~~"回答技术问题,别 人就会认为你是一名架构师. 问:"我解决方案中实现身份验证和授 ...

  2. 速度来!《软技能:代码之外的生存指南 (第2版)》送书4本

    最近鱼哥和一位朋友聊天,他分享了一些他的苦恼-- 说起来这位朋友,他是985高校的本科生,竞赛保送,算是同辈中的佼佼者了.这些年闷头搞技术.做需求,头发白了不少,牙也被烟熏黑了,可职级卡在P7快八年了 ...

  3. 送5本《Kafka权威指南》第二版

    文末送书 科学家们每一次发生分歧都是因为掌握的数据不够充分.所以,我们可以先就获取哪一类数据达成一致,只要获取了数据,问题也就迎刃而解了.要么我是对的,要么你是对的,要么我们都是错的,然后继续. -- ...

  4. 《CWNA官方学习指南(第3版):认证无线网络管理员PW0-105》

    <CWNA官方学习指南(第3版):认证无线网络管理员PW0-105> 基本信息 原书名:CWNA: Certified Wireless Network Administrator Off ...

  5. 徐雷:做最好的自己!写在《mongodb实战》第2版和《WCF服务编程》第4版出版之际...

    做最好的自己:写在<mongodb实战>第2版和<WCF服务编程>第4版出版之际.很久之前我写过一个类似的文章. 这篇文章写给过去的10.也写给未来的自己. 你是否对自己的未来 ...

  6. [转自microsoft]NET 数据访问架构指南,-数据库连接的测试.即监视链接池化

    NET 数据访问架构指南 Alex Mackman, Chris Brooks, Steve Busby, 和 Ed Jezierski 微软公司 2001年10月 概述:本文提供了在多层.NET应用 ...

  7. Windows Azure 架构指南 – 第 1卷 发布

    公告:本博客为微软云计算中文博客的镜像博客.部分文章因为博客兼容性问题,会影响阅读体验.如遇此情况,请访问原博客. 正如 David Aiken 最近在其博客中提到的, Microsoft Patte ...

  8. matlab语法手册下载,MATLAB及其在理工课程中的应用指南 第4版.pdf

    作 者 :陈怀琛 出版发行 : 西安:西安电子科技大学出版社 , 2018.02 ISBN号 :978-7-5606-4737-1 页 数 : 262 原书定价 : 39.00 开本 : 16开 主题 ...

  9. 微软发布架构师期刊阅读器

    微软发布架构师期刊阅读器 转载:http://www.infoq.com/cn/news/2007/11/aj-reader 作者 Hartmut Wilms译者 胡键 发布于 2007年11月29日 ...

最新文章

  1. apache的prefork和workder模式
  2. 方形物体绕中心旋转的扭力_三维旋转
  3. 坚实原则:开放/封闭原则
  4. 爱默生E系列服务器机柜托盘,艾默生通信电源PS48300-3B/1800 一体化室内机柜
  5. C和汇编混合编程--------函数调用后ebp、esp值问题
  6. activiti jbpm相关资源
  7. telnet 功能启用并测试端口是否正常
  8. springboot日志的实现方式(两种log4j2.properties和log4j2.yml)
  9. user_tab_columns是什么
  10. 设计模式:原型模式(C++)【克隆羊多莉】
  11. 同一台服务器上部署多个Tomcat的配置修改方法
  12. 20050405:什么都要会啊
  13. ASCII码,hex编码,String字符串相互转化及原理
  14. 详细解读windows无法ping通虚拟机的原因
  15. 修改数据文件和日志文件路径
  16. win10下用ffmpeg推流拉流
  17. html中表格table冻结行和列
  18. WPF MVVM Page 页面导航实例
  19. 怎么查询oracle归档模式,查看oracle数据库归档模式
  20. 材料分享主题一:如何向上级汇报部门/组织架构

热门文章

  1. 自己封装线程(Demo)
  2. 小程序文本溢出显示省略号(单行/多行)
  3. 题目:两个排序数组的中位数(C++)
  4. java 11-7String类里的方法的一些案例
  5. window之hosts
  6. 织梦channel标签currentstyle样式无效不起作用
  7. 关于判断checkbox选中问题
  8. DB2中导出数据库的所有DDL脚本
  9. Hive常用的SQL命令操作
  10. 【Groovy】集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )