写点什么

使用 URI 设计松散耦合的 Metro 应用程序

  • 2011-09-19
  • 本文字数:1366 字

    阅读完需:约 4 分钟

Metro 风格应用程序意味着小型且高度集中。对于我们传统上为企业建立的、大规模的、单一的应用程序而言,我们可把它们重新想象成工作流的特定工具。例如,你可能使用某款股票交易应用程序中的工具来查找并查看客户基本信息,而使用另一款应用程序来研究金融产品。无论来自这些模式中的任何一种,然后你就要跳到“购买股票”的工作流,此工作流可能位于一款完全不同的应用程序中。

在 Metro 中借助协议(protocols)的方式,你同样可完成这一切。对于我们上述的例子,此协议可能形如“acme-stock-purchase://client=123&stock=XYZ”。在安装时,该股票购买工具应被注册以便监听发送到“acme-stock-purchase”协议的消息。当发生此情况时,股票购买工具会被启动,并接收指定的参数。

用于处理这一切的代码相当容易编写,而且在基于 C++、.NET、及 JavaScript 的应用程序中都是可用的。以下代码摘录展示了 C++应用程序侦听 OnActivated 和 OnFileActivated 事件。当通过已注册的文件类型启动应用程序时会触发 OnFileActivated 事件。

复制代码
void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args)
{
Window::Current->Content = ref new MainPage(true);
Window::Current->Activate();
}
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args)
{
MainPage^ page = ref new MainPage(false);
page->SelectScenario3(args->Files->GetAt(0)->Name);
Window::Current->Content = page;
Window::Current->Activate();
}
void App::OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs^ args)
{
MainPage^ page = ref new MainPage(false);
if (args->Kind == Windows::ApplicationModel::Activation::ActivationKind::Protocol)
{
Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^ protocolArgs = dynamic_cast<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs^>(args);
page->SelectScenario4(protocolArgs->Uri->RawUri);
}
Window::Current->Content = page;
Window::Current->Activate();
}

此类通讯是单向的,源(source)应用程序无法知道目标(destination)应用程序将如何处理消息。尽管这限制了你的一些设计选择,但是它保持了各种工具之间的松散耦合。当你的公司业务需求发生变化时,可以更新单独的工具,而无需重新部署整个软件栈。

由于这些都是 URI[1],因此它们不必由另一 Metro 应用程序来触发。任何有能力使用“ http://sample.com ”去启动 web 浏览器的应用程序都可以启动任何一款已启用协议(protocol-enabled)的 Metro 应用程序。同样,用户还可以将 URI 简单地粘贴到 Run 菜单中、或是任一资源管理器或 IE 浏览器的地址栏中。这使得开发者可将遗留程序、网络、以及 Metro 应用程序三者轻松地集成在一起。

译注

[1] URI,统一资源标识符,即 Uniform Resource Identifier 的缩写,是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。URI 由包括确定语法和相关协议的方案所定义。详见统一资源标识符

查看英文原文: Designing Loosely Coupled Metro Applications with URIs

2011-09-19 03:432655
用户头像

发布了 55 篇内容, 共 21.0 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

YashanDB数据库的最佳维护实践与问题排查技巧

数据库砖家

YashanDB数据库的读写分离策略及其性能提升

数据库砖家

YashanDB数据库的高可扩展性架构设计理念

数据库砖家

YashanDB数据库的监控与调优技巧

数据库砖家

YashanDB数据库的性能调优经验分享

数据库砖家

YashanDB数据库的性能监控工具使用体验分享

数据库砖家

YashanDB数据库的联合查询及使用场景

数据库砖家

YashanDB数据库的联合查询及使用场景

数据库砖家

YashanDB数据库的无缝集成和迁移指南

数据库砖家

YashanDB数据库的读写分离架构详解

数据库砖家

YashanDB数据库的智能故障检测对策

数据库砖家

YashanDB数据库的负载均衡策略详解

数据库砖家

YashanDB数据库的负载均衡策略详解

数据库砖家

YashanDB数据库的负载均衡及分布式特性探讨

数据库砖家

YashanDB数据库的核心功能及应用场景详解

数据库砖家

YashanDB数据库的监控与告警系统配置教程

数据库砖家

YashanDB数据库表关系设计与查询优化实操

数据库砖家

YashanDB数据库的版本迭代历程及新功能亮点

数据库砖家

YashanDB数据库的监控与运维最佳实践

数据库砖家

YashanDB数据库的最佳配置设置:提高系统稳定性

数据库砖家

YashanDB数据库的监控技术及性能评估方法

数据库砖家

YashanDB数据库表设计与规范命名建议

数据库砖家

YashanDB数据库的负载均衡策略与实施方法

数据库砖家

YashanDB数据库的负载均衡实现方法

数据库砖家

网站运营三阶段规划:网站分析从流量到转化全掌握

ClkLog

开源 埋点 sdk 用户行为分析 用户画像

YashanDB数据库的异步复制技术及企业应用价值

数据库砖家

YashanDB数据库的字段类型与数据模型

数据库砖家

YashanDB数据库的最佳实践及实施方案总结

数据库砖家

YashanDB数据库的最佳维护实践与问题排查技巧

数据库砖家

YashanDB数据库的异常处理技巧,确保系统稳定运行

数据库砖家

YashanDB数据库的异构数据集成与利用方法

数据库砖家

使用URI设计松散耦合的Metro应用程序_.NET_Jonathan Allen_InfoQ精选文章