加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用Scala实现跨越一系列基于Java的服务的域层

发布时间:2020-12-16 18:30:02 所属栏目:安全 来源:网络整理
导读:我们有一个在多个层中实现的 java系统.在最低级别,有一些服务可以抽象出一系列基础架构组件,例如数据库,blob存储,处理队列等……最重要的是,我们有域层实现使用其中一个或多个的工作流服务(使用命令和复合命令模式).最后,在其上面有一个基于jax-rs(jersey)的
我们有一个在多个层中实现的 java系统.在最低级别,有一些服务可以抽象出一系列基础架构组件,例如数据库,blob存储,处理队列等……最重要的是,我们有域层实现使用其中一个或多个的工作流服务(使用命令和复合命令模式).最后,在其上面有一个基于jax-rs(jersey)的层,它提供了根据域层的工作流实现的REST接口/协议.

我对Scala的经验是有限的,但我怀疑它可能是编写更具表现力的域层版本的好工具,因为Java代码非常冗长且有时难以调试.部分原因是命令组合和执行的控制由具体命令扩展的基类处理.事后看来,这可能不是一个理想的设计选择.

我希望这个非常高级别的描述能够说明我想要实现的目标.如果我需要更具体,请告诉我.我最感兴趣的是如何在保持基于Java的服务层的同时使用Scala构建域层.此外,关于如何在域层之上实现http / REST协议以便可以将其部署在java Web应用程序容器中的建议也将非常有趣.

解决方法

从理论上讲,一个明显的出发点是利用Scala的结构类型,并将命令表示为特征:

trait CommandType1 { def operation() }

然后可以从这些特征构建命令组合:

case class CompositeCommand(commandOperand: CommandType1*) extends CommandType1 {
  def operation() = commandOperand foreach { _.operation() }
}

Scala为您的工作流层提供的另一个优势是您可以将命令定义为可通过的函数.这样就可以创建表示抽象操作的通用高级命令,然后为常用/访问的工作流创建和存储这些命令的部分功能.

面向前端的Scala协议层可以查看旋转角色来处理传入的请求.此外,可能值得查看类似Scala’s Cake Pattern的内容,以提供DI来控制业务逻辑,以及用于前端代码中动态调度的多方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读