Growl 通知系统:越简单越好
在得到激起了周围的用户界面和用户体验做戏,你常常忽略这一事实有时最好的 UI 不是时髦、 最耀眼的 HTML/CSS/JavaScript 或令人吃惊的动画,但藏在角落里一个简单的消息显示。很多的会发生什么,特别是与企业系统,是"无头"种类的不带用户界面的操作。
您仍然需要给用户,不过,伸出手,问他要执行的操作的方法。您可以构建一个简单的小小的 UI 实用程序给你,或者你可以利用别人的实用工具,它已经建成和调试,可能有更多的功能比您要包括。
咆哮基础知识
咆哮 (可供下载的在 Windows growlforwindows.com) 是 Windows 端口的 Mac 相同名称的实用程序和被誉为"最终通知系统"。从根本上说,它不是难理解。它驻留在您的机器,躲在通知托盘右下角的 Windows 桌面视图,并侦听通知。
一条消息时,它会弹出一个小消息框来提醒用户。然后可以作为加密或密码保护,以避免网络嗅探器观看交通跨网络发送这些邮件。从根本上说,它是关于向用户提供通知消息,像你用来看看回来时即时消息传递是热,MSN Messenger 是一件事的"烤面包机"消息。就这样,在最大程度。
请的记住并不是所有实用程序开发人员和解决方案必须是这些大型、 大尺度的建筑奇迹。事实上,有时最优雅问题的解决办法往往是一个小型、 奇集中式的组件,如下保持它简单,愚蠢 (吻) 原则。咆哮做一件事情,做得不错:它可以让你通知用户 (或多个用户,如果你开始思考这横跨网络) 的事情发生,否则会过去的他。
当我第一次介绍的咆哮声时,例如,它是作为橡木生成系统的一部分。这是基本上是"连续生成"系统。源的文件被修改了,任何时间它会触发重新生成项目。这一问题,当然,是如果重建不是被揭开序幕的开发人员前面-和-中心在 Visual Studio 盯着的东西,怎么会,开发人员知道生成问题呢?生成系统将通知发送到的咆哮声,和它暗中将生成结果显示给用户,藏在角落里不会要求注意或它带到了不管他是。
咆哮不用太多想的其他情况下,此功能会很有用,内部和外部开发人员-头脑上下文。对于开发者,这可以很有用当长时间运行任务 (如生成、 数据加载、 ETL 过程等等) 正在执行的背景,给你提个醒,当他们完成。给系统管理员,这可以为关键错误条件需要接近即时人为干预,但不保证完全终止操作非常有用。
对用户而言,这可以是一大堆的东西,包括一种"推送通知"系统在企业网络内部的应用程序的有用工具,如当特定的数据记录,用户正在更新关心 (那些目前他正在,例如),或系统 (启动、 关机、 系统范围的用户的邮件,无论) 内发生的事件时需要推到用户的眼睛。即使网络的游戏可以使用它,告诉一名运动员当它是他的了。
咆哮声还可以""的消息转发到其他计算机。如果一条消息,注定要达成你的眼睛找不你因为你是在午餐上,您可以配置以将该邮件发送到您的手机、 平板电脑或其他计算机组的咆哮声。你还可以在发送电子邮件消息或推特 (公开或直接消息) 到一个帐户。用户可以配置 (或不) 播放声音的咆哮声在每个注册-应用程序的基础上设置的这些通知优先级在每个注册-应用程序的基础上,等等。
咆哮声可能不是很多,但它是一个很有用"不太"种的工具。对它的编程是简单得可笑。一旦您已经安装了的咆哮声,你可以发送的咆哮声通知 (从批处理文件或 Windows PowerShell 脚本,例如) 使用命令行的"growlnotify"工具安装在咆哮的 Windows 文件夹中。序幕一使用以下命令行 (假设 Windows C:\Program Files\Growl,默认的咆哮声安装目录中,对您的路径):
growlnotify "This is a test message"
假设的咆哮声已成功安装,它会回应在命令行中使用"成功通知已发送的信息"。一个小小的蓝色消息窗口将在您的桌面的角弹出。 在系统通知送纸盒,检查配置选项,包括能够转发到其他机器的邮件中打开咆哮图标并使用"/?"命令行参数,探讨如何通过网络发送的咆哮声通知。 实验前进一步,阅读,因为这些选项的某些选项看到这里很多直接反映可用的 Api 来编写代码使用的咆哮声通知时。
SDK 咆哮
咆哮 SDK 是薄薄一层在咆哮网络运输协议 (GNTP),强烈让人联想到 HTTP 的 TCP/IP 有线协议。 给定的咆哮声一直在附近一段时间,它不是令人吃惊的是有几个图书馆以抽象的该协议的细节。 这些被统称为"咆哮连接"图书馆。
同一 Web 站点 (growlforwindows.com),你得到的咆哮声为 Windows 位也从已链接到 Microsoft.NET 框架库的咆哮声,以及甚至 SQL 服务器咆哮图书馆、 COM 和 c + + 链接。 (想想那一刻的最后一个。 它是一个软件包,让您使用 SQL Server 脚本伸出并将通知发送到感兴趣的缔约方,例如 Dba)。
一旦咆哮.NET 库被拉扯,打开.zip 文件。 它包含一个示例 C# 应用程序和示例的 Visual Basic.NET 应用程序,但您具体想要什么"库"文件夹中的两个.NET 程序集:Growl.CoreLibrary.dll 和 Growl.Connector.dll。 (这些是也作为的一部分安装的咆哮声中咆哮的主目录,如果 SDK 下载获取丢失某个地方。)在任何.NET 项目中,只需引用这两个库程序集,以及东西都好去。
连接和注册 A 的咆哮声客户端需要之前它可以发送通知,注册的咆哮声 — — 的咆哮声将忽略任何它接收来自未注册应用程序的通知。 幸运的是,不只是这一一次性的一步,但 SDK 使琐碎。 只需创建一个 GrowlConnector 对象,该对象 (包括目标主机名和端口如果伸出到远程计算机,如果需要),然后包括一些简单的资料,有关正在注册的应用程序:
var connector = new GrowlConnector();
var thisApp = new Application("GrowlCL");
thisApp.Icon = @".
\app.png";
图标可以是文件名、 URL 或字节数组。 (这两个类,顺便说一句,来自 GrowlConnector 命名空间)。
如按类型分组的咆哮声认为的通知。 Web 浏览器可能会发送"文件开始下载"通知,"已完成下载的文件"的通知等。 游戏可能会发送"新游戏提供了,""玩家辞职了,""轮到你,""其他播放器打开已完成"和其他类似的通知。 咆哮想要注册这些通知类型,这样,用户可以配置将如何处理每种通知的应用程序。 新的咆哮声客户端需要定义其通知类型,然后将它们传递给 GrowlConnector.Register 方法以完成注册:
// Two kinds of messages: insults and compliments
var insultType = new NotificationType("INSULT", "SICK BURN!");
var compType = new NotificationType("COMPLIMENT", "Nice message");
connector.Register(thisApp, new NotificationType[] { insultType, compType });
第一个参数是通知的字符串,您的代码将使用以指示类型。 第二是将会在用户的咆哮声应用程序中查看时显示的字符串。 应用程序对象,象 NotificationType 也有一个图标属性。 这允许不同的图标来显示以及在每种通知类型的基础上消息的文本。 它不是必要的但看上去更加精美,最终产品有一定的帮助。
请注意是否运行上述代码,则的咆哮声,将弹出一条消息说,"GrowlCL 已注册"是否这是首次与这台机器上的咆哮声 app 已通报了这个应用程序。
通知一旦应用程序和其通知类型注册的咆哮声,它是一个很简单的问题,发送通知。 只需创建一个通知对象,通过在应用程序名称,通知类型字符串,可选标识符来唯一地标识此的通知 (为什么您可能想我会给一会儿),标题和正文发送,和然后将的通知对象发送到使用 Notify 方法的咆哮声中:
var notification = new Notification("GrowlCL", "INSULT", null,
"YO MAMA!", "Your mama is so fat, she dropped an apple " +
"and it entered orbit around her.");
connector.Notify(notification);
时的咆哮声应用程序接收的消息,它就会在屏幕的 (默认) 角弹出。
是的它真的是那么容易。
**你现在可以读我吗?**有时你想知道用户在通知做了什么。 她做了只是关闭它不看,或她实际读取的是消息吗? 这其实是相当重要的在呼叫中心、 监事需要知道如果雇员事实上正在阅读每天向上销售的特别优惠,作为所需的地方。
咆哮允许此通过注册回调,可以是.NET 事件处理程序方法或 WebHooks — — 的咆哮声将发布包含数据的发送的通知,上述 ID 参数如 HTTP 请求的 Url。 在事件的咆哮声连接器库不能到达的有针对性的咆哮声实例,它就会发出一个错误,但只有如果客户端代码已注册事件处理程序 (ErrorResponse) 的 GrowlConnector 对象上。
事件处理程序方法将收到错误代码和错误,看起来几乎完全相同的 HTTP 错误代码的描述和说明,使它们非常不言自明。 咆哮连接器 docs ("Windows 应用程序英特的咆哮声偏向指南"中下载 SDK.zip) 有一个表,其中列出了所有这些错误,但他们都非常直截了当 ("200-超时,""201-网络故障"等等)。
只是这么简单
咆哮声不会赢得任何奖项的"最复杂的建筑"。如果它几乎完全可以描述在单一杂志文章中,那么它绝对是非常简单、 简单、 低表面-地区种工具。 总括来说,可能是它最大的力量。 很坦率地说,它是任何技术专家库或工具所能给予的最好赞美 — — 只是,易于使用。 祝您工作愉快!
Ted Neward iTrellis,一家咨询服务公司 CTO。他写过 100 多篇文章,独自撰写并与人合著过十几本书,包括《Professional F# 2.0》(Wrox,2010 年)。他是 C# 领域最优秀的专家之一,在全球各种会议上演讲。他征求意见,并定期导师 — — 联系到他在 ted@tedneward.com 或 ted@itrellis.com 如果你感兴趣让他来与您的团队一起工作和阅读他的博客在 blogs.tedneward.com。
衷心感谢以下技术专家对本文的审阅:布莱恩邓宁顿 (独立顾问)