<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于云存儲實(shí)現用Windows Azure Storage增強應用程序的引擎

基于云存儲實(shí)現用Windows Azure Storage增強應用程序的引擎

作者: 時(shí)間:2018-09-11 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201809/388914.htm

  圖 7 以 toast 形式消息顯示的通知

$(document).ready(function() { 
 
  setInterval(function() { 
    $.ajax({ 
      contentType: application/json; charset=utf-8, 
      dataType: json, 
      url: /SystemMessage/GetMessages, 
      success: function(data) { 
        for (msg in data) { 
          $.gritter.add({ 
            title: data[msg].title, 
            text: data[msg].text, 
            sticky: false 
          }); 
        } 
      } 
    }) 
  }, 15000) 
});

  提交和處理購物車(chē)

  在我們的示例應用程序中,我們希望使用隊列存儲執行的另一個(gè)關(guān)鍵方案是提交購物車(chē)。Hollywood Hackers 有一個(gè)第三方履行系統(Hollywood Hackers 無(wú)法在其空間有限的倉庫中保留所有小工具),所以引擎需要對購物車(chē)進(jìn)行一些處理。一旦引擎完成其處理,它會(huì )向用戶(hù)通知隊列提交一個(gè)消息,告知用戶(hù)已經(jīng)對購物車(chē)進(jìn)行了處理(或者出現了問(wèn)題)。如果處理購物車(chē)時(shí)用戶(hù)處于在線(xiàn)狀態(tài),該用戶(hù)將收到系統彈出的一個(gè) toast 消息。如果用戶(hù)不在線(xiàn),則會(huì )在其下次登錄到該站點(diǎn)時(shí)收到該彈出消息,如圖 8 所示。

圖 8 示例用戶(hù)通知

  查看原圖(大圖)

  我們首先需要的是一些包裝類(lèi),使我們可以與購物車(chē)隊列交互。這些包裝非常簡(jiǎn)單,如果要查看它們的源代碼,可以在 CodePlex 站點(diǎn)上查看。

  與標準 CRUD(創(chuàng )建、讀取、更新、刪除)存儲庫不同的是,隊列中的讀取操作不是單純的讀取操作。請記住,只要獲取隊列中的消息,必須在有限的時(shí)間內處理該消息,操作失敗或刪除消息都會(huì )顯示處理完成。這種模式不能順利地轉換到存儲庫模式,所以我們已經(jīng)不再借助包裝類(lèi)執行此操作。

  現在,我們已經(jīng)擁有了要與購物車(chē)隊列交互的代碼,我們可以將一些代碼放在購物車(chē)控制器中,以便將購物車(chē)內容提交到隊列中(請參見(jiàn)圖 9)。

  圖 9 向隊列提交購物車(chē)

public ActionResult Submit() 
  { 
    ShoppingCartMessage cart = new ShoppingCartMessage(); 
    cart.UserName = User.Identity.Name; 
    cart.Discounts = 12.50f; 
    cart.CartID = Guid.NewGuid().ToString(); 
    ListShoppingCartItem> items = new ListShoppingCartItem>(); 
    items.Add(new ShoppingCartItem() 
       { Quantity = 12, SKU = 10000101010, 
       UnitPrice = 15.75f }); 
    items.Add(new ShoppingCartItem() 
       { Quantity = 27, SKU = 12390123j213, 
       UnitPrice = 99.92f }); 
    cart.CartItems = items.ToArray(); 
    cartQueue.AddMessage(cart); 
    return View(); 
  }

在實(shí)際情況下,您可能會(huì )從進(jìn)程外狀態(tài)(例如會(huì )話(huà)存儲、緩存或窗體發(fā)布)獲得購物車(chē)。為了簡(jiǎn)化本文代碼,我們僅僅構建了購物車(chē)的內容。

  最后,購物車(chē)內容已處于隊列中,我們可以修改工作者角色,以便它可以定期檢查隊列中掛起的購物車(chē)。它每次會(huì )從隊列中選擇一個(gè)購物車(chē),用整整一分鐘對該購物車(chē)進(jìn)行處理,然后向用戶(hù)通知隊列提交一個(gè)消息,告知用戶(hù)已經(jīng)對該購物車(chē)進(jìn)行了處理(請參見(jiàn)圖 10)。

  圖 10 檢查隊列中掛起的購物車(chē)

private void ProcessShoppingCarts() 
{ 
  CloudQueueMessage cqm = cartQueue.GetMessage();       
 
  while (cqm != null) 
  {       
    ShoppingCartMessage cart =  
    QueueMessageBase.FromMessageShoppingCartMessage>(cqm); 
 
    toastRepository.AddNotification(new UserTextNotification() 
    { 
      MessageText = String.Format 
      (Your shopping cart containing {0} items has been processed.,  
      cart.CartItems.Length), 
      MessageDate = DateTime.Now,       
      TargetUserName = cart.UserName 
    }); 
    cartQueue.DeleteMessage(cqm); 
     cqm = cartQueue.GetMessage(); 
  } 
}

  經(jīng)過(guò)對用戶(hù)通知表中的隊列消息的存取操作,位于主頁(yè)面中的 jQuery Gritter 代碼然后會(huì )在下一個(gè) 15 秒的輪詢(xún)周期中檢測是否存在新消息,然后向用戶(hù)顯示購物車(chē) toast 通知。


  總結和后續操作

  本文的目的是使開(kāi)發(fā)人員可以?huà)侀_(kāi)其有形的數據中心這條“安全毛毯”,認識到他們可以使用 執行很多操作,而不僅僅是創(chuàng )建簡(jiǎn)單的“Hello World”網(wǎng)站。借助 Queues 和 表存儲的強大功能,以及利用這些強大功能在應用程序和其工作者角色之間進(jìn)行異步消息傳送,您可以真正使用 Windows Azure 增強應用程序的引擎了。

  為使文章簡(jiǎn)明易懂,我們將很多代碼都保留為原樣,沒(méi)有進(jìn)行重構。作為熟悉新 Windows Azure Muscle 的練習,請嘗試重構本文中的一些代碼,以加深對隊列的熟練使用,甚至創(chuàng )建一個(gè)獨立的程序集,其中包含為任何 ASP.NET MVC 網(wǎng)站進(jìn)行異步消息傳送和通知所需的所有代碼。

  主要是親自動(dòng)手實(shí)踐,創(chuàng )建一些站點(diǎn)并看看您都可以執行哪些操作。本文中的代碼位于 Hollywood Hackers 的 CodePlex 站點(diǎn)中。


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: Windows Storage Azure 云存儲

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>