<p>When using a Silverlight-enabled WCF service, where is the best place to instantiate the service and to call the CloseAsync() method?</p>

<p>Should you say, instantiate an instance each time you need to make a call to the service, or is it better to just instantiate an instance as a variable of the UserControl that will be making the calls?</p>

<p>Then, where is it better to call the CloseAsync method?  Should you call it in each of the "someServiceCall_completed" event methods?  Or, if created as a variable of the UserControl class, is there a single place to call it?  Like a Dispose method, or something equivalent for the UserControl class.</p>

<p>Thanks,</p>

<p>Jeff</p>

You're better off just having an instance variable for the service. Creating and destroying the service for each call creates a lot of unnecessary overhead. Just create the variable and call the methods, no need to open it since this will be
done automatically
as of beta 2 (see section #5).
As for close, whether you try to close it for clean up probably depends on how your app is structured. If when the UserControl is closed the whole app is shutting down (the user closed the browser) then you probably don't need to explicitly close it since everything will get cleaned up when the Silverlight host closes. However, if you're creating lots of these user control and closing them while keeping the app open then you might want to create some kind of close method on your control that would clean up by calling CloseAsync.
If all the user controls use the same service, then you could just create a single service wrapper class that is used by all the controls that would handle calling the service. This would keep you from having to close the services when the controls unload as well.