如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

使用 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:432707
用户头像

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

关注

评论

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

架构实战营 毕业总结

Dylan

架构实战营

数据上报方式是否存在最优解?

神策技术社区

编程 数据

JAVA对于文件IO操作的支持

卢卡多多

Java 文件 io 8月日更

Python代码阅读(第10篇):随机打乱列表元素

Felix

Python 编程 Code Programing 阅读代码

你的日志打印对了么?

神策技术社区

数据分析 日志

《程序员修炼之道 - 从小工到专家》吐血解读

博文视点Broadview

面向对象的原则是普遍适用么?

escray

学习 极客时间 如何落地业务建模 8月日更

数据同步系统重构实践

Qunar技术沙龙

数据库 ES canal 数据同步 Kafk

MySQL 字段NOT NULL

一个大红包

8月日更

稳了!工业质检蝉联第一

百度大脑

智能制造

你的登录接口真的安全吗?快看看你有没有中招!

xcbeyond

安全性 8月日更

借助云网融合优势,某省运营商打造下一个十年增长引擎

BoCloud博云

云管理

Linux云计算-使用 MyCat 实现 MySQL 主从读写分离

学神来啦

MySQL 数据库 Linux 运维

学习笔记: JPA与Hibernate

yhrivory

数据库 hibernate jpa ORM spring data

DAPP智能合约搭建|DAPP波场智能合约开发

量化系统19942438797

智能合约 dapp

云原生-工作流引擎Zeebe

QiLab

云原生 k8s cncf BPM zeebe

区块链交易所搭建,币币交易系统搭建

一个小而美的 Swift 框架:Then

fuyoufang

swift iOS Developer 8月日更

手势事件采集究竟有多难?

神策技术社区

ios 手势

从小白程序员到大厂高级技术专家我看过哪些书籍?

冰河

学习 程序员 面试 程序人生

深耕基础软件,华为开源加速“新全球化

科技热闻

交易所市值管理机器人开发

Geek_23f0c3

去中心化交易所系统开发 市值管理机器人系统开发 做市机器人 去中心化市值管理机器人

事事请示是不靠谱的表现

boshi

团队管理

【音视频】弱网下实时视频的极限通信

声网

音视频 视频处理 视频压缩

vue入门:简单指令介绍

小鲍侃java

8月日更

漏洞挖掘的快乐你想象不到

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

如何在FL Studio中对整首歌曲音量进行调整

懒得勤快

超级人脉:让巴菲特老爷子告诉你圈子的重要性

非著名程序员

人脉 认知提升 思维 8月日更

运用上游思维的七个思路

石云升

读书笔记 8月日更 上游思维

一群人的战斗

神策技术社区

编程 代码

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