日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WCF雙向通信實(shí)現(xiàn)服務(wù)契約

WCF框架的出現(xiàn),為我們解決了許多以前不能實(shí)現(xiàn)功能。那么對(duì)于WCF雙向通信的具體含義又有多少人真正了解呢。在這里我們就來(lái)初步的探討下WCF雙向通信。#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ù)契約。

 
 
 
  1. Contract:
  2. namespace Lin.Contract
  3. {
  4. [ServiceContract(CallbackContract=
    typeof(ICallBack))]
  5. public interface IHello
  6. {
  7. [OperationContract]
  8. void SayHelloTo(string userName);
  9. }
  10. }
  11. namespace Lin.Contract
  12. {
  13. [ServiceContract]
  14. public interface ICallBack
  15. {
  16. [OperationContract]
  17. void ReceiveTime(DateTime time);
  18. }
  19. }
  20. Service:
  21. namespace Lin.Service
  22. {
  23. [ServiceBehavior(ConcurrencyMode
    ConcurrencyMode = ConcurrencyMode
    .Reentrant)]
  24. public class ServiceHello : IHello
  25. {
  26. IHello 成員#region IHello 成員
  27. public void SayHelloTo(string userName)
  28. {
  29. Console.WriteLine("Hello {0}", userName);
  30. OperationContext.Current.GetCallbackChannel
    ().ReceiveTime(DateTime.Now);
  31. }
  32. #endregion
  33. }
  34. }Host:
  35. class Program
  36. {
  37. static void Main(string[] args)
  38. {
  39. using (ServiceHost host = 
    new ServiceHost(typeof(ServiceHello)))
  40. {
  41. host.Open();
  42. Console.Read();
  43. }
  44. }
  45. }Client:
  46. namespace Lin.Client
  47. {
  48. public class ClientCallBack:ICallBack
  49. {
  50. ICallBack 成員#region ICallBack 成員
  51. public void ReceiveTime(DateTime time)
  52. {
  53. Console.WriteLine("服務(wù)器收到消息的時(shí)間是
    :{0}", time.ToLongTimeString());
  54. }
  55. #endregion
  56. }
  57. }
  58. 調(diào)用服務(wù):
  59. namespace Lin.Client
  60. {
  61. public class ClientHello : 
    DuplexClientBase, IHello
  62. {
  63. public ClientHello(InstanceContext 
    instance) : base(instance) { }
  64. IHello 成員#region IHello 成員
  65. public void SayHelloTo(string userName)
  66. {
  67. base.Channel.SayHelloTo(userName);
  68. }
  69. #endregion
  70. }
  71. }
  72. class Program
  73. {
  74. static void Main(string[] args)
  75. {
  76. Hello();
  77. Console.Read();
  78. }
  79. static void Hello()
  80. {
  81. ClientCallBack callBack = 
    new ClientCallBack();
  82. ClientHello hello = 
    new ClientHello(new 
    InstanceContext(callBack));
  83. string commandString = string.Empty;
  84. while (commandString != "exit")
  85. {
  86. commandString = Console.ReadLine();
  87. hello.SayHelloTo(commandString);
  88. }
  89. }
  90. }

如同OO的出現(xiàn)一樣,有些人是注重OO的思想,有些人注重OO的實(shí)現(xiàn)。同樣的,WCF雙向通信應(yīng)該更多的是提倡一種面向服務(wù)架構(gòu)的思想。SOA如何實(shí)現(xiàn),這個(gè)不重要,每個(gè)平臺(tái)都有自己的實(shí)現(xiàn)方式。這也體現(xiàn)了技術(shù)要服務(wù)于社會(huì)。


新聞名稱:WCF雙向通信實(shí)現(xiàn)服務(wù)契約
文章起源:http://www.dlmjj.cn/article/cdghiop.html