啥叫“可移植性”?可移植性就是当消费者对供应商的服务不太满意时,可以换用另一个供应商,并且不需要调整自己接受服务的方式。典型的例子有:JAVA程序 V.S 操作系统,应用程序 V.S. 数据库
观察这些例子,可以发现实现可移植性的关键是:存在着一个中间层适配器,将供应商的接口适配为消费者想要的服务。供应商变了,适配器也要换。把java程序从windows迁移到linux,就需要换用linux下的jvm;把数据库从sql server换成oracle,就需把jdbc驱动换成oracle的驱动;而对应用程序开发人员来说,常常需要考虑的是,当服务组件从EJB换成Web Services时,应用层的代码要怎么改? 解决办法和上面一样,在一开始设计的时候就要在应用层和服务层之间设计一个适配器接口以适配服务组件的接口,当服务组件更换时,重新写一个类实现这个适配器接口就可以了,应用层代码本身不需要改动。
实现可移植性还有一个约束:消费者所需的服务必须是独立于任何供应商特性的。如果在应用层的数据库查询代码里用了“select top 10 ….from …”,那么这个系统就只能用在sql server上了