作者 郭晓刚 发布于 2007年12月29日 上午10时13分
Architecture
主题
InfoQ声明
架构社区是年轻的InfoQ里面最年轻的一个社区,诞生只有半年时间。在“架构”这个意思不是很明确的大词背后,我们倒是做了不少实实在在的讨论。
其实在这个社区里没有什么“新闻”,这么说的原因是,一方面报道的内容多半不是新闻事件,而是言论交锋;另一方面讨论的内容也常常是把我们习以为常的旧东西再拿出来重新剖析。而且讨论的问题也不见得会有一定的答案,不过我们的目的也不是寻找公式化的回答,我们要的是想清楚每个选择的利弊和权衡。
要是能让开发者反思,再反思,这个社区的目的也就达到了吧。
1.DSL:单一语言开发的终结者?
许多年以来,对于软件项目,企业软件开发的主流实践一直都倾向于在单一的通用编程语言上进行标准化,从而使得Java和C#成为今天编程语言的主流选择。随着越来越多的目光开始投向DSL,也许我们的前脚已经踏在了一道新的门槛之上,向前望去,我们会发现在软件项目中采用多种语言已经成为一个标准,但80年代和90年代初出现的问题不会重现。
点评:DSL离“领域专家说的语言”还很远,“让领域专家去编程”已经基本被MDA、BPM的实践所否定。不过,我们已经从为工作选择合适的工具、框架,进步到了为工作选择合适的语言,不管OOP、AOP、FP……通通为我所用。再说,XML配置、连贯接口这些不是很像语言的DSL,我们已经用很久了吧。
2.真正的线性可伸缩性需要新的模式和中间件架构吗?
Nati Shalom声称已有基于分层的中间件不能用于真正的线性可伸缩性。他提出了新的基于自给自足处理单元的中间件栈(middleware stack)作为替代,它支持分区/向外扩展(scale-out)模型。几年前,微软的Pat Helland就提出了某种事务性模式及形式描述,它们可被用在被他称为准无限可伸缩的系统中。
点评:Web 2.0一流行,可伸缩性就很敏感了。数据分区、缓存共享、读写分离……一直到极端的完全无状态模型,那么多努力的成果让投入/产出的曲线多少变直了一些。棘手的事务问题这此也给出了不错的解决方案。不过,成天可伸缩性挂在嘴边的人,还是要先问一下自己,到底什么是可伸缩性。
3.API设计的“不可承受之轻”
API的设计影响着所有的开发者。有些API用起来很舒服,而有些则用起来让人焦头烂额,更有甚者,让人完全丧失了继续用这套API来做开发的勇气。但它们的区别在哪里呢?是哪种品质会让一套API易用而另一套复杂难解?ACM Queue最近刚发布了Michi Henning的一篇有关API设计的文章,在文中作者对这些方面进行了分析。
点评:API设计是一件基本但重要的事情,但好像我们都没有这方面的系统教育。
4.软件架构的十大错误
IASA成员Eoin Woods发表了一篇文章讲述他所认为的十大软件架构错误——常常要碰得头破血流才会得到的一些教训。
点评:每个人都犯过的错误,也还要再犯的错误。希望下次再犯的时候,知道自己错在哪里就好了。这样想太悲观了吗?
5.一图胜千言?
一图总是胜过千言?Dean Wampler在新文章《为什么我们要写代码而不只是画图就好》中主张,在软件行业里,前面那句话通常要反过来说才对。
点评:不管图形还是文字,说到底还是要看它的抽象程度适合不适合要表达的内容。
6.为灵活性和健壮性而设计:异步消息模型、OOP和函数式编程
按照Pragmatic Programmers的说法在OOP中最好避免围绕返回值来设计。Michael Feathers认为最好同时也使用异步消息模型,这样有助于提高适应性和健壮性。这样的做法与Erlang的模型相吻合,虽然违背了一些纯函数式编程的原则。
点评:异步、无状态模型的优点很多人都看得到,但要是谈到在具体的用例中采用异步、无状态模型,很多人就说“这件事情本质上就是同步的”——真的吗? 还是你需要好好换一下思维方式?
7.RDBMS是不足够的
在服务的世界里,RDBMS并不能适合所有的问题。面向文档的分布式数据库(Document Oriented Distributed Databases)试图解决该问题,并为存储文档再提供一种新途径。CouchDB(以Erlang编写)正从Alpha阶段日渐向前发展。InfoQ找来了Anthony Eden,他正在开发的RDDB用Ruby实现了同样的概念。
点评:RDBMS的地位难以撼动,但在面对分布式服务的时候,有必要打破一些RDBMS的规条,才能满足性能和可伸缩性的需求。这又是一次新的尝试。
8.Duck Typing与协议 vs. 继承
最近在RubyTalk邮件列表中发生了关于何时使用is_a?以及何时使用respond_to?的争论。这强调了这样一种状况:对象可以都响应同样的接口,但是却没有共同的超类。让我们来分析下这次争论,然后看看诸如Smalltalk、Erlang和Scala其他这些编程语言是如何解决的。
点评:最基本的OO概念也会被翻出来“学而时习之”。跨出语言的局限才能把概念的本质看得更清楚一点。
9.依赖注入是否值得?
在博客的世界里进行了一场关于使用依赖注入之优点和缺点的有趣讨论。论题是:依赖注入是否真的值得?
点评:用惯用熟的DI,为什么要用它倒成了问题。且不管反方的观点成不成立,让我们再想清楚,为什么要用依赖注入——松耦合。
10.预先设计的大架构——过早考虑伸缩性之一例?
请看看博客作者们对“过早考虑可伸缩性”这个问题的回应。问题是——在设计应用程序的时候,应该花多少精力去为伸缩性打基础?
点评:伸缩性不是优化,它是一项需求,我们从一开始就应该考虑它。 对未来的规模估计不足,那到时候就要返工,可能使业务的发展停滞;如果估计得过分,那又是浪费,而且可能错失市场时机。理论上是存在一个投入/产出比的拐点,可是它在哪里呢?
分享到:
相关推荐
InfoQ作为一个知名的IT资讯平台,一直致力于分享高质量的技术信息和实践经验,帮助开发者和架构师们保持对行业动态的敏锐洞察。 在《Architect-200907-by-InfoQ.pdf》这期电子杂志中,我们可以预见到涵盖了以下几个...
infoq 架构师8月刊 infoq 架构师8月刊 infoq 架构师8月刊
《infoQ架构师月刊上部》集合了2008年至2012年间infoQ平台上关于架构领域的精华文章和讨论,旨在为IT行业的专业人士,尤其是架构师们提供宝贵的参考资料。InfoQ是一个全球知名的软件开发资讯平台,以其深度、专业和...
InfoQ中文站在不到两年半的时间内迅速崛起,获得了全球中高端技术人员的认可,其成功的关键在于专注于企业软件开发领域,避免了内容的过度泛化。这种专注性使得InfoQ能够在特定领域内提供深度和高质量的信息,从而...
infoq 架构师 2019年月刊收集 infoq 架构师 2019年月刊收集
最后,从文档提供的信息来看,InfoQ架构师月刊不仅仅是一个内容发布平台,它还鼓励读者提供反馈,并且提供了内容合作和商务合作的联系信息,表明了该刊对于建立技术社区和促进知识分享的积极态度。 综上所述,InfoQ...
这与InfoQ中文站仅关注企业软件开发领域的策略一致,这也是其能够在短时间内获得全球中高端技术人员认可的原因之一。 ### 细节决定成败 文章多次强调“细节决定成败”。无论是技术社区的内容编排、版式设计,还是...
《InfoQ_ArchSummit全球架构师峰会_Day1_rebuilt》是InfoQ组织的一场专注于架构设计和技术领导力的盛会。这场会议汇集了全球顶尖的架构师、技术领导者和行业专家,共同探讨和分享了关于软件架构设计的最新趋势、最佳...
《InfoQ架构师2016合集》是面向IT专业人士,尤其是架构师群体的一份珍贵资源,集合了2016年InfoQ平台上的众多精彩文章和讨论,旨在分享和探讨当时的最新技术和最佳实践。InfoQ作为一个全球知名的IT资讯网站,其内容...
《infoQ架构师月刊下部》集合了2013年至2017年8月期间在infoQ平台上发布的关于架构领域的深度文章和专题,是广大架构师和IT从业者学习、研究架构技术的重要资源。infoQ作为一个全球知名的IT技术交流平台,其内容覆盖...
J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊J:\InfoQ架构师月刊
ArchSummit北京2019大会演讲 PPT 分共三个压缩包 2019年InfoQ架构师峰会ppt.z01 2019年InfoQ架构师峰会ppt.z02 2019年InfoQ架构师峰会ppt.zip
通过对2012年11月的INFOQ架构师期刊的分析,我们可以看到云计算、企业安全、企业架构以及最新的技术趋势等方面的重要内容。这些文章不仅提供了实用的技术指导,也为读者带来了对未来技术发展方向的思考。无论是对于...
- **目标受众**:InfoQ中文站明确将其新闻价值观的核心受众定位为架构师、项目经理、团队领导者以及高级开发人员。这一定位反映了对于这些群体的专业需求的高度关注。 - **角色定位**:作为一个技术社群的镜像,...
- **发布日期**:InfoQ中文站于2007年3月28日正式对外发布,至今已经走过了一年的历程。 - **内容积累**:在过去的一年里,InfoQ中文站不仅尽力将国外最新的企业软件开发领域的资源介绍给国内的架构师,而且还积极...
在InfoQ ArchSummit全球架构师峰会上,Day1的主题涵盖了架构生长、搜索技术和视频处理等关键领域。这些话题对于理解和提升现代IT架构的设计、优化和实施至关重要。 首先,我们来探讨“架构生长”这一主题。架构生长...
《InfoQ架构师杂志2014合集》是一份极具价值的资源,它集结了2014年全年InfoQ发布的关于软件架构设计的深度文章和访谈,为专业人士提供了丰富的学习材料。InfoQ作为业界知名的在线媒体平台,一直致力于分享最新的...