使用URI设计松散耦合的Metro应用程序
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由包括確定語法和相關協議的方案所定義。詳見統一資源標識符。
轉載于:https://www.cnblogs.com/shihao/archive/2011/10/02/2198095.html
總結
以上是生活随笔為你收集整理的使用URI设计松散耦合的Metro应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奔驰远程启动续费898元!网友:明明可以
- 下一篇: 方便面面饼中有活体蚂蚁?白象回应:绝非生