MTSTransactionMode Property
Author |
Message |
Kip Fryma #1 / 9
|
 MTSTransactionMode Property
All my MTS Classes are using this setting NotAnMTSObject and they seem to run fine under MTS... These are not transactional componants and do not require SetAbort and the like.... Should they be set to NoTransactions instead... What difference would it make?
|
Sat, 24 Jan 2004 23:08:04 GMT |
|
 |
Chris Heywoo #2 / 9
|
 MTSTransactionMode Property
MTS is there mainly to allow (as it's name suggests) for a higher level of transaction control, it also gives some nice functionality for pooling and sharing of properties. If you do not use transactions in your components I would suggest not using MTS, even though your component may be easier to install, it places quite a large overhead on you DLL regardless of whether they are set to use transactions or not. The NotAnMTSObject is pretty much the same as NoTransactions (as MTS sees it) the difference is simply from a developers perspective that something which says it isn't an MTS object should not sit under MTS, whereas something that doesn't use transactions is obviously an MTS component which doesn't require wrapping up in a transaction. HTH
Quote: > All my MTS Classes are using this setting NotAnMTSObject and they seem to > run fine under MTS... > These are not transactional componants and do not require SetAbort and the > like.... > Should they be set to NoTransactions instead... What difference would it > make?
|
Sat, 24 Jan 2004 23:24:36 GMT |
|
 |
Hercules Gunte #3 / 9
|
 MTSTransactionMode Property
Chris I've been led to believe that one of the benefits of wrapping things in MTS packages is that the components can be upgraded/replaced without first stopping IIS, which otherwise tends not to let go without a reboot of the server. The idea is that MTS terminates the component as soon as the calling context has done with it, making management easier. If this is not the case, I'd be interested in more information (in this area, I am only an egg). Quote:
> MTS is there mainly to allow (as it's name suggests) for a higher level of > transaction control, it also gives some nice functionality for pooling and > sharing of properties. If you do not use transactions in your components I > would suggest not using MTS, even though your component may be easier to > install, it places quite a large overhead on you DLL regardless of whether > they are set to use transactions or not. > The NotAnMTSObject is pretty much the same as NoTransactions (as MTS sees > it) the difference is simply from a developers perspective that something > which says it isn't an MTS object should not sit under MTS, whereas > something that doesn't use transactions is obviously an MTS component which > doesn't require wrapping up in a transaction. > HTH > Chris.Heywood
> > All my MTS Classes are using this setting NotAnMTSObject and they seem to > > run fine under MTS... > > These are not transactional componants and do not require SetAbort and the > > like.... > > Should they be set to NoTransactions instead... What difference would it > > make?
|
Tue, 27 Jan 2004 23:03:28 GMT |
|
 |
Chris Heywoo #4 / 9
|
 MTSTransactionMode Property
You can set the life time of an object, I think the default is three minutes, MTS/COM+ shuts a created object down if it's left idle for those three minutes. After MTS has shut the object down you can quickly overwrite it with your new version. True, this does make the management easier, but in my line of work, we generally have to shut everything down to do an update anyway, I believe this is probably the case with most "live" systems.
Quote: > Chris > I've been led to believe that one of the benefits of wrapping things in MTS > packages is that the components can be upgraded/replaced without first stopping > IIS, which otherwise tends not to let go without a reboot of the server. The > idea is that MTS terminates the component as soon as the calling context has > done with it, making management easier. If this is not the case, I'd be > interested in more information (in this area, I am only an egg).
> > MTS is there mainly to allow (as it's name suggests) for a higher level of > > transaction control, it also gives some nice functionality for pooling and > > sharing of properties. If you do not use transactions in your components I > > would suggest not using MTS, even though your component may be easier to > > install, it places quite a large overhead on you DLL regardless of whether > > they are set to use transactions or not. > > The NotAnMTSObject is pretty much the same as NoTransactions (as MTS sees > > it) the difference is simply from a developers perspective that something > > which says it isn't an MTS object should not sit under MTS, whereas > > something that doesn't use transactions is obviously an MTS component which > > doesn't require wrapping up in a transaction. > > HTH > > Chris.Heywood
> > > All my MTS Classes are using this setting NotAnMTSObject and they seem to > > > run fine under MTS... > > > These are not transactional componants and do not require SetAbort and the > > > like.... > > > Should they be set to NoTransactions instead... What difference would it > > > make?
|
Tue, 27 Jan 2004 23:18:20 GMT |
|
 |
Kip Fryma #5 / 9
|
 MTSTransactionMode Property
If objects are shut down after three minutes what happens to obects that are declared at the beginning of the client application and released at the end?
Quote: > You can set the life time of an object, I think the default is three > minutes, MTS/COM+ shuts a created object down if it's left idle for those > three minutes. After MTS has shut the object down you can quickly overwrite > it with your new version. > True, this does make the management easier, but in my line of work, we > generally have to shut everything down to do an update anyway, I believe > this is probably the case with most "live" systems. > Chris.Heywood
> > Chris > > I've been led to believe that one of the benefits of wrapping things in > MTS > > packages is that the components can be upgraded/replaced without first > stopping > > IIS, which otherwise tends not to let go without a reboot of the server. > The > > idea is that MTS terminates the component as soon as the calling context > has > > done with it, making management easier. If this is not the case, I'd be > > interested in more information (in this area, I am only an egg).
> > > MTS is there mainly to allow (as it's name suggests) for a higher level > of > > > transaction control, it also gives some nice functionality for pooling > and > > > sharing of properties. If you do not use transactions in your > components I > > > would suggest not using MTS, even though your component may be easier to > > > install, it places quite a large overhead on you DLL regardless of > whether > > > they are set to use transactions or not. > > > The NotAnMTSObject is pretty much the same as NoTransactions (as MTS > sees > > > it) the difference is simply from a developers perspective that > something > > > which says it isn't an MTS object should not sit under MTS, whereas > > > something that doesn't use transactions is obviously an MTS component > which > > > doesn't require wrapping up in a transaction. > > > HTH > > > Chris.Heywood
> > > > All my MTS Classes are using this setting NotAnMTSObject and they seem > to > > > > run fine under MTS... > > > > These are not transactional componants and do not require SetAbort and > the > > > > like.... > > > > Should they be set to NoTransactions instead... What difference would > it > > > > make?
|
Wed, 28 Jan 2004 01:38:25 GMT |
|
 |
Trevor Benedict #6 / 9
|
 MTSTransactionMode Property
Hi Kip, Chris was right. The object comes to the idle state after you release the reference to it (after you release it at the end). Not when you're still holding on to it. Correct me if I'm wrong. Trevor Benedict R Software Consultant Mastech Malaysia Sdn Bhd
If objects are shut down after three minutes what happens to obects that are declared at the beginning of the client application and released at the end?
> You can set the life time of an object, I think the default is three > minutes, MTS/COM+ shuts a created object down if it's left idle for those > three minutes. After MTS has shut the object down you can quickly overwrite > it with your new version. > > True, this does make the management easier, but in my line of work, we > generally have to shut everything down to do an update anyway, I believe > this is probably the case with most "live" systems. > > Chris.Heywood
>
> > Chris > > > > I've been led to believe that one of the benefits of wrapping things in > MTS > > packages is that the components can be upgraded/replaced without first > stopping > > IIS, which otherwise tends not to let go without a reboot of the server. > The > > idea is that MTS terminates the component as soon as the calling context > has > > done with it, making management easier. If this is not the case, I'd be > > interested in more information (in this area, I am only an egg). > >
> > > > > MTS is there mainly to allow (as it's name suggests) for a higher level > of > > > transaction control, it also gives some nice functionality for pooling > and > > > sharing of properties. If you do not use transactions in your > components I > > > would suggest not using MTS, even though your component may be easier to > > > install, it places quite a large overhead on you DLL regardless of > whether > > > they are set to use transactions or not. > > > > > > The NotAnMTSObject is pretty much the same as NoTransactions (as MTS > sees > > > it) the difference is simply from a developers perspective that > something > > > which says it isn't an MTS object should not sit under MTS, whereas > > > something that doesn't use transactions is obviously an MTS component > which > > > doesn't require wrapping up in a transaction. > > > > > > HTH > > > > > > Chris.Heywood
> > >
> > > > > > > > All my MTS Classes are using this setting NotAnMTSObject and they seem > to > > > > run fine under MTS... > > > > > > > > These are not transactional componants and do not require SetAbort and > the > > > > like.... > > > > > > > > Should they be set to NoTransactions instead... What difference would > it > > > > make? > > > > > > > > > > > > > > > >
|
Wed, 28 Jan 2004 17:03:27 GMT |
|
 |
Kip Fryma #7 / 9
|
 MTSTransactionMode Property
Ok, so then why wouldn't it be destroyed right away? If it is idle and the reference is lost...
Hi Kip, Chris was right. The object comes to the idle state after you release the reference to it (after you release it at the end). Not when you're still holding on to it. Correct me if I'm wrong. Trevor Benedict R Software Consultant Mastech Malaysia Sdn Bhd
If objects are shut down after three minutes what happens to obects that are declared at the beginning of the client application and released at the end?
> You can set the life time of an object, I think the default is three > minutes, MTS/COM+ shuts a created object down if it's left idle for those > three minutes. After MTS has shut the object down you can quickly overwrite > it with your new version. > > True, this does make the management easier, but in my line of work, we > generally have to shut everything down to do an update anyway, I believe > this is probably the case with most "live" systems. > > Chris.Heywood
>
> > Chris > > > > I've been led to believe that one of the benefits of wrapping things in > MTS > > packages is that the components can be upgraded/replaced without first > stopping > > IIS, which otherwise tends not to let go without a reboot of the server. > The > > idea is that MTS terminates the component as soon as the calling context > has > > done with it, making management easier. If this is not the case, I'd be > > interested in more information (in this area, I am only an egg). > >
> > > > > MTS is there mainly to allow (as it's name suggests) for a higher level > of > > > transaction control, it also gives some nice functionality for pooling > and > > > sharing of properties. If you do not use transactions in your > components I > > > would suggest not using MTS, even though your component may be easier to > > > install, it places quite a large overhead on you DLL regardless of > whether > > > they are set to use transactions or not. > > > > > > The NotAnMTSObject is pretty much the same as NoTransactions (as MTS > sees > > > it) the difference is simply from a developers perspective that > something > > > which says it isn't an MTS object should not sit under MTS, whereas > > > something that doesn't use transactions is obviously an MTS component > which > > > doesn't require wrapping up in a transaction. > > > > > > HTH > > > > > > Chris.Heywood
> > >
> > > > > > > > All my MTS Classes are using this setting NotAnMTSObject and they seem > to > > > > run fine under MTS... > > > > > > > > These are not transactional componants and do not require SetAbort and > the > > > > like.... > > > > > > > > Should they be set to NoTransactions instead... What difference would > it > > > > make? > > > > > > > > > > > > > > > >
|
Fri, 30 Jan 2004 21:29:57 GMT |
|
 |
Hercules Gunte #8 / 9
|
 MTSTransactionMode Property
This is an area where the documentation I've read is a little unclear. There is the implication that component shutdown is a low-priority task, with the further implication that one can normally expect the shutdown to take place after 2 minutes or more. Given that I've had the things persist several hours, I've learned to take this with several pinches of salt - OK, let's be honest, I simply don't believe a word of it any more. There are caveats in the documentation, on the lines that if objects have unresolved references or references to other objects they have not themselves shut down, and especially if there's a circular reference back to the object itself, you may never get the thing to go away. All this makes sense, but one has this niggling doubt that there is, shall we say, an undocumented feature somewhere which keeps objects alive past their time. Now if only I could find out what it is, and apply it to me ... Quote:
> Ok, so then why wouldn't it be destroyed right away? If > it is idle and the reference is lost...
> was right. The object comes to the idle state > after you release the reference to it (after you > release it at the end). Not when you're still > holding on to it. Correct me if I'm wrong.
Trevor Benedict R Software Consultant Mastech Malaysia Sdn Bhd Quote:
> message
> objects are shut down after three > minutes what happens to obects that > are > declared at the beginning of the > client application and released at the > end? > "Chris Heywood"
> > You can set the life time of an > object, I think the default is three > > minutes, MTS/COM+ shuts a created > object down if it's left idle for > those > > three minutes. After MTS has shut > the object down you can quickly > overwrite > > it with your new version. > > True, this does make the management > easier, but in my line of work, we > > generally have to shut everything > down to do an update anyway, I believe > > this is probably the case with most > "live" systems. > > Chris.Heywood
> > "Hercules Gunter"
> > > Chris > > > I've been led to believe that one > of the benefits of wrapping things in > > MTS > > > packages is that the components > can be upgraded/replaced without first > > stopping > > > IIS, which otherwise tends not to > let go without a reboot of the server. > > The > > > idea is that MTS terminates the > component as soon as the calling > context > > has > > > done with it, making management > easier. If this is not the case, I'd > be > > > interested in more information (in > this area, I am only an egg).
> > > > MTS is there mainly to allow (as > it's name suggests) for a higher > level > > of > > > > transaction control, it also > gives some nice functionality for > pooling > > and > > > > sharing of properties. If you > do not use transactions in your > > components I > > > > would suggest not using MTS, > even though your component may be > easier > to > > > > install, it places quite a large > overhead on you DLL regardless of > > whether > > > > they are set to use transactions > or not. > > > > The NotAnMTSObject is pretty > much the same as NoTransactions (as > MTS > > sees > > > > it) the difference is simply > from a developers perspective that > > something > > > > which says it isn't an MTS > object should not sit under MTS, > whereas > > > > something that doesn't use > transactions is obviously an MTS > component > > which > > > > doesn't require wrapping up in a > transaction. > > > > HTH > > > > Chris.Heywood
> > > > > All my MTS Classes are using > this setting NotAnMTSObject and they > seem > > to > > > > > run fine under MTS... > > > > > These are not transactional > componants and do not require SetAbort > and > > the > > > > > like.... > > > > > Should they be set to > NoTransactions instead... What > difference > would > > it > > > > > make?
|
Fri, 30 Jan 2004 22:08:11 GMT |
|
 |
Chris Heywoo #9 / 9
|
 MTSTransactionMode Property
Others explain things better than I so here is an extract from http://tech.indiainfo.com/technology/digital/tech/Work.html For MTS-compliant (that is, stateless) components, MTS maintains a pool of objects of the same type as requested by the object client. Since these components are MTS compliant (stateless), MTS can afford to execute one client request from one object instance in the pool, while executing another client request from another object instance. These object instances are kept alive by MTS, even after a client disconnects from the object, and the connection between the client and the context wrapper which encapsulates the object is broken.This helps it scale such components because, when a new request from some other client comes in for the same object, instead of reactivating and instantiating the object again, MTS simply creates a context wrapper which links the client to the object and client requests are fulfilled using the object instances from the pool maintained by MTS. Also, such components can tell MTS when they're through with a request, so that MTS can free that instance for use by some other client. On the other hand, MTS can't maintain the pool for stateful objects since they're unaware of MTS, and hence can't tell MTS when they're done. Moreover, since they maintain their state between instances, MTS can't afford to fulfill one client request from one instance and another from another instance. HTH
Ok, so then why wouldn't it be destroyed right away? If it is idle and the reference is lost...
Hi Kip, Chris was right. The object comes to the idle state after you release the reference to it (after you release it at the end). Not when you're still holding on to it. Correct me if I'm wrong. Trevor Benedict R Software Consultant Mastech Malaysia Sdn Bhd
If objects are shut down after three minutes what happens to obects that are declared at the beginning of the client application and released at the end?
> You can set the life time of an object, I think the default is three > minutes, MTS/COM+ shuts a created object down if it's left idle for those > three minutes. After MTS has shut the object down you can quickly overwrite > it with your new version. > > True, this does make the management easier, but in my line of work, we > generally have to shut everything down to do an update anyway, I believe > this is probably the case with most "live" systems. > > Chris.Heywood
>
> > Chris > > > > I've been led to believe that one of the benefits of wrapping things in > MTS > > packages is that the components can be upgraded/replaced without first > stopping > > IIS, which otherwise tends not to let go without a reboot of the server. > The > > idea is that MTS terminates the component as soon as the calling context > has > > done with it, making management easier. If this is not the case, I'd be > > interested in more information (in this area, I am only an egg). > >
> > > > > MTS is there mainly to allow (as it's name suggests) for a higher level > of > > > transaction control, it also gives some nice functionality for pooling > and > > > sharing of properties. If you do not use transactions in your > components I > > > would suggest not using MTS, even though your component may be easier to > > > install, it places quite a large overhead on you DLL regardless of > whether > > > they are set to use transactions or not. > > > > > > The NotAnMTSObject is pretty much the same as NoTransactions (as MTS > sees > > > it) the difference is simply from a developers perspective that > something > > > which says it isn't an MTS object should not sit under MTS, whereas > > > something that doesn't use transactions is obviously an MTS component > which > > > doesn't require wrapping up in a transaction. > > > > > > HTH > > > > > > Chris.Heywood
> > >
> > > > > > > > All my MTS Classes are using this setting NotAnMTSObject and they seem > to > > > > run fine under MTS... > > > > > > > > These are not transactional componants and do not require SetAbort and > the > > > > like.... > > > > > > > > Should they be set to NoTransactions instead... What difference would > it > > > > make? > > > > > > > > > > > > > > > >
|
Fri, 30 Jan 2004 22:44:29 GMT |
|
|
|