自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET的XML Web服務(wù)方法

開發(fā) 后端
本文介紹ASP.NET支持XML Web服務(wù)方法的事務(wù)利用公共語言運行期中的支持,其是基于Microsoft Transaction Server ( MTS)和COM+ Services中相同的分布式事務(wù)模型。

ASP.NET支持XML Web服務(wù)方法的事務(wù)利用公共語言運行期中的支持,其是基于Microsoft Transaction Server ( MTS)和COM+ Services中相同的分布式事務(wù)模型。該模型基于明確的判斷一個對象是否參與一個事務(wù),而不是編寫特定的代碼用來處理委托和回調(diào)一個事務(wù)。對于一個使用ASP.NET創(chuàng)建的XML Web服務(wù),你可以通過設(shè)置其應(yīng)用到一個XML Web服務(wù)方法上的WebMethod屬性的TransactionOption屬性來聲明一個XML Web服務(wù)的事務(wù)行為。如果該XML Web服務(wù)方法執(zhí)行的時候拋出一個異常,那么該事務(wù)自動地結(jié)束;相反,如果沒有發(fā)生異常,該事務(wù)自動委托。

WebMethod屬性的TransactionOption屬性規(guī)定一個XML Web服務(wù)方法如何參與一個事務(wù)。雖然這個聲明級別表示一個事務(wù)邏輯,但是它是消除實際事務(wù)的一個步驟。當(dāng)事物對象訪問數(shù)據(jù)源(如數(shù)據(jù)庫或消息隊列)時實際事務(wù)產(chǎn)生。關(guān)聯(lián)該對象的事務(wù)自動流向適當(dāng)?shù)馁Y源管理程序。像.NET Framework Data Provider(用于SQL Server或OLE DB)這樣的.NET Framework數(shù)據(jù)提供者在對象的上下文中查找事務(wù)并通過Distributed Transaction Coordinator (DTC,分布式事務(wù)協(xié)調(diào)程序)編目事務(wù)。全部的事務(wù)自動產(chǎn)生。

XML Web服務(wù)方法只能參與一個作為新事務(wù)的根的事務(wù)。作為一個新事務(wù)的根,所有的與資源管理器(像運行Microsoft SQL Server、Microsoft Message Queuing和Microsoft Host Integration Server的服務(wù)器)的相互作用維護需要運行健壯的分布式應(yīng)用程序的ACID性質(zhì)。調(diào)用其他的XML Web服務(wù)方法的XML Web服務(wù)方法參與不同的事務(wù),因為事務(wù)不流經(jīng)XML Web服務(wù)方法。

ASP.NET使用來自XML Web服務(wù)方法的事務(wù)
聲明一個XML Web服務(wù)。

  1. <%@WebServiceLanguage="C#"Class="Orders"%> 
  2. <%@Assemblyname="System.EnterpriseServices,Version=1.0.3300.0,
    Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
    %> 
  3. usingSystem;  
  4. usingSystem.Data;  
  5. usingSystem.Data.SqlClient;  
  6. usingSystem.Web.Services;  
  7. usingSystem.EnterpriseServices;  
  8.  
  9. publicclassOrders:WebService  
  10. {  
  11. [WebMethod(TransactionOptionTransactionOption=TransactionOption.RequiresNew)]  
  12. publicintDeleteAuthor(stringlastName)  
  13. {  
  14. StringdeleteCmd="DELETEFROMauthorsWHEREau_lname='"+  
  15. lastName+"'";  
  16. StringexceptionCausingCmdSQL="DELETEFROMNonExistingTableWHERE  
  17. au_lname='"+lastName+"'";  
  18.  
  19. SqlConnectionsqlConn=newSqlConnection(  
  20. "PersistSecurityInfo=False;IntegratedSecurity=SSPI;database=pubs;server=myserver");  
  21.  
  22. SqlCommanddeleteCmd=newSqlCommand(deleteCmdSQL,sqlConn);  
  23. SqlCommandexceptionCausingCmd=new 
  24. SqlCommand(exceptionCausingCmdSQL,sqlConn);  
  25.  
  26. //Thiscommandshouldexecuteproperly.  
  27. deleteCmd.Connection.Open();  
  28. deleteCmd.ExecuteNonQuery();  
  29.  
  30. //Thiscommandresultsinanexception,sothefirstcommandis  
  31. //automaticallyrolledback.SincetheXMLWebservicemethodis  
  32. //participatinginatransaction,andanexceptionoccurs,ASP.NET  
  33. //automaticallyabortsthetransaction.ThedeleteCmdthat  
  34. //executedproperlyisrolledback.  
  35.  
  36. intcmdResult=exceptionCausingCmd.ExecuteNonQuery();  
  37.  
  38. sqlConn.Close();  
  39.  
  40. returncmdResult;  
  41. }  
  42. }  
  43. [VisualBasic]  
  44. <%@WebServiceLanguage="VB"Class="Orders"%> 
  45. <%@assemblyname="System.EnterpriseServices"%> 
  46.  
  47. ImportsSystem  
  48. ImportsSystem.Data  
  49. ImportsSystem.Data.SqlClient  
  50. ImportsSystem.Web.Services  
  51. ImportsSystem.Web.Util  
  52. ImportsSystem.EnterpriseServices  
  53.  
  54. PublicClassOrders  
  55.  
  56. <WebMethod(TransactionOptionTransactionOption:=TransactionOption.RequiresNew)>_  
  57. PublicFunctionDeleteAuthor(lastNameasString)asInteger  
  58.  
  59. DimdeleteCmdSQLAsString="DELETEFROMauthorsWHEREau_lname='"+_  
  60. lastName+"'"  
  61. DimexceptionCausingCmdSQLAsString="DELETEFROM"+_  
  62. "NonExistingTableWHEREau_lname='"+lastName+"'"  
  63.  
  64. DimsqlConnAsSqlConnection=NewSqlConnection(_  
  65. "PersistSecurityInfo=False;IntegratedSecurity=SSPI;database=pubs;server=myserver")  
  66.  
  67. DimdeleteCmdAsSqlCommand=NewSqlCommand(deleteCmdSQL,sqlConn)  
  68. DimexceptionCausingCmdAsSqlCommand=New_ 
  69. SqlCommand(exceptionCausingCmdSQL,sqlConn)  
  70.  
  71. 'Thiscommandshouldexecuteproperly.  
  72. deleteCmd.Connection.Open()  
  73. deleteCmd.ExecuteNonQuery()  
  74.  
  75. 'Thiscommandresultsinanexception,sothefirstcommandis  
  76. 'automaticallyrolledback.SincetheXMLWebservicemethodis  
  77. 'participatinginatransaction,andanexceptionoccurs,ASP.NET  
  78. 'automaticallyabortsthetransaction.ThedeleteCmdthat  
  79. 'executedproperlyisrolledback.  
  80.  
  81. DimcmdResultAsInteger=exceptionCausingCmd.ExecuteNonQuery()  
  82. sqlConn.Close()  
  83.  
  84. ReturncmdResult  
  85. EndFunction  
  86. EndClass 

【編輯推薦】

  1. ASP.NET頁面顯示XML數(shù)據(jù)
  2. 了解什么是IFRAME ASP.NET
  3. ASP.NET生命周期的展示
  4. 解決ASP.NET AJAX腳本的錯誤問題
  5. 詳解ASP.NET應(yīng)用程序
責(zé)任編輯:佚名 來源: 51cto博客
相關(guān)推薦

2009-07-23 15:18:30

創(chuàng)建XML Web服務(wù)ASP.NET

2009-07-28 16:29:06

XML Web服務(wù)ASP.NET構(gòu)造

2009-07-28 17:34:28

ASP.NET XML

2009-07-28 17:28:49

XML Web服務(wù)使用ASP.NET

2009-07-28 15:53:43

ASP.NET Web

2009-07-23 16:44:50

XML Web服務(wù)使用ASP.NET構(gòu)造

2009-07-28 14:40:15

XML數(shù)據(jù)ASP.NET

2009-07-24 16:05:05

調(diào)用Web ServiASP.NET

2009-07-27 14:46:16

XML和ASP.NET

2009-09-04 13:11:25

ASP.NET生成XM

2009-12-25 10:36:10

ASP.NET 和 X

2009-08-28 09:58:20

ASP.NET Web

2010-03-12 09:38:58

2009-07-28 13:26:34

Render方法ASP.NET

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-07-23 14:08:58

2009-07-28 10:43:23

Web服務(wù)器ASP.NET

2009-07-29 17:16:47

2011-07-06 13:41:06

ASP.NET

2014-07-31 09:28:09

ASP.NETWeb API
點贊
收藏

51CTO技術(shù)棧公眾號