第23章 应用程序用户界面的架构设计
良好设计的UI不仅仅是让设计者提供美观的界面,有一些与后台有界上下文的性能,可扩展性和松散耦合相关的重要挑战。
高层次的决策,那个团队应该负责UI>>到低层次的决策>>比如使用哪种编程语言来向你介绍一些主要的UI考虑事项。
了解应用层如何处理来自UI的输入并且提供所有的基础架构粘合以协调操作和有界上下文。
- 设计考量
实际上,你的UI甚至会影响到应该通过一些有界上下文存储那些数据。
-
- 占有式UI与构成式UI的对比
自治性:
自治应用程序的一个UI归属于单个业务组件。
一个领域的团队拥有UI的维护权。
授权性
当想要在单个UI中呈现来自多个有界上下文的信息的最新快照时,应用程序就必须直接从授权有界上下文中请求每一段信息。
专门的UI团队来维护网站前段。
一些帮助决定
在自执行和授权性应用之间选择的一个好的起点是思考团队的关系。
-
- HTML API与数据API的对比
有界上下文提供HTML片段:
从多个有界上下文仅仅返回数据,比如json
-
- 客户端与服务器端聚合/协作对比
对于一个从有界上下文中提取内容(数据或者HTML)的UI来说,可以选择在客户端还是在服务器端上表现该聚合。
- 实例1:用于非分布式有界上下文的一个基于HTML API的,服务端的UI
根据单一职责原则(Single Responsibility Principle,SRP)。领域团队应该维护HTML,且如果其归属的HTML页面有使用到其他领域的数据,也由其他领域提供HTML API片段来支持,而不是数据模式或服务交互。
- 实例2:用于分布式有界上下文的一个基于数据API的客户端UI
这里的每个HTML已经定义,那么每个领域返回其数据填充即可。
- 要点总结