Perhaps there could be a mechanism to continue to be queried for the validity 
of this object?
For example, if the main use for this would be managing WCF endpoints, they can 
transition to a faulted state, at which time they can no longer be used 
anymore, so its actually the ChannelFactory that needs to be cached (aswell)...
Im not sure of the best way to achieve this though.

I think the lazy handler should either:
1. allow the lazy handler to specify that its result should NOT be stored 
within the container, allowing the handler to return it on every request
2. or, allow the container to store the object using the appropriate lifecycle, 
BUT before returning the object, it passes the object to the lazy handler 
(ILazyHandler.IsComponentStale(object component) ?) to allow it to return false 
to let the container use its cached instance, or return true to have its query 
method called again to create a new instance of the type. This way it can look 
at the endpoint.State == Faulted, to test if it should recreate it or not...

Ideas?

Adam Langley
Senior Developer
www.winscribe.com


 Please consider the environment before printing this email!

From: castle-project-users@googlegroups.com 
[mailto:castle-project-us...@googlegroups.com] On Behalf Of Ayende Rahien
Sent: Tuesday, 11 August 2009 9:24 a.m.
To: castle-project-users@googlegroups.com
Subject: Re: Design questions for resolution of IOC-ISSUE-161

Hm,
I would say that we need a LazyHandler, then, no?
2009/8/6 Krzysztof Koźmic <krzysztof.koz...@gmail.com>
Hi,

Funny, how we were discussing with Craig this very issue not further than two 
days ago.
Anyway, I agree, that we should have something like ILazyComponentsProvider 
(being handler missing Craig mentioned)
that would be last place to ask, before throwing exception. Note that this 
would also have to support missing required (optional as well?) dependencies.
I think that after lazy loading we should register the component in the 
container, so that next time its ask for it's loaded using standard means.

Krzysztof


Craig Neuwirt wrote: 
Ayende,
 
  I believe the IHandlerSelector was mainly used to select from an existing set 
of handlers.  What we
need is HandlerMissing support which will allow us to dynamically return 
handlers and/or register them
at the same time.  I am on vacation for a few days, but we can chat about this 
(If not already implemented ;-)
when I return on Tues.
 
Cheers,
  craig
On Wed, Aug 5, 2009 at 6:07 PM, Ayende Rahien <aye...@ayende.com> wrote:
IHandlerSelector is how I would handle this. 
You would need to provide an implementation of IHandler that provide instances 
via the WCF client support.
Shouldn't be too hard, I think. 

On Thu, Aug 6, 2009 at 1:52 AM, Adam Langley <alang...@winscribe.com> wrote:

After speaking to Krzysztof Kozmic, this question is directed primarily
to Ayende and Craig Newirt,

I require that Windsor has the ability to resolve component types to a
WCF client endpoint configured in system.servicemodel/client rather than
to a well-known type.
Krzysztof suggested that I ask if anyone has attempted to add the
required extensibility points to the micro-kernel to facilitate this
feature, so that I may build on it to bring it to completion.
Additionally, any suggestions on how this should be implemented would be
greatly appreciated.
Krzysztof believes that before the last resort of throwing
ComponentNotFoundException, subscribed facilities should have the chance
to resolve the component.

After taking a brief look at the code this presents two hurdles.

Firstly, when the configuration is initially built, any components that
do not have a Type attribute are ignored, meaning that the naming
subsystem will never admit knowledge of them.
Secondly, even if the naming subsystem admitted knowledge of the
component, code needs to be added to locate a facility that has taken
responsibility for the type resolution, and delegate the call to
it/them.

There are several decisions around how this feature should 'behave',
what do you think?

Thanks

Adam Langley










--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to castle-project-users@googlegroups.com
To unsubscribe from this group, send email to 
castle-project-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to