自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF雙向通信相關(guān)概念正確理解

開(kāi)發(fā) 開(kāi)發(fā)工具
在WCF雙向通信中,我們定義了兩個(gè)服務(wù),其中一個(gè)是供消費(fèi)程序消費(fèi)的,而一種則是在callBack的時(shí)候調(diào)用的服務(wù)。

WCF的出現(xiàn),給開(kāi)發(fā)領(lǐng)域帶來(lái)了不小的變化。那么如何才能正確的應(yīng)用這一新的技術(shù)呢?在這里我們可以先從WCF雙向通信的相關(guān)概念開(kāi)始了解,以此來(lái)進(jìn)一步加深我們對(duì)這一工具的了解程度。#t#

WCF整合了Remoting和webService等等。而且開(kāi)發(fā)簡(jiǎn)單(相對(duì)的),它既彌補(bǔ)Remoting的只能在.net上運(yùn)行,又彌補(bǔ)了asmx只能單向傳送消息的缺點(diǎn)。也就是說(shuō),WCF是實(shí)現(xiàn)跨平臺(tái),在跨平臺(tái)的同時(shí),也可以雙向通信。在WCF的編程思想中,無(wú)疑將SOA的思想體現(xiàn)的***。

首先要做的是就是定義服務(wù)契約。定義契約一般使用接口,使得實(shí)現(xiàn)和消費(fèi)這個(gè)服務(wù)的雙方都要按照這個(gè)契約來(lái)實(shí)現(xiàn)相應(yīng)的接口。在雙向通信中至少要定義兩個(gè)服務(wù),一個(gè)服務(wù)是供消費(fèi)程序消費(fèi)的,另一個(gè)則是在callBack的時(shí)候調(diào)用的服務(wù),這個(gè)服務(wù)應(yīng)該由消費(fèi)程序?qū)崿F(xiàn)。

其次,就是在服務(wù)端實(shí)現(xiàn)這些契約(說(shuō)白了就是實(shí)現(xiàn)上面定義的接口)。在開(kāi)發(fā)中,我們經(jīng)常會(huì)把這個(gè)實(shí)現(xiàn)獨(dú)立出來(lái),方便在不同的宿主中發(fā)布這些服務(wù)。

***,實(shí)現(xiàn)客戶端。在WCF雙向通信中,客戶端也是服務(wù)端,因?yàn)樗矊?shí)現(xiàn)了服務(wù)契約。

來(lái)段代碼:

  1. namespace Lin.Contract  
  2. {  
  3. [ServiceContract(CallbackContract=typeof(ICallBack))]  
  4. public interface IHello  
  5. {  
  6. [OperationContract]  
  7. void SayHelloTo(string userName);  
  8. }  
  9. }  
  10. namespace Lin.Contract  
  11. {  
  12. [ServiceContract]  
  13. public interface ICallBack  
  14. {  
  15. [OperationContract]  
  16. void ReceiveTime(DateTime time);  
  17. }  
  18. }  
  19. Service:  
  20. namespace Lin.Service  
  21. {  
  22. [ServiceBehavior(ConcurrencyModeConcurrencyMode = 
    ConcurrencyMode.Reentrant)]  
  23. public class ServiceHello : IHello  
  24. {  
  25. IHello 成員#region IHello 成員  
  26. public void SayHelloTo(string userName)  
  27. {  
  28. Console.WriteLine("Hello {0}", userName);  
  29. OperationContext.Current.GetCallbackChannel<ICallBack>()
    .ReceiveTime(DateTime.Now);  
  30. }  
  31. #endregion  
  32. }  
  33. }Host:  
  34. class Program  
  35. {  
  36. static void Main(string[] args)  
  37. {  
  38. using (ServiceHost host = new ServiceHost(typeof(ServiceHello)))  
  39. {  
  40. host.Open();  
  41. Console.Read();  
  42. }  
  43. }  
  44. }Client:  
  45. namespace Lin.Client  
  46. {  
  47. public class ClientCallBack:ICallBack  
  48. {  
  49. ICallBack 成員#region ICallBack 成員  
  50. public void ReceiveTime(DateTime time)  
  51. {  
  52. Console.WriteLine("服務(wù)器收到消息的時(shí)間是:{0}", 
    time.ToLongTimeString());  
  53. }  
  54. #endregion  
  55. }  

WCF雙向通信調(diào)用服務(wù):

  1. namespace Lin.Client  
  2. {  
  3. public class ClientHello : DuplexClientBase<IHello>, IHello  
  4. {  
  5. public ClientHello(InstanceContext instance) : base(instance) { } 

 

IHello 成員#region IHello 成員

 

  1. public void SayHelloTo(string userName)  
  2. {  
  3. base.Channel.SayHelloTo(userName);  
  4. }  
  5. #endregion  
  6. }  
  7. }  
  8. class Program  
  9. {  
  10. static void Main(string[] args)  
  11. {  
  12. Hello();  
  13. Console.Read();  
  14. }  
  15. static void Hello()  
  16. {  
  17. ClientCallBack callBack = new ClientCallBack();  
  18. ClientHello hello = new ClientHello(new InstanceContext(callBack));  
  19. string commandString = string.Empty;  
  20. while (commandString != "exit")  
  21. {  
  22. commandString = Console.ReadLine();  
  23. hello.SayHelloTo(commandString);  
  24. }  
  25. }  

以上就是我們對(duì)WCF雙向通信的相關(guān)介紹。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2009-12-22 09:11:31

WCF雙向通信

2009-12-08 11:17:41

WCF雙向通信

2009-06-18 10:29:24

Hibernate I

2009-12-14 17:48:46

Ruby String

2020-01-07 15:10:32

Linuxinode命令

2010-08-04 16:41:01

2023-10-17 17:13:14

內(nèi)存程序源碼

2010-08-05 09:53:35

2009-12-04 18:00:46

PHP開(kāi)發(fā)MVC模型

2010-02-01 10:54:37

C++框架

2010-07-20 12:35:33

SQL Server索

2024-01-29 00:35:00

Go并發(fā)開(kāi)發(fā)

2023-12-27 19:52:08

Go模塊命令

2010-02-04 14:01:43

C++非類型類模板參數(shù)

2009-12-03 18:07:47

PHP轉(zhuǎn)義

2010-01-18 17:29:35

VB.NET函數(shù)調(diào)用

2009-12-09 14:04:45

PHP include

2010-02-04 15:05:00

C++ cpuid指令

2010-02-26 14:05:57

WCF通信方式

2009-12-16 17:00:43

Ruby on Rai
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)