A Windows Communication Foundation (WCF) solution uses the following contracts.
(Line numbers are included for reference only.)
01 [ServiceContract(CallbackContract=typeof(INameService))]
02 public interface IGreetingService
03 {
04 [OperationContract]
05 string GetMessage();
06 }
07
08 [ServiceContract]
09 public interface INameService
10 {
11 [OperationContract]
12 string GetName();
13 }
When the client calls GetMessage on the service interface, the service calls GetName on the client callback.
In the client, the class NameService implements the callback contract. The client channel is created as follows:
22 InstanceContext callbackContext = new InstanceContext(new NameService(“client”));
23 …
24 …
25 DuplexChannelFactory<IGreetingService> factory = new DuplexChannelFactory<IGreetingService>(typeof(NameService), binding, address);
26 IGreetingService greetingService = factory.CreateChannel();
You need to ensure that the service callback is processed by the instance of NameService.
What are two possible ways to achieve this goal? (Each correct answer presents a complete solution. Choose two.)
A.
Change line 25 to the following code segment:
DuplexChannelFactory<IGreetingService> factory = new DuplexChannelFactory<IGreetingService>(callbackContext, binding, address);
B.
Change line 26 to the following code segment:
IGreetingService greetingServicefactory = CreateChannel(callbackContext);
C.
Add the following code segment after line 26:
callbackContext.IncomingChannels.Add((IDuplexChannel)greetingService);
D.
Add the following code segment after line 26:
callbackContext.OutgoingChannels.Add((IDuplexChannel)greetingService);
Explanation:
Example 1:// Construct InstanceContext to handle messages on callback interface
InstanceContext instanceContext = new InstanceContext(new CallbackHandler());// Create a client
CalculatorDuplexClient client = new CalculatorDuplexClient(instanceContext);
AB