Global vars in different build scenarios.

A

Adrian

We have a solution where one project contains a set of business rules. We
use the rules in a web application and they're integrated into the main web
project. Any global varaibles for the user are stored on the web session,
and that all works fine.

Now the fun part, we now have to be able to call these business rules from
an old powerbuilder app, where a web server isn't available, so have to use
a com interface layer to call the business rules. The problem is that we
need the com class to initialise some variables and make them available to
the rules class. I know there's not a session object, but how do you go
about coding for the two very different scenarios that the business object
will be living in?

Cheers
Adrian
 
J

Jeroen Mostert

Adrian said:
We have a solution where one project contains a set of business rules. We
use the rules in a web application and they're integrated into the main web
project. Any global varaibles for the user are stored on the web session,
and that all works fine.

Now the fun part, we now have to be able to call these business rules from
an old powerbuilder app, where a web server isn't available, so have to use
a com interface layer to call the business rules. The problem is that we
need the com class to initialise some variables and make them available to
the rules class. I know there's not a session object, but how do you go
about coding for the two very different scenarios that the business object
will be living in?
I don't know exactly who said it, but it's a truism that there's no problem
in computing that can't be solved by adding an extra layer.

Create a new assembly and within it define a UserGlobals class to hold the
globals you need. Give it a static factory method to return the globals for
a particular user. The business object should use that method only to get at
the globals, and the only thing that's different is the way you
create/initialize these instances. You can check HttpContext.Current to see
if you're running in the context of a website (you can reference System.Web
from any .NET assembly, it doesn't need to be a website project). If so,
retrieve settings from the session, if not, get them some other way.
 
A

Adrian

Aha ok thanks Jeroen

Jeroen Mostert said:
I don't know exactly who said it, but it's a truism that there's no
problem in computing that can't be solved by adding an extra layer.

Create a new assembly and within it define a UserGlobals class to hold the
globals you need. Give it a static factory method to return the globals
for a particular user. The business object should use that method only to
get at the globals, and the only thing that's different is the way you
create/initialize these instances. You can check HttpContext.Current to
see if you're running in the context of a website (you can reference
System.Web from any .NET assembly, it doesn't need to be a website
project). If so, retrieve settings from the session, if not, get them some
other way.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top