使用URI设计松散耦合的Metro应用程序
Metro風(fēng)格應(yīng)用程序意味著小型且高度集中。對(duì)于我們傳統(tǒng)上為企業(yè)建立的、大規(guī)模的、單一的應(yīng)用程序而言,我們可把它們重新想象成工作流的特定工 具。例如,你可能使用某款股票交易應(yīng)用程序中的工具來查找并查看客戶基本信息,而使用另一款應(yīng)用程序來研究金融產(chǎn)品。無論來自這些模式中的任何一種,然后 你就要跳到“購買股票”的工作流,此工作流可能位于一款完全不同的應(yīng)用程序中。
在Metro中借助協(xié)議(protocols)的方式,你同樣可完成這一切。對(duì)于我們上述的例子,此協(xié)議可能形如“acme-stock- purchase://client=123&stock=XYZ”。在安裝時(shí),該股票購買工具應(yīng)被注冊(cè)以便監(jiān)聽發(fā)送到“acme-stock- purchase”協(xié)議的消息。當(dāng)發(fā)生此情況時(shí),股票購買工具會(huì)被啟動(dòng),并接收指定的參數(shù)。
用于處理這一切的代碼相當(dāng)容易編寫,而且在基于C++、.NET、及JavaScript的應(yīng)用程序中都是可用的。以下代碼摘錄展示了C++應(yīng)用程序偵聽OnActivated和OnFileActivated事件。當(dāng)通過已注冊(cè)的文件類型啟動(dòng)應(yīng)用程序時(shí)會(huì)觸發(fā)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)應(yīng)用程序無法知道目標(biāo)(destination)應(yīng)用程序?qū)⑷绾翁幚硐ⅰ1M管這限制了你的一些設(shè)計(jì)選擇,但是它保持了各種工具之間的松散耦合。當(dāng)你的公司業(yè)務(wù)需求發(fā)生變化時(shí),可以更新單獨(dú)的工具,而無需重新部署整個(gè)軟件棧。
由于這些都是URI[1],因此它們不必由另一Metro應(yīng)用程序來觸發(fā)。任何有能力使用 “http://sample.com”去啟動(dòng)web瀏覽器的應(yīng)用程序都可以啟動(dòng)任何一款已啟用協(xié)議(protocol-enabled)的Metro應(yīng) 用程序。同樣,用戶還可以將URI簡(jiǎn)單地粘貼到Run菜單中、或是任一資源管理器或IE瀏覽器的地址欄中。這使得開發(fā)者可將遺留程序、網(wǎng)絡(luò)、以及 Metro應(yīng)用程序三者輕松地集成在一起。
譯注
[1] URI,統(tǒng)一資源標(biāo)識(shí)符,即Uniform Resource Identifier的縮寫,是一個(gè)用于標(biāo)識(shí)某一互聯(lián)網(wǎng)資源名稱的字符串。 該種標(biāo)識(shí)允許用戶對(duì)網(wǎng)絡(luò)中(一般指萬維網(wǎng))的資源通過特定的協(xié)議進(jìn)行交互操作。URI由包括確定語法和相關(guān)協(xié)議的方案所定義。詳見統(tǒng)一資源標(biāo)識(shí)符。
轉(zhuǎn)載于:https://www.cnblogs.com/shihao/archive/2011/10/02/2198095.html
總結(jié)
以上是生活随笔為你收集整理的使用URI设计松散耦合的Metro应用程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奔驰远程启动续费898元!网友:明明可以
- 下一篇: 方便面面饼中有活体蚂蚁?白象回应:绝非生