Solved

is transaction-support in asp.net overkill?

Posted on 2003-11-12
7
607 Views
Last Modified: 2013-11-25
Hi,

does anybody have experience with the 'transaction' keyword of the @page directive in asp.net?

<% @page ... transaction="Requires | Supported | RequiresNew | ..." %>

I will give the points not for a solution but for a 'best practices' of how and when I should use
Microsoft transaction server (MTS) as a transaction layer. Especially the influence on performance
and reliability would be very interesting.

As I am in the middle of a time-critical project I appreciate any quick help :-)

Thx in advance,
foobar
0
Comment
Question by:foobar43
  • 4
  • 3
7 Comments
 
LVL 4

Expert Comment

by:NetPointer
ID: 9733538
This link will explain you about when to use com+ services...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet04232002.asp
it also shows u how to use them


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/entserv.asp
this will show u how it works internally and why its over kill..


This is excellent resource about COM+Services...
http://www.ondotnet.com/pub/a/dotnet/excerpt/com_dotnet_ch10/index.html?page=1

HTH
NetPointer
0
 
LVL 1

Author Comment

by:foobar43
ID: 9734801
NetPointer,

great, in-deep information even though the information itself is another overkill :-)

Definitely I will take the time after the project to read all of it, but apparently I would appreciate
some real-life experience with COM+ transactions in the scope of ASP.NET pages.

I expect them to be a great way to keep all the database operations within the
page in one great transaction that would roll back in the case of error / exception.

It this true or would someone suggest to use local transactions instead?

(1)
  SqlConnection conn = ....
  SqlTransaction trans = conn.BeginTransaction();

versus

(2)
  <%@ page transaction="RequiresNew" %>

Especially I am interested in the performance impact and the reliability of the
MTS service itself. We all know M$ products from time to time have their
little problems...

thx @lot
foobar
0
 
LVL 4

Expert Comment

by:NetPointer
ID: 9735825
I will prefer the MTS transactions in case there are multiple database and connections involved....for single connection/database i will prefer the first method...

Regards,
NetPointer
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 1

Author Comment

by:foobar43
ID: 9735906
makes sense...

just one thing without wanting to stretch your patience too far:

I have a couple of business objects that encapsulate the database data like

Order
Customer
Product
Size

in order to keep the interface to these objects pure and clean I implicitly get a pooled
SqlConnection inside the business object method

example:

public Product FindByName(string name)
{
  SqlConnection conn = Database.GetConnection(); // get a pooled connection
 
  <blah>
  ....
  </blah>

}

In order to use local transactions I would probably need

public Product FindByName(SqlTransaction trans, string name)
{
  SqlConnection = trans.Connection;
 
  <blah>
}

I think having system-specific stuff as part of the business object
methods would be really a loss of purity. Automatic transactions with COM+
would prevent that and even simplify programming.

Do you think the possible loss of performance is significant / worth it?

Is pooling connections inside the methods really crappy or can you live with it?

mucho gracias
foobar
0
 
LVL 1

Author Comment

by:foobar43
ID: 9735911
little typo:

public Product FindByName(string name)
 
->

public static Product FindByName(string name)
0
 
LVL 4

Accepted Solution

by:
NetPointer earned 500 total points
ID: 9736335
first, I would check that whats the necessicity of transaction for GETTING data....

Usually we use transactions to maintain data integrity...so in that case, u will use it usually while u Insert/update data in database.

Second, like when u r updating more then one tables, I would take an approach that I just call stored proc passing it to necessary paras...and then in that stored proc, i will use sql servers begintran committran and in between i will update multiple tables.

>I think having system-specific stuff as part of the business object
>methods would be really a loss of purity. Automatic transactions with COM+
>would prevent that and even simplify programming.

I agree with this...but COM+ is using interop which significantly adds overheads to your application which I would avoid till it is strictly desired...

instead you can use a seperate Data access layer, which is invoked by your business layer..If you got some time, I recommended Microsoft data access block to study..

HTH,
NetPointer
0
 
LVL 1

Author Comment

by:foobar43
ID: 9736353
hey, thanks a lot for your help!!

for now I got enough information to put a decision on the current project.
I will go for a mixture of local and stored procedure transactions for the
benefit of speed (plus one service less needed to run my app -
namely MS-DTC).

despite the points I got some nice information for you too which I found
previously. very nice article on performance and .net-transactions in web-apps:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/psent.asp

you are absolutely right, the com+ interop overhead is just _too_ much...

thanks and have a nice day

regards
foobar
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now