概况
大部分的应用都会包含一些跨越逻辑层和物理层的通用功能。这些功能包括:用户认证、授权、缓存、通信、异常管理、日志、基础框架和合法性验证。这些功能通常被叫做“跨层关注”,因为它会影响整个应用,应该尽可能将他们的代码集中在一起。如果这类代码散落在各个地方,需要修改的时候,就需要打开每个地方进行修改;如果集中管理的话,只需要打开一个地方,修改一个地方就可以了。
通常的设计考虑
在设计跨层关注功能的时候,可以考虑下面的因素:
- 检查在每层的功能需求,找到可以抽象出来的功能,这类功能很可能在应用的其他地方也会用到。
- 依赖于应用的物理层和逻辑层部署方式,可能需要在多个物理层部署跨层关注组件。但是你仍然会得到独立跨层组件在可复用性和减少开发时间方面带来的好处。
- 考虑使用DI依赖注入的方式,在配置的基础上,将跨层组件的实例注入到应用中。这将会允许你很容易的修改组件的实现,而不用重新编译和部署整个应用的代码。可以参考:模式和实践小组,Unity。
- 考虑使用第三方的组件,可以减少开发时间。例如:模式&实践小组的企业库。
- 考虑使用AOP技术将跨层关注编织到应用中,而不是硬编码到应用中。Unity和企业库的Policy Injection Application Block支持这种方式。另一个是Castle Windsor和PostSharp。
特殊的设计问题
通常碰到的设计问题包括:
- 用户验证
- 授权
- 缓存
- 通信
- 配置管理
- 异常管理
- 日志和性能指标
- 状态管理
- 数据验证
1 用户验证
设计一个好的用户验证策略对于应用的安全性和可靠性来说是非常重要的。在设计的时候,可以参考下面的原则:
- 确定你的可信边界,需要验证的用户,以及跨越可信边界的调用。
- 强制使用密码策略。
- 如果有多个系统,用户一定要跨越多个系统,考虑使用SSO。
- 不要明文传输密码,不要明文存储密码。应该存储密码的哈希值。
2 授权
- 确认你的可信边界,需要验证的用户,以及跨越可信边界的调用。
- 通过用户的身份来保护资源。
- 考虑使用角色为基础的业务授权机制。
- 考虑使用ACL。
3 缓存
- 为缓存选择适当的位置。如果在web服务器场的环境使用缓存,避免使用本地缓存,因为还需要数据同步。考虑使用是分布式缓存,Memcached或者是Velocity。
- 考虑在内存中缓存强类型的数据,而不是数据库的原始形式DataRow之类的,缓存对象方便使用。
- 不要缓存敏感数据。
- 不要依赖于缓存的数据, 因为它有可能已经被移除了。在访问缓存数据失败的时候,从数据源重新获取数据。
- 在多线程访问缓存的时候,需要特别小心,确保是线程安全的。
4 通信
5 配置管理
6 异常管理
7 日志和仪表盘
8 状态管理
9 数据验证
缓存的设计步骤
1 确定缓存的数据
2 确定数据缓存的位置
3 确定数据缓存的格式
4 确定一个适当的数据缓存策略
5 确定如何加载数据到缓存
异常管理的设计
1 确定要处理的异常
2 确定异常发现策略
3 确定异常传播策略
4 确定自定义异常策略
5 确定收集适当的异常信息
6 确定异常日志记录策略
7 确定异常通知策略
8 确定如何处理未预期的异常
设计输入和数据验证
1 确定可信边界
2 确定关键的方案
3 确定在什么位置进行数据验证
4 确定验证策略
分享到:
相关推荐
"牛【SystemVerilog】路科验证V2学习笔记(全600页)"是一份详尽的学习资料,涵盖了路科验证方法论的第二版(V2)在SystemVerilog中的应用。 笔记内容可能包含了以下几个关键知识点: 1. **基础语法**:...
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 ...
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 ...
2020年举行的C-V2X“新四跨”暨大规模先导应用示范活动,是中国推动车联网技术发展的重要实践,旨在验证和优化C-V2X的性能,确保其在实际环境中的可靠性和安全性。 该活动中,接入层参数和AID(Access Identifier)...
在"V2X“新四跨”暨大规模先导应用示范活动"中,接入层参数和AID配置文件的设定至关重要,因为它们直接影响到C-V2X通信的效率和可靠性。 1. 接入层参数: - `carrierFreq`:指定载波频率,根据3GPP TS 36.331,...
这个“AADL学习笔记_V2_aadl_”文件集合显然是针对AADL标准的第二版(V2)进行的学习和参考资料。下面我们将深入探讨AADL的核心概念、用途、关键特征以及在V2版本中的重要更新。 AADL起源于NASA的研究项目,旨在...
C-V2X(Cellular Vehicle to Everything)作为车联网的关键技术之一,其四跨互联互通示范应用即将在上海举行,这标志着我国在该领域迈向实际应用的关键一步。 C-V2X技术,即蜂窝车联网技术,是一种基于移动通信网络...
在中国,车联网通信技术的发展备受关注,特别是V2X(vehicle-to-everything)技术,它包括车与车(V2V)、车与基础设施(V2I)、车与行人(V2P)、车与网络(V2N)之间的通信。TCSAE(中国汽车工程学会)发布的...
SystemVerilog路科验证V2是一个SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注,可快速获取自已需要的知识,喜欢的平台可下载试试! 介绍设计描述和验证语言SystemVerilog的基本...
《应用架构指南v2》是微软发布的一份深入探讨应用架构的重要文档,旨在为软件开发者、架构师和项目管理者提供一套全面的指导原则和最佳实践。这份指南详细阐述了如何设计、构建和优化应用程序,以确保其高效、可扩展...
微服务和Serverless是当前云计算架构设计中非常热门的概念,它们在解决传统单体应用所面临的可伸缩性、运维复杂性和快速迭代等问题上表现出了明显优势。在王晓波所著的《从微服务到Serverless+架构应用与实践》这份...
标题中的“计算机应用行业:C-V2X四跨互联互通示范应用举行在即”指的是一个即将进行的关于C-V2X技术在汽车行业的实际应用展示活动。C-V2X(Cellular Vehicle-to-Everything,蜂窝车联网)是下一代智能交通系统的...
在这个压缩包中,包含了V2X应用层ASN.1的一期和二期编码文件。这些文件包含了BSM(Basic Safety Message)、MAP(Map Data)以及二期扩展消息的定义。BSM是V2X通信的基础,用于车辆间共享实时安全信息,如位置、速度...
"大型金融数据中心网络架构设计V2.pptx" 本资源摘要信息来自一个关于大型金融数据中心网络架构设计的PPT文件,内容涵盖了金融数据中心网络架构设计的演进路线、金融网络应用场景的划分、数据中心应用服务域、双活...
Kinect V2 是微软公司推出的第二代体感设备,它不仅用于游戏,还被广泛应用于计算机视觉、人机交互、机器人技术等领域。它通过一系列传感器,可以捕捉用户的动作、声音甚至心跳,与计算机进行自然交互。Kinect V2 ...
一、大规模验证意义: 定位2:面向公众演示多样化的C-V2X功能和服务 • 相较2019四跨,上海...在2019年四跨基础上,增加高精度地图和定位,探索C-V2X在地图和定位方面面临法律法规问题的解决方案,进一步推动产业发展
本文将深入探讨“路科验证V2”学习笔记中的关键知识点,主要基于提供的"SV部分讲义"。 一、SystemVerilog基础 1. **数据类型**:SystemVerilog提供了丰富的数据类型,包括位(bit)、逻辑(logic)、整型(int)、...
旷视科技提出的ShuffleNet V2是一种针对移动端深度学习应用优化的卷积神经网络架构。这种新型架构的提出,旨在解决移动端深度学习领域中计算资源受限和对速度效率需求较高的问题。ShuffleNet V2的设计思想来源于对于...
微服务架构分享 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务...微服务架构是一种灵活、可实施、可扩展的软件架构模式,可以解决传统的单块架构应用存在的一些问题,提供了更多的好处和可能性。