起初有 SOA 原则,随后反原则接踵而至。当 SOA 架构师和开发者们还在不断探讨它们到底是什么以及如何使用它们之时,Steve Jones 在这篇新博客中又提出了一个新概念——非原则。Jones 认为,在建设 SOA 的过程(或任何软件实施的过程)中,你往往要关注:
- 原则——哪些是好的以及如何进行评判。
- 反原则——哪些是不好的以及如何进行评判。
- 无原则——哪些是真正不需要关心的……
Jones 在博客中解释到:
……[尽管] 非原则……听起来有点怪……但是,这些年他却给我带来了很多好处。一方面,原则关心的是你该做什么,反原则关心的是你不该做什么;另一方面,非原则……指的是你不需要在乎的东西。在做决定的时候,你显式地定义哪些是不重要的或不需要考虑的……在对工作进行评估时,你参照原则和反原则判断好与不好,而通过非原则你可以排除那些不需要考虑的方面。
将这句话翻译成一种通俗的描述——非原则是对特定的实现显式地定义一些与目标无关的方方面面。非原则的引入通过忽略哪些不在既定目标之内的质量需求,提供了能够按时且按预算交付项目的能力。Jones 认为:
……非原则与特定环境非常相关,并且描述的是记录那些从编程角度看错误的至理名言。非原则减少了争论,取消了无意义的会议,从而节省了你的时间……非原则显式地描述哪些是应被忽略的,他们并不关心好或者坏,因为你根本不会去关心它们……
为了证明自己的观点,Jones 列举了好几个来自于他所参与的项目中的案例,在这些项目中非原则的使用帮助了项目的成功。
虽然对于 SOA 实施中的原则与反原则的重要性很很难定论,非原则的引入似乎有点作秀的嫌疑。其问题是,在实现中并不存在非原则,而只有实施目标以及相应的架构决策。就拿 Jone 所举的第一个例子来说吧,“性能不是问题”,其意思彬飞性能不重要,而是性能并不是实施中最种重要的架构目标,但通常每个给定的实现还是会有一个必须要满足的性能的约定(尽管实际性能可能会比这还要高)。他的第二个例子——“数据质量不重要”——同样,它的含义并不是一个新系统可以有不准确的数据,而其真正的含义应该是数据质量的提高并不是该项目的直接目标。
理解一个项目实施的整体目标并作出合理的权衡是极其重要的,但这似乎并不足以形成一个全新的分类——非原则。相反,需要我们注意的是,对于一个给定的项目实施,哪些是真正重要的并需要我们重视的方面。
评论