Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

is transaction-support in asp.net overkill?

Posted on 2003-11-12
7
Medium Priority
?
615 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
 [eBook] Windows Nano Server

Download this FREE eBook and learn all you need to get started with Windows Nano Server, including deployment options, remote management
and troubleshooting tips and tricks

 
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 2000 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

Configuration Guide and Best Practices

Read the guide to learn how to orchestrate Data ONTAP, create application-consistent backups and enable fast recovery from NetApp storage snapshots. Version 9.5 also contains performance and scalability enhancements to meet the needs of the largest enterprise environments.

Question has a verified solution.

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

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
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…
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…

885 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