Windows Service Design - connection pool
-
Hello, I want to create a windows service that will act as a connection pool manager for a 3rd party tool to various apps (web, utilities, etc) that are running on same server. I'm struggling with how the other apps call this service without creating additional instances of the exe. I've played with load assembly and references and it seemingly is creating an additional instance. Proof: I have a static class that is populated (initialized) upon load of the service. When an app tries to create an instance of a different class that calls methods within the static class...the static class is empty (uninitialized). So my conclusuion is a second instance is created? How can I design this to do what I'm looking for... Thank you for your time... Nathan
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous
-
Hello, I want to create a windows service that will act as a connection pool manager for a 3rd party tool to various apps (web, utilities, etc) that are running on same server. I'm struggling with how the other apps call this service without creating additional instances of the exe. I've played with load assembly and references and it seemingly is creating an additional instance. Proof: I have a static class that is populated (initialized) upon load of the service. When an app tries to create an instance of a different class that calls methods within the static class...the static class is empty (uninitialized). So my conclusuion is a second instance is created? How can I design this to do what I'm looking for... Thank you for your time... Nathan
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous
nlarson11 wrote:
When an app tries to create an instance of a different class that calls methods within the static class...the static class is empty (uninitialized). So my conclusuion is a second instance is created?
Within that application; a static class is loaded only once per application-domain. Why does it have to be a Windows Service? If you're referencing it, or loading it in another app, then it is being used as a class-library.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
-
nlarson11 wrote:
When an app tries to create an instance of a different class that calls methods within the static class...the static class is empty (uninitialized). So my conclusuion is a second instance is created?
Within that application; a static class is loaded only once per application-domain. Why does it have to be a Windows Service? If you're referencing it, or loading it in another app, then it is being used as a class-library.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
Hello Eddy, thank you for your response... Windows service vs a class-library: My apps include a classic asp website, a asp.net wcf service site, a asp.net webforms site, a asp.net mvc site, as well as scheduled tasks. What keeps that library running and accessible from all calling apps? The intent is to use one pool, not one per app to cut down on the number of connections to our mainframe. The 3rd party tool creates two connections (first is to establish connection, second is the actual call to the service) per transaction to be able to call a specific service on our mainframe. The first connection can be "cached" / held on to which is what the pool manager is intended to do. Thanks again for your time..
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous 'Life's real failure is when you do not realize how close you were to success when you gave up.' ~ anonymous
-
Hello Eddy, thank you for your response... Windows service vs a class-library: My apps include a classic asp website, a asp.net wcf service site, a asp.net webforms site, a asp.net mvc site, as well as scheduled tasks. What keeps that library running and accessible from all calling apps? The intent is to use one pool, not one per app to cut down on the number of connections to our mainframe. The 3rd party tool creates two connections (first is to establish connection, second is the actual call to the service) per transaction to be able to call a specific service on our mainframe. The first connection can be "cached" / held on to which is what the pool manager is intended to do. Thanks again for your time..
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous 'Life's real failure is when you do not realize how close you were to success when you gave up.' ~ anonymous
nlarson11 wrote:
The first connection can be "cached" / held on to which is what the pool manager is intended to do.
It's still unclear where your class "is" - and the list of web-based apps doesn't simplify that. Where does the connection manager get it's connections from?
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
-
nlarson11 wrote:
The first connection can be "cached" / held on to which is what the pool manager is intended to do.
It's still unclear where your class "is" - and the list of web-based apps doesn't simplify that. Where does the connection manager get it's connections from?
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
Sorry - never been gifted in painting a picture :( The pool, connections, and transactions to the mainframe are all created/handled in the windows service. An app creates an instance to a class within the windows service that will execute transaction logic making it's way to the mainframe. This logic checks first if the pool has a link and uses it if it does or creates a link and then passes it to the pool to hold on to.
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous 'Life's real failure is when you do not realize how close you were to success when you gave up.' ~ anonymous
-
Sorry - never been gifted in painting a picture :( The pool, connections, and transactions to the mainframe are all created/handled in the windows service. An app creates an instance to a class within the windows service that will execute transaction logic making it's way to the mainframe. This logic checks first if the pool has a link and uses it if it does or creates a link and then passes it to the pool to hold on to.
'Never argue with an idiot; they'll drag you down to their level and beat you with experience.' ~ anonymous 'Life's real failure is when you do not realize how close you were to success when you gave up.' ~ anonymous
nlarson11 wrote:
The pool, connections, and transactions to the mainframe are all created/handled in the windows service
The
Pool
,Connection
andTransaction
are managed .NET classes? If yes, which clients will be using those classes? The static classes in there will be unique per AppDomain. You can't a static class to share resources among different applications - there's not a static class that's "global" across applications. A Windows-Service would only be usefull if there's an app that needs to run without user-supervision. It'd be comparable to writing a server-application, and yes, you could communicate with that. Is there an unmanaged resource that thePool
is protecting? What kind of connection is the user expecting? It "feels" like you're trying to limit database-connections - am I right?Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]