title: PerSession vs. PerCall
body: <p>What's the general rule of thumb to decide whether to use PerSession or PerCall?</p>
  
  <p>I have a slightly heavy (I think..) WCF service, containing CRUD methods to about 80 tables.</p>
  
  <p>I have separated the WCF service into 7 contracts within 1 service, (i.e., 7 end points within 1 service) such that each contract takes care of its own domain, for example I have a Sales contract, so all sales related tables, and its corresponding operations are within the sales "bounded context" </p>
  
  <p>So my WCF service structure looks something like this:</p>
  
  <pre><code>public partial class ABCService : ISalesService
  {
     //CRUD methods of all tables related to Sales
  }
  
  public partial class ABCService : IMarketingService
  {
      //CRUD methods of all tables related to Marketing
  }
  
  public partial class ABCService : ICustomerService
  {
      //CRUD methods of all tables related to Customer
  }
  
  public partial class ABCService : IProductService
  {
      //CRUD methods of all tables related to Products
  }
  </code></pre>
  
  <p>My concern with PerCall is that, because I have a fairly large DB/WCF service, I'm afraid that the amount of resources consumed by each call, multiplied by the number of users and the rate of which they call the service, would be far too great. </p>
  
  <p>I do not know the fine details, but I have read that creating a Channel Proxies are expensive operations. </p>
  
  <p>Oh, I'm using hand coded proxies instead of VS's Add service reference to consume my WCF service.</p>
  
  <p>So, my question is, which should I use? PerSession or PerCall?</p>
  
  <p><strong>Update:</strong></p>
  
  <ol>
  <li>I do not need to maintain state between calls.</li>
  <li>I'm using NetTCP bindings</li>
  </ol>