zoukankan      html  css  js  c++  java
  • 随想:没有完美的架构,有舍有得

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

  • 相关阅读:
    POJ 1163 状态转移
    POJ 1143 记忆化搜索+博弈论
    POJ 1083
    POJ 1018
    HDU 3572 Dinic
    HDU 3549 Dinic
    配置JDK环境变量配置及path和classpath的作用
    frameset 框架整体退出登录的问题
    java计算时间差及比较时间大小(转)
    Android—Http连接之GET/POST请求
  • 原文地址:https://www.cnblogs.com/zhangpengc/p/5138184.html
Copyright © 2011-2022 走看看