The site is a portal for several resorts.
Each resort has it's own database and other specific
resources.
As a user you could either search for available
available accomodation in one resort,
or you could search for available accomodation for all
resorts.
So, requests can be realm (resort) specific, where we
got a realmId (that comes as a rest req. param) that
determines in which
realm to resolve a specific component. (today we locate
the realm for the realmId, and uses it's ioc container
to resolve all realmspecific stuff)
For the situation where we would like to invoke same
logic for several realms, (aggregate all available
accommodation for all realms into one search result)
we simply loop all realms and perform some action on
each realm where the action will get the correct
dependencies injected into them via the realm.
Ehh, well, hope I have clarified something, or did I
make it worse? :)
It's kind if a special case, we are integrating with an
existing system.
2010/9/21 Krzysztof Koźmic <[email protected]
<mailto:[email protected]>>
There's no way to pass any parameters to
handlerselectors.
What are these realm things? How do you decide what
realm you're in at any given point in time?
On 21/09/2010 5:05 PM, John Gunnarsson wrote:
Okay,
Well its almost like a multi tenancy situation.
In some situations the
application Will handle operations on several
realms, so i cant rely
on one thread = same realm or something like that.
So how do i provide the context? Can i pass some
kind of context at
resolvetime that the IHandlerSelector can use
for its decition?
On Tuesday, September 21, 2010, Krzysztof Koźmic
<[email protected]
<mailto:[email protected]>> wrote:
From what I understand what you call realm
is usually called a tenant.
In general Windsor's solution for multi
tenancy is to have one container with all
the components (that would mean you'd
register all your ISessionFactories) and
then use IHandlerSelector to pick the one
that is needed.
2010/9/21
quo<[email protected]
<mailto:[email protected]>>
Hi,
I would like some advice from you guys
regarding contextual
dependencies
So my case looks like this, I got a bunch on
components registered in
my container (transients)
In the applicaton i got something that I
call realms. Each realm got
it's own database (nhibernate
ISessionFactory), a mongo session
factory etc. etc.
Usually i want to resolve a component within
the context of a realm,
so for example, I expect to have the correct
session factory injecten
into my repositories etc.
The solution that I have today is to have
one Ioc container for each
realm, and register all transients in every
realms container,
additionally to register diffrent singelton
instances of the
sessionfactory etc in each realm.
My prefered solution would be something like
having one container to
register all my transients in (all common
components, only registered
once), and depending on my context somehow
provide additional
dependencies like sessionfactory etc.
Initially a childcontainer per realm (to be
used as a context where I
could register sessionfactories etc) seemed
like my new best friend,
but unfortunately that didn't work out:
http://issues.castleproject.org/issue/IOC-116
My next try was do provide my contextual
dependencies via a
Dictionary<Type,object> at resolve time,
but that didn't work either:
http://issues.castleproject.org/issue/IOC-219
My design goal is that my components should
not be aware that there
exists several realms, they should just
depend on the fact that all
underlying dependencies is correctly resolved.
How do you solve contextual dependencies?
Can't find any good info about someone else
having the same
requirement's, have I screwed up royal in my
design?
//John
--
You received this message because you are
subscribed to the Google Groups "Castle
Project Users" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email
to
[email protected]
<mailto:castle-project-users%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.
--
You received this message because you are
subscribed to the Google Groups "Castle
Project Users" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email
to
[email protected]
<mailto:castle-project-users%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.
--
You received this message because you are subscribed
to the Google Groups "Castle Project Users" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:castle-project-users%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.
--
You received this message because you are subscribed to
the Google Groups "Castle Project Users" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:[email protected]>.
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.