随想:没有完美的架构,有舍有得

在过年的很多年我一直在追求一个完美的架构,系统对第三方组件没有强依赖,可替换。这么多年过去了,我在很多项目中尝试和实现了这个基本理念,具体表现在对IoC,ORM等等的抽象处理。有趣的是我发现不单是我有这种偏好,我发现身边很多工作多年的高级开发人员也同样有这种偏好。几年前在Travix开发API的时候,当时的某个架构师同样对IoC进行了抽象处理,实现了Unity,过去的很多年我对这种实现一直是站在赞同的一边。Umbraco V5中也同样看到了这个实现让我欣慰 :)。但慢慢的我发现有时不必要的抽象会给项目带来很多不必要的复杂度,牲牺了功能与特性,而且还无法完成真正意义上的可替换,何苦呢。具体的例子,比如ORM,抽象EntityFramework与NHibernate本身就是个伪命题,系统基本是不可能对ORM进行切换,而且很多实现还在IRepository中提供了IQueryable,两个ORM对IQueryable的支持差距还是很大,有一天你放弃了对ORM的抽象会发现一切是那么的美好。Orchard的实现在一定程度上也符合这个观点。

时间: 2024-11-10 16:11:23

随想:没有完美的架构,有舍有得的相关文章

Android架构思考:没有完美的架构,只有合适的架构

app发展到一定规模,就面临方法数超过65535的问题,前路怎么走,是像美团或者微信那样拆分成多个dex还是像淘宝,携程那样拆成多个bundle,怎么向前走? 没有完美的架构,只有合适的架构.但是类似电商业务的app还是比较适合做多bundle方案,因为一个app中包含很多业务,而且业务都在快速迭代,除了核心链路,业务之间没有直接联系,这些业务都是由各个小团队负责,拆分成多bundle以后,加快了编译速度和启动速度,还可以做懒加载,按需加载,动态部署,做多bundle方案需要团队对app启动过程

架构随想

软件架构就是在软件开发领域,实现软件系统目标的一个架构.当一个人新进入一个系统的时候,首先要摸清的就是这个系统的架构,从形式上去理解内容,从分析其部分到综合其整体. 一个软件系统是为了满足特定的功能需求.正如一个组织部门是为了完成一项事业.这都是在成事的层面.背后则是真正的推动力量必然是人, 是利益相关者.在政治上,是领袖,领袖的联盟成员即领袖的班底,各级官僚,老百姓等.在软件系统的利益相关者,用户客户,项目经理,开发.运维.甲方乙方各自是一个系统,又因为一个软件系统联结成为一个共同的系统. 为

专访李智慧:架构是最高层次的规划和难以改变的决定

http://www.csdn.net/article/2015-09-21/2825759 李智慧(微博.LinkedIn),目前任职宅米网CTO,曾供职阿里巴巴与英特尔亚太研发中心,从事大型网站.分布式系统.大数据平台方面的研发工作.著有<大型网站技术架构 核心原理与案例分析>一书. CSDN:你是如何走上技术这条路的?谈谈毕业这些年来在工作中的收获和体验. 李智慧:我大学学工业自动化,在校的时候一个偶然的原因在图书馆看到一本C语言编程的书,从此迷上编程,但是毕业后从事的却是仪表工程师的工

Android应用架构

Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play Services 我与Ribot Team一起做Android应用已经超过三年了.这段时间,我们所构建的Android应用架构和技术也在不断地演变.本文将向您阐述我们的经验,错误以及架构变化背后的原因. 曾经的架构 追溯到2012年我们的代码库使用的是基本结构,那个时候我们没有使用任何第三方网络类

一个架构师谈什么是架构以及怎么成为一个架构师

新年新事,来点轻松的话题.我们调剂一下后再继续讲CAS SSO单点登录吧因为后面的内容全部和代码有关,大家会觉得枯燥.所以今天我们先来点"番外篇",讲讲什么是架构师,什么是架构这个永恒的话题吧.此篇源出自我在公司内部写的一个PPT,它是用于在公司内部向广大技术人员做普及用的一个资料,而CSDN这边的编辑不支持图文混排的效果,因此一些章节我就直接截取自我的PPT里的内容了,这样可能对大家在阅读上会显得更加生动和活泼一些吧. 架构的定义 先来看看软件架构的普遍定义吧. 一个程序和计算系统软

对.Net系统架构改造的一点经验和教训

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为Linux本身足够的开放性,更因为围绕传统Unix/Linux社区有大量的成熟开源解决方案,覆盖了网站应用扩展的方方面面. 我记得十几年前第一波互联网浪潮的时代,采用Windows平台ASP架构的大型网站是非常普及的,而如今采用Windows平台.net架构的大流量知名网站已经凤毛麟角了.很多

今日头条架构演进之路

今天给大家分享今日头条架构演进,前面几位讲师讲了很多具体的干货,我的分享偏重基础设施及架构思路的介绍,我们想法是通过提供更好的基础设施,帮助架构做更好的迭代. 从架构的角度,技术团队应对的压力最主要来自三方面: 服务稳定性.接口的稳定性,让服务更可靠: 迭代速度.迭代速度对于大公司来讲相对没那么重要,规模比较大,生存压力相对小一点,但相对中型小型公司来讲,迭代速度是必须要保证的,时间窗也是一个决定能否成功的重要因素: 服务质量.主要关注用户满意度,它也是一个特别重要的 topic. 今日头条发展

hibernate随想

//学习hibernate的随想   无关细节  整体架构的感悟     不定时持续更新 1.hibernate的优点之一:对于简单.基础的操作相当于代码自动生成器.经常使用到的数据库操作都是简单,基础的,麻烦的只是把属性和值给对应起来,而hibernate以类为操作单位,而类的成员结构是固定的,所以设定好对应关系,便可对应,从而自动生成sql语句. 2.hibernate的一对多符合人的逻辑,对于使用者,创建一,把多填充进去人之常理,却不知背后其实是两张表,那 多 是级联填充入数据库的.而多对

iOS中的两种主要架构及其优缺点

凡是程序的开发者,应该对程序的架构都不陌生.一个程序的架构的好坏对这个程序有着非常重要的作用.今天我们来看一下iOS开发中用要的两种主流的程序架构.这个过程中我们主要以例子的形式展开. 我们来看第一种架构:如下图所示: 这种程序的架构主要原理是创建了一个导航控制器来控制页面之间的切换.这种架构一般把主界面作为导航控制器的根视图控制器.在上图所求的程序架构中,主界面管理了四个界面:微信界面,发现界面,联系人界面,关于我界面.如果程序是第一次运行的时候,进入用户指引界面,然后进入登录界面,输入账户名