On Tue, Aug 11, 2009 at 8:17 PM, John Simons <[email protected]>wrote:

>
> I'm trying to verify that the channel is getting closed everytime I
> call container.Release(proxy).


Can you send me a sample of your registration and I'll make sure it is
behaving as it should

>
>
> The reason I'm chasing this up is because I'm currently using the
> WcfFacility at the backend and I would like to use it at the frontend
> too.
> However when I swap my current implementation for the WcfFacility
> client side I see a performance hit and start getting Communication
> exception and timeouts


What kind of performance problem?  Are you creating a lot of transients?

>
>
> On Aug 12, 11:12 am, Craig Neuwirt <[email protected]> wrote:
> > On Tue, Aug 11, 2009 at 8:04 PM, John Simons <[email protected]
> >wrote:
>  >
> >
> >
> > > Craig,
> >
> > > So, you are saying that the ChannelFactory is reused but the Channel
> > > is not.
> >
> > Basically yes.  If a channel is faulted it is automatically refreshed.
> >
> >
> >
> > > Also, you are saying that if I call container.Release(proxy); the
> > > channel will be disposed.
> > > I don't see this happening, I'm using the trunk version and have put
> > > break points on your code pretty much everywhere I could find either
> > > Close() or Dispose(), and I can only see the channels being disposed
> > > when the I dispose of the windsor container.
> >
> > So are you trying to verify the channels are closing or the
> ChannelFactory?
> > I tested that against the unit tests and it seems to perform as expected
> >
> >
> >
> > > Do I need to do this myself:
> > > ((IClientChannel)proxy).Close();
> > > before calling container.Release(proxy);   ?
> >
> > Nope
> >
> >
> >
> > > Cheers
> > > John
> >
> > > On Aug 11, 10:23 pm, Craig Neuwirt <[email protected]> wrote:
> > > > John,
> > > >   The ChannelFactory create multiple channels and thus will not be
> closed
> > > > when you release the proxy.  The actual Channel will be closed
> however.
> > > >  Then the component is released or the container is disposed of, the
> > > > ChannelFactory will get closed.
> >
> > > > craig
> >
> > > > On Sun, Aug 9, 2009 at 11:52 PM, John Simons <
> [email protected]
> > > >wrote:
> >
> > > > > Not sure if I'm using this facility correctly.
> >
> > > > > I'm using it on the client side.
> >
> > > > > I have configured my services to be LifeStyle.Transient because my
> > > > > endpoint url changes dynamically.
> >
> > > > > Here is a snip of my global.asax:
> >
> > > > >        container = new WindsorContainer()
> > > > >                        .AddFacility("startable", new
> > > StartableFacility())
> > > > >                        .AddFacility("mr", new MonoRailFacility())
> > > > >                        .AddFacility("loggingfacility", new
> > > LoggingFacility
> > > > > (LoggerImplementation.Log4net, "Config/logging.config"))
> > > > >                        .AddFacility<WcfFacility>(f =>
> f.DefaultBinding
> > > =
> > > > >                                                       new
> WSHttpBinding
> > > > >                                                           {
> >
> > > > > BypassProxyOnLocal =
> > > > > true,
> >
> > > > > MaxReceivedMessageSize = 331070,
> >
> > > > > UseDefaultWebProxy =
> > > > > false,
> >
> > > > >                                                           }
> > > > >                        )
> > > > >                        .Register(
> >
> > >  Component.For<ChannelFactoryListener>(),
> > > > >                                  Component.For<ICore>()
> > > > >                                      .LifeStyle.Transient
> > > > >                                      .ActAs(new
> DefaultClientModel()),
> > > > >
>  Component.For<IComputerManagement>()
> > > > >                                      .LifeStyle.Transient
> > > > >                                      .ActAs(new
> DefaultClientModel()),
> > > > >                                  Component.For<IUserManagement>()
> > > > >                                      .LifeStyle.Transient
> > > > >                                      .ActAs(new
> DefaultClientModel()),
> > > > >                                  Component.For<IPostManagement>()
> > > > >                                      .LifeStyle.Transient
> > > > >                                      .ActAs(new
> DefaultClientModel()));
> >
> > > > > I than use it like this:
> > > > > proxy = container.Resolve<ICore>(new { Endpoint = WcfEndpoint.At
> > > > > (uri) });
> >
> > > > > and once I'm done with it I call:
> > > > > container.Release(proxy);
> >
> > > > > I assumed that by calling "container.Release(proxy);" on a
> Transient
> > > > > component the ChannelFactory.Close() would be called, but this
> doesn't
> > > > > seem to be the case. Am I doing something wrong?
> > > > > I need the ChannelFactory to be disposed of otherwise all the
> Channels
> > > > > remain open!
> >
> > > > > BTW, the ChannelFactoryListener is just this:
> > > > > public class ChannelFactoryListener : AbstractChannelFactoryAware
> > > > > {
> > > > >        public override void Created(ChannelFactory channelFactory)
> > > > >        {
> > > > >            channelFactory.Credentials.Windows.ClientCredential =
> > > > > CredentialCache.DefaultNetworkCredentials;
> >
> > > > > channelFactory.Credentials.Windows.AllowedImpersonationLevel =
> > > > > TokenImpersonationLevel.Impersonation;
> > > > >        }
> > > > > }
> >
> > > > > Cheers
> > > > > 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]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to