归档:Hermes 架构
| 本文正在考虑删除! 理由 openSUSE 已经不再使用 Hermes,开发已于 2013 年停止。 请勿清空、合并或移动本文,或删除此通知。请参阅本文的 页面和我们的 删除策略 以获取更多信息。 |
此页面解释了 Hermes 系统的架构。
如果您需要进一步的帮助(您可能需要 ;-),请不要犹豫在 freenode 的 IRC 频道 #opensuse-boosters 中提问。
架构
为了满足需求,需要以下逻辑功能块
- 用户偏好模块 存储用户希望以何种方式接收不同通知的选择。通过这部分系统,用户控制着消息的传递方式。它将信息提供给几乎所有其他模块
- 存储 代表传入消息的接口,并将它们存储到数据库中,或在需要立即发送时将其转移到中继。
- 数据库 持有消息直到其传递。由于数据是结构化的,因此使用关系数据库。
- 中继 基于时间触发,并检查消息是否已到传递时间。如果是,它将组装消息(如摘要),然后将其传递给代理进行传递。
- 代理 是专门的传输模块,使用不同的技术传递消息。
这些是逻辑构建块。有关更多详细信息,请阅读 关于 Hermes 子系统。
接口
基本上,系统有四个交互点
- 通过 HTTP CGI(以后是 REST)接口进行消息存储
- 用户通过基于 rails 的 Web 应用程序进行偏好设置和消息阅读
- 用于管理任务的管理员 Web 界面
- 通过各种代理进行消息传递
关于每个接口的更多详细信息如下。
消息存储
希望将其通知馈送到 Hermes 的其他应用程序可以通过基于 HTTP 的 CGI 接口将通知存储到系统中
概念:Hermes REST 接口
客户端可以通过向以下地址发送 POST 请求来向 Hermes 发布通知
http://hermes.opensuse.org/<username>/[<notificationtype>]
所有参数都添加到 POST 请求中。
要查询 Hermes 存储中已存在的通知,向以下 url 发送 GET 请求将返回存储的消息
http://hermes.opensuse.org/<username>/[<notificationtype>]
通知类型
通知类型是一种用于限定通知类型的特殊元素。它需要是 CGI POST 请求的一个参数。基本上,消息类型是发布客户端可以自由选择的字符串。发布者不必担心通知类型是否已知或是否以前使用过。如果 Hermes 不知道通知类型,则通知时间表和传递类型由用户可配置的默认值处理。
在 Hermes 的后续版本中,可能会提供继承其父设置的子消息类型。
代理
有不同的代理,它们根据用户为消息类型定义的时限传递消息。传递方式(通过邮件、Jabber 消息等)也受 Starship(用户偏好模块)配置的约束。代理由中继触发以进行消息传递。
用户 Web 应用程序 Starship
Hermes Web 应用程序 Starship 具有两个目的:管理用户偏好和显示消息列表。对于 openSUSE Hermes 安装,Starship 托管在 http://hermes.opensuse.org。
此模块允许用户编辑其/她的个人设置。基本上,就是如何传递不同类型的信息以及在什么时限内传递。此外,还可以配置进一步缩小消息传递范围的过滤器。
请参阅 Starship 的用户文档:Hermes 使用文档
Starship 还以可排序、可过滤和流畅的方式显示消息列表。
