a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

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

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

作者: 時間:2018-09-11 來源:網絡 收藏

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

  現在,我們需要一個簡單的包裝來與我們的隊列交互。從本質上說,我們需要能夠將消息插入隊列,獲取任何掛起的消息并清除該隊列(請參見圖 3)。

  圖 3 用于與隊列交互的包裝

namespace HollywoodHackers..Queue 
{ 
  public class StdQueueT> : 
  Base where T : QueueMessageBase, new() 
  { 
    protected CloudQueue queue; 
    protected CloudQueueClient client; 
 
    public StdQueue(string queueName) 
    { 
      client = new CloudQueueClient 
      (Base.QueueBaseUri, StorageBase.Credentials); 
      queue = client.GetQueueReference(queueName); 
      queue.CreateIfNotExist(); 
    } 
    public void AddMessage(T message) 
    { 
      CloudQueueMessage msg = 
      new CloudQueueMessage(message.ToBinary()); 
      queue.AddMessage(msg); 
    } 
    public void DeleteMessage(CloudQueueMessage msg) 
    { 
      queue.DeleteMessage(msg); 
    } 
    public CloudQueueMessage GetMessage() 
    { 
      return queue.GetMessage(TimeSpan.FromSeconds(60)); 
    } 
  } 
  public class ToastQueue : StdQueueToastQueueMessage> 
  { 
    public ToastQueue() 
      : base(toasts) 
    { 
    } 
  } 
}

我們還需要為表存儲設置一個包裝,以便在用戶登錄到站點之前可以存儲用戶通知。可以使用 PartitionKey(行集合的標識符)和 RowKey(可唯一標識特定分區中的每個單獨行)組織表數據。選擇 PartitionKey 和 RowKey 使用的數據是在使用表存儲時所做的最重要的設計決策之一。

  這些特點允許跨存儲節點進行負載平衡,并在應用程序中提供內置的可伸縮性選項。不考慮數據的數據中心關聯性,使用同一分區鍵的表存儲中的行將保留在相同的物理數據存儲中。因為針對每個用戶存儲對應的消息,所以分區鍵將是 UserName,而 RowKey 則成為標識每行的 GUID(請參見圖 4)。

  圖 4 表存儲的包裝

namespace HollywoodHackers.Storage.Repositories 
{ 
  public class UserTextNotificationRepository : StorageBase 
  { 
    public const string EntitySetName = 
    UserTextNotifications; 
    CloudTableClient tableClient; 
    UserTextNotificationContext notificationContext; 
    public UserTextNotificationRepository() 
      : base() 
    { 
      tableClient = new CloudTableClient 
      (StorageBase.TableBaseUri, StorageBase.Credentials); 
      notificationContext = new UserTextNotificationContext 
      (StorageBase.TableBaseUri,StorageBase.Credentials); 
 
      tableClient.CreateTableIfNotExist(EntitySetName); 
    } 
    public UserTextNotification[] 
    GetNotificationsForUser(string userName) 
    { 
      var q = from notification in 
          notificationContext.UserNotifications 
          where notification.TargetUserName == 
          userName select notification; 
      return q.ToArray(); 
    } 
    public void AddNotification 
    (UserTextNotification notification) 
    { 
      notification.RowKey = Guid.NewGuid().ToString(); 
      notificationContext.AddObject 
      (EntitySetName, notification); 
      notificationContext.SaveChanges(); 
    } 
  } 
}



評論


相關推薦

技術專區

關閉