Thanks, Yeah that may do the job - I was just trying to get my head around where I needed to plug into Windsor. I think I will write a facility that allows me to notify Windsor when a user has logged out. The facility will then be responsible for locating the correct lifestyle and clearing the component cache. So I guess those are the two points where I need to enhance Castle, a facility and a lifestyle.
Then I can host the container within a Windows Service which capture the windows logon/logoff events, and passes them on to the custom facility - that decouples castle from any specific 'windows integration' code. Thanks Adam Langley From: castle-project-users@googlegroups.com [mailto:castle-project-users@googlegroups.com] On Behalf Of Krzysztof Kozmic Sent: Tuesday, 19 April 2011 9:39 a.m. To: castle-project-users@googlegroups.com Subject: Re: New WCF Facility Lifestyle I may still be missing the whole picture but OperationContext oc = OperationContext.Current; ServiceSecurityContext ssc = oc.ServiceSecurityContext; string client = ssc.PrimaryIdentity.Name; This will get you the name of the currently logged in user, which from what I'm reading is what you need. About detecting closing of the app, I'm not exactly sure how you'd want to detect it, but custom lifestyle with access to the user name and with trigger to release upon user exit sounds like a reasonable way to go. Krzysztof On 18/04/2011 8:34 AM, Adam Langley wrote: Thats not all I need though - I suppose its quite complicated to explain. My goal is to have a windows-service which exposes endpoints over net-pipe, which can be accessed by any process on the local machine to utilise centralized services. The service instance returned by the windows-service will depend on the user-account of the caller. A user who terminates their application process (which is a client of the windows-service) will NOT have his worker objects destroyed because they are keyed (lifestyle) against their user account, not the process-id. BUT if they log out of the computer, then castle will destroy all their component instances. I can see that this functionality has many tendrils that need to hook into various different areas of responsibility with the castle infrastructure. I would LIKE to be able to implement this using Castle paradigms so that it is not implementation specific, but could be re-used easily in other, unrelated projects. Does that better explain where I am, and the depth of my proposition? Thanks Krzysztof Adam Langley Please consider the environment before printing this email! -----Original Message----- From: castle-project-users@googlegroups.com [mailto:castle-project-users@googlegroups.com] On Behalf Of Krzysztof Kozmic Sent: Sunday, 17 April 2011 9:24 p.m. To: castle-project-users@googlegroups.com Subject: Re: New WCF Facility Lifestyle Sorry about the delay. If all you need is authentication information isn't this available from Thread.CurrentPrincipal or from OperationContext.Current ? Krzysztof On 14/04/2011 10:24 AM, Adam Langley wrote: Absolutely, that would be analogous to my goals - except that nothing in the WCF infrastructure will identify the windows session of the caller. I was thinking that to achieve 'session identification' I would need to extend windsor further - but perhaps I dont. I expect the minimum I require, is that if my 'handler selector' is applied, then the WCF endpoint must use Windows authentication. Then when a call comes in, I can identify the windows account of the caller and use that to locate the correct instance. Does this sound like the right approach? I still need some 'facility' running within castle to listen to log-off events so that I can dispose of all instances associated with that user-session. I just thought that because my 'extension' required so many different functional facets, I would need to implement them in several different ways (IHandlerSelector + Facility + Lifestyle, for example) Adam Langley Please consider the environment before printing this email! -----Original Message----- From: castle-project-users@googlegroups.com [mailto:castle-project-users@googlegroups.com] On Behalf Of Krzysztof Kozmic Sent: Thursday, 14 April 2011 9:38 a.m. To: castle-project-users@googlegroups.com Subject: Re: New WCF Facility Lifestyle Adam, the way I saw it done usually, in multitenant applications is to have the component registered for each tenant and use IHandlerSelector to manage returning the right one. Say you're using NHibernate and you have different databases for each tenant and each database has it's own Session component which you pick based on some information about what tenant is currently making the request. Would that be fair to say you're in a similar situation? On 13/04/2011 2:01 PM, Adam Langley wrote: Dear group, I have a requirement where-by I will have a Windows Service (running as System) that publishes a component on net.pipe (for use by the local machine only), but it must service multiple users logged on to the same machine simultaneously. It must create a 'singleton' instance per Windows User connected... so the WCF layer will use integrated windows authentication. When a user logs on to the machine, they will receive the same component instance no matter how many times they connect/disconnect from the WCF service - and no two users will ever share the same instance. I was thinking that the best way to approach this would be a custom lifestyle which creates a release policy per distinct windows user - the component could even capture the global 'user logoff' event and dispose that user's component at that time (I would really love this!). What do you think of the concept, and what Castle extensibility points would I rely on to implement this? 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. -- 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.