Download presentation
Presentation is loading. Please wait.
Published byMarshall Hicks Modified over 9 years ago
1
DISTRIBUTED TRANSACTIONS IN.NET Presented By Divya Josyala.
2
Contents 1.Overview - Transaction - Local Transaction - Distributed Transaction - Acid Properties 2. Distributed transactions in.Net - Windows Application System.Transactions namespace - Demo - Web Services System.EnterpriseService namespaces - Demo - File Transaction –Demo 3. References
3
Overview What is a transaction? A transaction is a unit of work. Example: bank transfer operation. The application transfers funds from one -- account to another by debiting money from one account and crediting it to another.
4
Overview Local Transaction: transactions are performed on a single database Transfer( ) database Charge()Credit()
5
Overview Distributed Transaction - Transactions that span two or more databases. - Incorporates several distinct operations occurring on different systems into an atomic action that succeeds or fails completely. Transfer() Database1Database2 Charge() Credit()
6
Overview – ACID Properties ACID properties of a transaction Atomicity Either all the operations in a transaction should complete or none of them should. Consistency A transaction should preserve the consistency of data Isolation Requires that each transaction appears to be the only transaction manipulating the data source irrespective of other transactions running concurrently. Durability If a transaction succeeds the system should guarantee that its updates will persist, even if the computer crashes immediately after the application performs a commit operation
7
Distributed Transactions in.Net.Net framework provides support for distributed transactions in two ways TransactionScope class in System.Transactions namespace - Used in windows and web applications. ContextUtil class in System.EnterpriseServices namespace - Used in web services.
8
Distributed Transactions in.Net Method 1 System. Transactions namespace defines the TransactionScope class which enables you to create and manage distributed transactions. A Transaction scope defines a block of code that participates in a transaction. The first connection to a database within the transaction scope enlists it as a local transaction Subsequent connections to databases within the transaction scope promotes the local transaction to a distributed transaction.
9
TransactionOptions // Create the TransactionOptions object TransactionOptions TranOpt = new TransactionOptions(); // Set the Isolation Level TranOpt.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; // Set the timeout to be 2 minutes // Uses the (hours, minutes, seconds) constructor TimeSpan Time = new TimeSpan(0, 2, 0); TranOpt.Timeout = Time;
10
TransactionScopeOptions Description RequiredIf within a currently active transaction scope, this transaction scope will join it. Otherwise it will create its own transaction scope. RequiresNewThis transaction will create its own transaction scope. SupportsIf within a currently active transaction scope, this transaction scope will join it. Otherwise no transaction scope will be created. NotSupportedNo transaction scope will be created.
11
Transaction Scope - Code //Create a transaction scope object using (TransactionScope oTranScope = new TransactionScope()) { using (SqlConnection oCn1 = new SqlConnection(this.sCn1)) { SqlCommand oCmd = new SqlCommand(this.sSQL, oCn1); oCn1.Open(); oCmd.ExecuteNonQuery(); oCn1.Close(); } // Tells the transaction scope that the transaction is in a // consistent state and can be committed oTranScope.Complete(); // The following bracket completes, commits, and disposes // the transaction }
12
Distributed Transactions in.Net METHOD 2: Systems.EnterpriseServices namespace defines the contextutil class. Methods in the contextutil class used for distributed transactions are 1.SetComplete() – Indicates that the current transaction is committed and the object deactivated 2.SetAbort() –Indicates that the current transaction has to be rolled back and the object deactivated. AutoComplete attribute – calls the SetComplete method if no exceptions occur or SetAbort method if an exception is thrown. [WebMethod(false, TransactionOption.Required)] [AutoComplete]
13
WebService - DEPT [WebMethod(false, TransactionOption.Required)] public int AddDept(string deptName, string location) { try { string connString = System.Configuration.ConfigurationManager.ConnectionStrings ["ConnectionString"].ConnectionString; int deptNo; //Create the connection object passing to it the connection string SqlConnection connection = new SqlConnection(connString); connection.Open(); //Create and set the SqlCommand object and pass it the name of the // stored procedure to be executed SqlCommand command = new SqlCommand("AddDept", connection); //Indicates that you want to execute a stored procedure command.CommandType = CommandType.StoredProcedure;
14
WebService - DEPT //Add the DeptName parameter SqlParameter paramDeptName = new SqlParameter("@DeptName", SqlDbType.VarChar, 50); paramDeptName.Value = deptName; paramDeptName.Direction = ParameterDirection.Input; command.Parameters.Add(paramDeptName); //Add the Location parameter SqlParameter paramLocation = new SqlParameter("@Location", SqlDbType.VarChar, 50); paramLocation.Value = location; paramLocation.Direction = ParameterDirection.Input; command.Parameters.Add(paramLocation); //Add the DeptNo parameter as the Output parameter SqlParameter paramDeptNo = new SqlParameter("@DeptNo", SqlDbType.Int, 4); paramDeptNo.Direction = ParameterDirection.Output; command.Parameters.Add(paramDeptNo);
15
WebService - DEPT // Execute the Command command.ExecuteNonQuery(); //you can retrieve the output parameter from the parameters collection of //the SQL Command object deptNo = (int)command.Parameters["@DeptNo"].Value; //commiting the transaction using the SetComplete method of the //ContextUtil Class ContextUtil.SetComplete(); return deptNo; } catch (Exception ex) { //rollback all the database operations if exceptions occur ContextUtil.SetAbort(); throw ex; }
16
Calling Webservice - CODE [WebMethod(false, TransactionOption.Required)] public bool AddDeptEmployees(string deptName, string deptLocation, string empName, string empAddres) { try { int deptNo; //Create instances of the Department() and Employee() classes Department dept = new Department(); Employee emp = new Employee(); //Add the Dept details to the Dept table deptNo = dept.AddDept(deptName, deptLocation); //Add the Employee details to the Emp table //int empNo = emp.AddEmp(empName,empAddres,deptNo); int empNo = emp.AddEmp(empName, empAddres, 200); return true; } catch (Exception e) { throw e; }
17
REFERENCES MSDN - DATA POINTS – By John Papa Url: http://msdn.microsoft.com/msdnmag/issues/05/02/DataPoints/http://msdn.microsoft.com/msdnmag/issues/05/02/DataPoints/ Develop Transactional.Net Web Services – By Thiru Thangarathinam Url: http://www.developer.com/net/asp/article.php/3385631http://www.developer.com/net/asp/article.php/3385631
18
Comments / Questions ?? THE END
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.