A Windows Communication Foundation (WCF) solution exposes the following contract over an HTTP connection.
[ServiceContract]
public interface IDataService
{
[OperationContract]
string GetData();
}
Existing clients are making blocking calls to GetData. Calls to GetData take five seconds to complete.
You need to allow new clients to issue non-blocking calls to get the data, without breaking any existing clients. What should you do?
A.
Replace the service interface with the following interface and implement the new methods.
[ServiceContract]
public interface IDoSomething
{
[OperationContract]
string DoLongOperation();
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginDoLongOperation();
[OperationContract(AsyncPattern = true)]
string EndDoLongOperation(IAsyncResult result);
}
B.
Replace the service interface with the following interface and implement the new methods.
[ServiceContract]
public interface IDoSomething
{
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginDoLongOperation();
[OperationContract(AsyncPattern = true)]
string EndDoLongOperation(IAsyncResult result);
}
C.
Generate a proxy class with asynchronous methods and use it for the new clients.
D.
Add a new endpoint to the service that uses a full-duplex binding and use it for the new clients.
C