使用即插即用架构在Saas中进行定制

存在许多可应用于实现产品技术方面的设计模式,体系结构和设计概念。 例如,我们拥有MVC体系结构,可将应用程序的视图,控制器和模型隔离开。 我们有一个工厂模式,用于定义如何创建对象等。 然而,所有这些都将自身限于产品的技术方面,而没有明确的预定义架构或模式来设计和构建“业务功能”。 我想在本文中描述的即插即用体系结构是“功能体系结构”,它定义了一种模式来设计业务功能以充分利用其功能。

模块化体系结构是一种设计技术,其中程序的功能分为独立的,可互换的模块,从而每个模块都包含执行所需功能的一个方面所需的所有内容。 通常,在模块化体系结构中,分离是基于技术方面进行的。 例如,为数据库交互创建了一个模块,为日志记录创建了另一个,依此类推。 模块化体系结构的优点是您可以轻松替换或添加组件,而不会影响应用程序的其余部分。 模块清楚地定义了用于与模块交互的接口,并且这些接口在编译时与其他模块绑定在一起。

如果我们可以将此体系结构扩展到“业务功能”,而不仅仅是将其限制在产品的技术方面,该怎么办? 我们已经以模块化的方式设计了“业务功能”。 但是,我们不会有意识地将其视为具有清晰的输入和输出接口的模块。

定义即插即用架构

即插即用体系结构将模块化体系结构的技术扩展到业务功能。 例如,可以创建一个模块以包含与定单相关的所有功能,而另一个模块可以创建以包含与报价相关的所有功能。 我将这些实现业务功能的独立模块称为流程。

在此体系结构中,应用程序是“一起工作的流的集合”。 模块化体系结构的相同优势也适用于此,即,您可以替换,添加或删除流,而不影响应用程序的其余部分。 将模块扩展到业务功能的另一个好处是,可以将流以不同的路径组合以获得不同的业务功能。

此外,扩展此定义使其能够在“运行时”添加,删除或替换模块,而不是在编译时将它们绑在一起,这使我们可以灵活地在运行时自定义应用程序,而无需“内置标志和if子句”。 该体系结构扩展的优点在于:“它使我们能够灵活地创建一组松散耦合的流,这些流可以在运行时绑定在一起,而不是对一个严格的,不灵活的紧密集成的应用程序进行编码”。

为了进一步了解该体系结构是如何工作的,让我们考虑按照图进行编码的一组松耦合流:

pnp架构

有5个流已编码和部署。 每个流公开一个输出并接受一组输入。

例如,“产品列表”流程封装了以下业务功能

  • 由管理员手动创建产品
  • 通过管理员导入产品
  • 提供查看,搜索和列出产品的服务
  • 公开可链接到其他流程的输出“产品”数据

另一个例如是购物车流程。 这封装了以下业务功能

  • 创建一个新的购物车
  • 将商品添加到购物车
  • 查看购物车
  • 公开可以与其他流程关联的输出“购物车”数据
  • 接受输入“购物车项目”,该输入可以链接到其他流的输出

我们可以将“产品清单”流的“产品”数据输出连接到购物车流的“购物车”输入。 它在编译时没有紧密耦合,而是作为打开的门或购物车流的输入保留。 在运行时,门可以根据客户的要求关闭或保持打开状态。

从图中可以看到,我们有5个可以关闭的门。 通过关闭正确的门,使我们在运行时创建不同的应用程序。 例如,我们可以为仅启用产品列表基本功能的客户启用“产品列表”。 可以关闭4号门和6号门以创建具有以下功能的应用程序

  • 创建,列出产品
  • 将产品添加到购物车
  • 发送询问添加到购物车的产品

在另一变型中,代替门4和6,可以关闭门7。 该应用程序现在具有功能

  • 创建,列出产品
  • 发送询问单个产品

通过使用其他流的不同“输出”插入流的“输入”,可以创建各种应用程序。 这称为即插即用体系结构。 在此体系结构中实现了SMART ,以提供高度灵活的容器来构建Saas产品。

需要即插即用架构

当产品作为多租户Saas产品公开时,不能以“一种尺寸适合所有人”的原则来创建。 为了打破这一宗旨,我们需要一个灵活的,可定制的运行时环境,在该环境中,可以根据客户需求更改功能,而又不影响同一应用程序服务的其他客户。 即插即用体系结构为Saas提供了这种灵活性。


翻译自: https://www.javacodegeeks.com/2013/11/customization-in-saas-using-plug-and-play-architecture.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值