<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于云存儲實現(xiàn)用Windows Azure Storage增強(qiáng)應(yīng)用程序的引擎

          基于云存儲實現(xiàn)用Windows Azure Storage增強(qiáng)應(yīng)用程序的引擎

          作者: 時間:2010-04-17 來源:網(wǎng)絡(luò) 收藏

            現(xiàn)在,我們需要一個簡單的包裝來與我們的隊列交互。從本質(zhì)上說,我們需要能夠?qū)⑾⒉迦腙犃?,獲取任何掛起的消息并清除該隊列(請參見圖 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) 
              { 
              } 
            } 
          }

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

            這些特點允許跨存儲節(jié)點進(jìn)行負(fù)載平衡,并在中提供內(nèi)置的可伸縮性選項。不考慮數(shù)據(jù)的數(shù)據(jù)中心關(guān)聯(lián)性,使用同一分區(qū)鍵的表存儲中的行將保留在相同的物理數(shù)據(jù)存儲中。因為針對每個用戶存儲對應(yīng)的消息,所以分區(qū)鍵將是 UserName,而 RowKey 則成為標(biāo)識每行的 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(); 
              } 
            } 
          }



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();