WEB开发网      婵犵數濞€濞佳囧磹婵犳艾鐤炬い鎰堕檮閸嬬喐銇勯弽銊с€掗梻鍕閺岋箑螣娓氼垱笑闂佽姘﹂褔婀佸┑鐘诧工妤犲憡绂嶉崜褏纾奸弶鍫涘妼缁楁岸鏌熷畡鐗堝殗闁诡喒鏅犲畷褰掝敃閵堝棙顔忔繝鐢靛仦閸ㄥ爼骞愰幘顔肩;闁规崘绉ぐ鎺撳亹闁绘垶锕╁Λ鍕⒑閹肩偛濡奸悗娑掓櫇缁顓兼径妯绘櫇闂佹寧绻傞弻濠囨晝閸屾稓鍘甸柣搴㈢⊕閿氶柣蹇ョ稻缁绘繃绻濋崘銊т紝闂佽鍨伴崯鏉戠暦閻旂⒈鏁傞柛鈾€鏅欑槐妯衡攽閻愬樊鍤熷┑顔藉劤铻為柛鏇ㄥ墯閸欏繘鏌嶉崫鍕櫣缂佲偓婢跺绠鹃柟瀛樼箘閿涘秵顨ラ悙顏勭伈闁诡喖缍婂畷鎯邦槻婵℃彃顭烽弻娑㈠Ω閵夈儺鍔夌紓浣稿€哥粔褰掑极閹剧粯鏅搁柨鐕傛嫹 ---闂傚倷鐒︾€笛兠洪埡鍛闁跨噦鎷�
开发学院服务器云计算 云模式:为 Windows Azure 设计和部署服务 阅读

云模式:为 Windows Azure 设计和部署服务

 2010-03-26 00:00:00 来源:WEB开发网 闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹闂傚倷绀侀幉锟犲垂閻㈠灚宕查柟鎵閸庡秵銇勯幒鎴濃偓鐢稿磻閹炬枼妲堟繛鍡楃С濞岊亞绱撻崒姘扁枌闁瑰嚖鎷�婵犵數濮幏鍐川椤撴繄鎹曢梻渚€娼уú銈吤洪妸鈺佺劦妞ゆ帊鑳堕埊鏇㈡煏閸モ晛浠х紒杈╁仱閺佹捇鏁撻敓锟�闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹  闂傚倷鑳舵灙缂佺粯顨呴埢宥夊即閵忕姵鐎梺缁樺姈椤愮厧鈽夊Ο閿嬬€婚梺褰掑亰閸撴稑鈻斿鑸碘拺闁告稑饪村▓鏃€绻涚仦鍌氬闁崇粯鎹囬獮瀣攽閹邦剚顔傛俊鐐€栧濠氬储瑜忛幉鎾晸閿燂拷
核心提示: publicTransactionResponseReliableInsertMoney(AccountTransactionRequestaccountTransactionrequest){//lastparameter(true)meansthatwewanttoserialize//me

public TransactionResponse ReliableInsertMoney( 
 AccountTransactionRequest accountTransactionrequest) { 
 
//last parameter (true) means that we want to serialize 
//message to the queue as XML (serializeAsXml=true) 
 return UserAccountHandler.ReliableInsertMoney( 
  accounttransactionRequest.UserId, 
  accounttransactionRequest.AccountId, 
  accounttransactionRequest.Amount, true); 
}

UserAccountHandler 是返回 IUserAccountAction 的属性,将注入到运行时中。这使将实现与约定分离继而更改实现变得更容易:

public IUserAccountAction<Models.UserAccount> UserAccountHandler 
 {get;set;} 
 
public UserAccountService( 
 IUserAccountAction<Models.UserAccount> action) { 
 
 UserAccountHandler = action; 
}

在将消息发送到其中一个可靠的操作之后,该消息将被置于队列中。图 9 中的第一种方法显示了如何将数据存储为可序列化的 XML,第二种方法显示了如何将数据存储为队列中的字符串。请注意,Windows Azure Queues 中存在消息大小限制,最大为 8KB。

图 9 存储数据

public TransactionResponse ReliableHandleMoneyInQueueAsXml( 
 UserAccountTransaction accountTransaction){ 
 
 using (MemoryStream m = new MemoryStream()){ 
  XmlSerializer xs = 
   new XmlSerializer(typeof(UserAccountTransaction)); 
  xs.Serialize(m, accountTransaction); 
 
  try 
  { 
   QueueManager.AccountTransactionsQueue.AddMessage( 
    new CloudQueueMessage(m.ToArray())); 
   response.StatusForTransaction = TransactionStatus.Succeded; 
  } 
  catch(StorageClientException) 
  { 
   response.StatusForTransaction = TransactionStatus.Failed; 
   response.Message = 
    String.Format("Unable to insert message in the account transaction queue userId|AccountId={0}, messageId={1}", 
    accountTransaction.PartitionKey, accountTransaction.RowKey); 
  } 
 } 
 return response; 
} 
 
public TransactionResponse ReliableHandleMoneyInQueue( 
 UserAccountTransaction accountTransaction){ 
 
 TransactionResponse response = this.CheckIfTransactionExists( 
  accountTransaction.PartitionKey, accountTransaction.RowKey); 
    
 if (response.StatusForTransaction == TransactionStatus.Proceed) 
 { 
  //userid|accountid is partkey 
  //userid|accountid|transactionid|amount 
  string msg = string.Format("{0}|{1}|{2}", 
   accountTransaction.PartitionKey, 
   accountTransaction.RowKey, 
   accountTransaction.Amount); 
 
  try 
  { 
   QueueManager.AccountTransactionsQueue.AddMessage( 
    new CloudQueueMessage(msg)); 
   response.StatusForTransaction = TransactionStatus.Succeded; 
  } 
  catch(StorageClientException) 
  { 
   response.StatusForTransaction = TransactionStatus.Failed; 
   response.Message = 
    String.Format("Unable to insert message in the account transaction queue userId|AccountId={0}, messageId={1}", 
    accountTransaction.PartitionKey, accountTransaction.RowKey); 
  } 
 } 
 return response; 
}

上一页  3 4 5 6 7 8 9 10  下一页

Tags:模式 Windows Azure

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接