What are two possible ways to achieve this goal?

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 [ServiceContract]
08 public interface INameService
09 {
10 [OperationContract]
11 string GetName();
12 }

The code that implements the IGreetingService interface is as follows:

20 public class GreetingService : IGreetingService
21{
22 public string GetMessage()
23 {
24 INameService clientChannel = OperationContext.Current.GetCallbackChannel<INameService>();
25 string clientName = clientChannel.GetName();
26 return String.Format(“Hello {0}”, clientName);
27 }
28 }

The service is self-hosted. The hosting code is as follows:

30 ServiceHost host = new ServiceHost(typeof(GreetingService));
31 NetTcpBinding binding = new NetTcpBinding(SecurityMode.None);
32 host.AddServiceEndpoint(“MyApplication.IGreetingService”, binding, “net.tcp//localhost:12345”);
33 host.Open();

The code that implements the lNameService interface is as follows:

40 class NameService : INameService
41 {
42 string name;
43 public NameService(string name)
44 {
45 this.name = name;
46 }
47 public string GetName()
48 {
49 return name;
50 }
51 }

Currently, this code fails at runtime, and an InvalidOperationException is thrown at line 25.
You need to correct the code so that the call from the service back to the client completes successfully.
What are two possible ways to achieve this goal? (Each correct answer presents a complete solution. Choose two.)

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 [ServiceContract]
08 public interface INameService
09 {
10 [OperationContract]
11 string GetName();
12 }

The code that implements the IGreetingService interface is as follows:

20 public class GreetingService : IGreetingService
21{
22 public string GetMessage()
23 {
24 INameService clientChannel = OperationContext.Current.GetCallbackChannel<INameService>();
25 string clientName = clientChannel.GetName();
26 return String.Format(“Hello {0}”, clientName);
27 }
28 }

The service is self-hosted. The hosting code is as follows:

30 ServiceHost host = new ServiceHost(typeof(GreetingService));
31 NetTcpBinding binding = new NetTcpBinding(SecurityMode.None);
32 host.AddServiceEndpoint(“MyApplication.IGreetingService”, binding, “net.tcp//localhost:12345”);
33 host.Open();

The code that implements the lNameService interface is as follows:

40 class NameService : INameService
41 {
42 string name;
43 public NameService(string name)
44 {
45 this.name = name;
46 }
47 public string GetName()
48 {
49 return name;
50 }
51 }

Currently, this code fails at runtime, and an InvalidOperationException is thrown at line 25.
You need to correct the code so that the call from the service back to the client completes successfully.
What are two possible ways to achieve this goal? (Each correct answer presents a complete solution. Choose two.)

A.
Change the service contract definition in line 01 as follows.
[ServiceContract(CallbackContract = typeof(INameService), SessionMode = SessionMode.Required)]

B.
Add the following attribute to the NameService class, before line 40.
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]

C.
Add the following attribute to the GreetingService class, before line 20.
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]

D.
Add the following attribute to the GreetingService class, before line 20.
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]

Explanation:
ConcurrencyMode Enumeration
(http://msdn.microsoft.com/en-us/library/system.servicemodel.concurrencymode.aspx)



Leave a Reply 1

Your email address will not be published. Required fields are marked *