开发者

Using WCF client

In my application, I am using client.open and client.close to open a WCF proxy channel, use the wcf method and finally close it. I do this is several parts of my Windows Forms application.

However, I have noticed that client.close does not necessarily close the connection immediately. Why is this? Should I use client.Abort instead?

Am I using the WCF client the right way? i.e. clien.open -> call WCF method -> client.close.

Thanks for any help开发者_运维百科 in advance!

Subbu


The .Close() method will try to close the connection gracefully, e.g. a pending call will still be finished by the server, and only after that's done, the connection is terminated. Use this whenever possible - it's the gentle and preferred way of closing a client connection.

.Abort() really just tears down the communication channel - not matter whether a call is still in progress or not. It's the ultimate, last resort escape hatch, if .Close() failed.

As a best practice, I would wrap my service calls into a try...catch block, something like this:

try
{
    myServiceClient.CallSomeMethod();
    myServiceClient.Close();
}
catch(FaultException<SomeError>)
{
    myServiceClient.Abort();
}
// possibly other catch clauses, too - call .Abort() inside them
catch(CommunicationException)
{
    myServiceClient.Abort();
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜