title: Should I Open and Close my WCF client after each service call?
body: <p>I have developed a WCF service for consumption within the organization's Ethernet.<br/>
  The service is currently hosted on a windows-service and is using <code>net.tcp</code> binding.<br/>
  There are 2 <code>operation contracts</code> defined in the service.<br/>
  The client connecting to this service is a long running windows desktop application.<br/>
  Employees(&gt;30,000) usually have this client running throughout the week from Monday morning to Friday evening straight.<br/></p>
  <p>During this lifetime there might be a number of calls to the wcf service in question depending on a certain user action on the main desktop client.
  Let us just say 1 in every 3 actions on the main desktop application would
  trigger a call to our service.
  </p>
  <p>
  Now we are planning to deploy this window service on each employee's desktop<br/>
  I am also using `autofac` as the dependency resolver container.<br/>
  My WCF service instance context is `PerSession`, but ideally speaking we have both the client and service running in the same desktop (for now) so I am planning to inject the same service instance for each new session using `autofac` container. <br/>
  Now am not changing the `InstanceContext` attribute on the service implementation
  because in future I might deploy the same service in a different hosting environment where I would like to have a new service object instance for each session.</p>
  <p>
  Like mentioned earlier the client is a long running desktop application and I  have read that it is a good practise to `Open` and `Close` the proxy for each call but if I leave the service to be PerSession it will create a new service instance for each call, which might not be required given the service and client have a 1-1 mapping.<br/> Another argument is that I am planning to inject the same instance for each session in this environment, so Open & Close for each service call shouldn't matter ?
  <br/> So which approach should I take, make the service `Singleton` and Open Close for each call or
  Open the client-side proxy when the desktop application loads/first service call and then Close it only when the desktop application is closed ?
  </p>