《低功耗蓝牙开发权威指南》——3.3节应用层

简介:

本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的第3章,第3.3节应用层,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.3 应用层
控制器和主机之上是应用层。应用层规约(specification)定义了三种类型:特性(characteristic)、服务(service)和规范(profile)。这些规约均构建在通用属性规范上。通用属性规范为特性和服务定义了属性分组,应用程序为使用这些属性组定义了规约。

3.3.1 特性
特性是采用已知格式、以通用唯一识别码(UUID)作为标记的一小块数据。由于特性要求能够重复使用,因而设计时没有涉及行为。只要是添加了行为的东西,它的重用性就会大打折扣。特性有个很有意思的地方,它们被定义为计算机的可读格式,而非人类的可读文字。这赋予了计算机相应的能力:当遇到一个素未谋面的特性时,可以下载计算机的相关读取规则,用来向用户显示该特性。

3.3.2 服务
服务是人类可读的一组特征及其相关的行为规范。服务只定义了位于服务器上的相关特性的行为,而不定义客户端的行为。对于许多服务而言,客户端的行为可以隐式地由服务的服务器行为所决定。然而,还有些服务可能需要在客户端上定义复杂的行为,这些行为由规范而非服务定义。
一个服务可以包括其他服务。父服务只能定义自身包含的服务,它不能改变包含的服务的特性或者行为。但是,包含服务时应描述多个被包含服务之间如何彼此互动。
服务有两种类型:首要服务和次要服务,如3.2.4节所述。一个服务本质上是首要服务还是次要服务取决于服务的定义,或者可以由规范文件和规范文件的实现来决定。首要服务表征一个给定的设备主要做些什么。正是通过这些服务,用户才了解了该设备的作用。次要服务是那些协助主要业务或其他次要服务的服务。
服务本身并未规定设备之间如何连接,以及如何发现和使用服务。服务只描述在读写特性或通知和指示特性时究竟做了些什么。服务没有描述通用属性规范采用什么规程来寻找服务和服务的特性,也没有描述客户端如何使用特性。

3.3.3 规范
规范是用例或应用的最终体现。规范是描述两个或多个设备的说明,每个设备提供一个或多个服务。规范描述了如何发现并连接设备,从而为每台设备确定所需的拓扑结构。规范还描述了客户端行为,用于发现服务和服务特性,以及使用该服务实现用例或应用所要求的功能。
规范和服务之间是一种多对多的映射关系,如图3-5所示。一个服务可以用于许多规范,以便在设备上实现需要的行为。此时,服务的行为与使用该服务的规范是相互独立的。在应用商店里,可以提交某个设备支持的所有服务的列表,从而找到使用这些服务的所有应用。这种灵活性有助于实现即插即用模型,比如通用串行总线便是如此。


845d821c8958fc2e1cac71ce98c25090d5ba0506
相关文章
|
物联网 网络架构 智能硬件
|
机器学习/深度学习 人工智能 搜索推荐
未来人工智能在后端开发中的应用前景
随着人工智能技术的不断发展,后端开发领域也迎来了新的机遇与挑战。本文探讨了人工智能在后端开发中的应用前景,分析了其对传统开发模式的影响和未来发展趋势。
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的绩效管理与考核
【7月更文挑战第25天】 ERP系统中的绩效管理与考核
646 2
|
监控 安全 网络安全
网络安全中的网络隔离与访问控制技术
【7月更文挑战第5天】网络隔离与访问控制技术是网络安全领域的重要组成部分。通过合理的网络隔离和严格的访问控制策略,可以有效保护网络资产免受未经授权的访问和攻击。随着技术的不断发展,我们需要不断探索和创新,以应对日益复杂的网络安全威胁。
1156 2
线性代数——(期末突击)矩阵(上)-概念篇(矩阵的定义、矩阵的运算、特殊矩阵、初等变换)
线性代数——(期末突击)矩阵(上)-概念篇(矩阵的定义、矩阵的运算、特殊矩阵、初等变换)
986 7
|
机器学习/深度学习 人工智能 前端开发
BladeDISC 深度学习编译器问题之在动态shape下优化整体性能如何解决
BladeDISC 深度学习编译器问题之在动态shape下优化整体性能如何解决
|
Kubernetes API 调度
在K8S中,创建一个Pod的主要流程是什么?
在K8S中,创建一个Pod的主要流程是什么?
|
Go
Golang深入浅出之-Go语言代码质量与规范:遵循Gofmt与Linting
【5月更文挑战第1天】本文讨论了如何使用`gofmt`和Lint工具提升Go代码质量。`gofmt`负责自动格式化代码,保持风格统一,而Lint工具如`golint`、`govet`、`staticcheck`则进行静态分析,检查潜在错误和未使用的变量。通过集成`gofmt`检查到CI/CD流程,避免格式冲突,并使用Lint工具发现并修复问题,如未处理的错误、不规范命名。遵循这些最佳实践,可提高代码可读性、团队协作效率和可维护性。
319 3
|
自然语言处理 前端开发 Swift
Llama3 中文通用Agent微调模型来啦!(附手把手微调实战教程)
Llama3模型在4月18日公布后,国内开发者对Llama3模型进行了很多训练和适配,除了中文纯文本模型外,多模态版本也陆续在发布中。
|
SQL Java 关系型数据库
IDEA+Java+JSP+Mysql+Tomcat实现Web学生成绩管理系统
IDEA+Java+JSP+Mysql+Tomcat实现Web学生成绩管理系统
1113 1
IDEA+Java+JSP+Mysql+Tomcat实现Web学生成绩管理系统