有必要定义SOA的非原则吗?

2010 年 5 月 26 日

起初有 SOA 原则,随后反原则接踵而至。当 SOA 架构师和开发者们还在不断探讨它们到底是什么以及如何使用它们之时,Steve Jones 在这篇新博客中又提出了一个新概念——非原则。Jones 认为,在建设 SOA 的过程(或任何软件实施的过程)中,你往往要关注:

  • 原则——哪些是好的以及如何进行评判。
  • 反原则——哪些是不好的以及如何进行评判。
  • 无原则——哪些是真正不需要关心的……

Jones 在博客中解释到:

……[尽管] 非原则……听起来有点怪……但是,这些年他却给我带来了很多好处。一方面,原则关心的是你该做什么,反原则关心的是你不该做什么;另一方面,非原则……指的是你不需要在乎的东西。在做决定的时候,你显式地定义哪些是不重要的或不需要考虑的……在对工作进行评估时,你参照原则和反原则判断好与不好,而通过非原则你可以排除那些不需要考虑的方面。

将这句话翻译成一种通俗的描述——非原则是对特定的实现显式地定义一些与目标无关的方方面面。非原则的引入通过忽略哪些不在既定目标之内的质量需求,提供了能够按时且按预算交付项目的能力。Jones 认为:

……非原则与特定环境非常相关,并且描述的是记录那些从编程角度看错误的至理名言。非原则减少了争论,取消了无意义的会议,从而节省了你的时间……非原则显式地描述哪些是应被忽略的,他们并不关心好或者坏,因为你根本不会去关心它们……

为了证明自己的观点,Jones 列举了好几个来自于他所参与的项目中的案例,在这些项目中非原则的使用帮助了项目的成功。

虽然对于 SOA 实施中的原则与反原则的重要性很很难定论,非原则的引入似乎有点作秀的嫌疑。其问题是,在实现中并不存在非原则,而只有实施目标以及相应的架构决策。就拿 Jone 所举的第一个例子来说吧,“性能不是问题”,其意思彬飞性能不重要,而是性能并不是实施中最种重要的架构目标,但通常每个给定的实现还是会有一个必须要满足的性能的约定(尽管实际性能可能会比这还要高)。他的第二个例子——“数据质量不重要”——同样,它的含义并不是一个新系统可以有不准确的数据,而其真正的含义应该是数据质量的提高并不是该项目的直接目标。

理解一个项目实施的整体目标并作出合理的权衡是极其重要的,但这似乎并不足以形成一个全新的分类——非原则。相反,需要我们注意的是,对于一个给定的项目实施,哪些是真正重要的并需要我们重视的方面。


查看英文原文: Should We Define SOA Non-Principles?

2010 年 5 月 26 日 09:34621
用户头像

发布了 184 篇内容, 共 64.7 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

LeetCode题解:24. 两两交换链表中的节点,迭代,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

JVM系列之:再谈java中的safepoint

程序那些事

Java JVM JIT safepoint

Google Protocol Buffer 学习笔记

半亩房顶

protobuf

CDN百科10:快速上手阿里云DCDN全站加速,最新配置与购买优惠教程

巨侠说

CDN 直播 网页加速

人生修炼秘籍

xiaoboey

时间管理 人生修炼 知行合一 熵增 时间复利

联盟链有自己的路要走

Leonbond

区块链 联盟链 公有链

企业网站搭建避坑指南

姜奋斗

网站 新手指南 企业 网站搭建 避坑

设计模式之假如需要一百万个对象

架构师修行之路

有它的加持,单机玩转百亿大数据不是梦!

易观大数据

设计模式之——单例模式你真的会吗?

诸葛小猿

设计模式 单例模式 Singleton 饿汉式 懒汉式

数据处理能力相差 2.4 倍?Flink 使用 RocksDB 和 Gemini 的性能对比实验

Apache Flink

flink

《SSM深入解析与项目实战》目录与说明

谙忆

SQL的三十而已—SQL30问

大唐小生

sql 技术人生

2.1 类加载器、 双亲委派模型 -《SSM深入解析与项目实战》

谙忆

ChaosBlade:从零开始的混沌工程(五)

郭旭东

Kubernetes 云原生 混沌工程

菊长说丨一文读懂MySQL4种事务隔离级别

华为云开发者社区

MySQL 数据库 事务隔离级别 事务 华为云

设计模式中的单例模式并不完美

架构师修行之路

设计模式 单例模式 23种设计模式 高并发系统设计

1.1 了解Spring框架 -《SSM深入解析与项目实战》

谙忆

1.2 了解MyBatis -《SSM深入解析与项目实战》

谙忆

InnoDB存储引擎简介

Simon

MySQL innodb

计算机网络基础(十五)---传输层-TCP协议详解

书旅

计算机网络 网络 协议栈 协议族

Java项目如何分层

老胡爱分享

分层架构 项目

【译】代码中如何写出更有意义的命名

Jackey

代码质量

七的婚姻生活

徐说科技

操作系统和并发的爱恨纠葛

cxuan

Java 并发

Jessie’s产品经理系列1-基础能力篇

架构5班杨娟Jessie

产品经理 能力模型

Web 开发必须掌握的三个技术:Token、Cookie、Session

华为云开发者社区

HTTP Token web开发 session Cookie

微服务架构下你的数据一致了吗?

码猿外

架构 微服务 数据一致性

C/C++陷阱与套路,当年就是折在这些地儿…

华为云开发者社区

c++ 设计 编辑 程序 陷阱

视频会议专线部署不会?别急,我教你

华为云开发者社区

网络 网关 华为云 高清视频 welink

秒懂云通信:如何使用阿里云号码认证服务(小白指南)

巨侠说

云通信 通信云 号码认证

有必要定义SOA的非原则吗?-InfoQ