国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

WCF消息處理分布剖析

開發 開發工具
WCF消息處理是一個比較重要的基礎概念,對于初學者來說,我們需要在學習的過程中對此進行詳細的分析,以此來提高我們的應用水平。

WCF是一個使用了托管代碼建立的統一框架。它的應用可以幫助開發者創建一個安全性高,可依賴性的解決方案。那么今天,我們將會在這里為大家詳細介紹一下其中WCF消息處理的相關概念。

使用托管代碼建立和運行面向服務(Service Oriented)應用程序的統一框架

WCF消息處理:使用流數據傳輸文件,減少內存開銷。

示例

1、WCF消息處理之服務

  1. IStreamed.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6. using System.ServiceModel;  
  7. using System.IO;  
  8. namespace WCF.ServiceLib.Message  
  9. {  
  10. /**//// < summary> 
  11. /// 消息契約(定義與 SOAP 消息相對應的強類型類)  
  12. /// < /summary> 
  13. [MessageContract]  
  14. public class FileWrapper  
  15. {  
  16. /**//// < summary> 
  17. /// 指定數據成員為 SOAP 消息頭  
  18. /// < /summary> 
  19. [MessageHeader]  
  20. public string FilePath;  
  21. /**//// < summary> 
  22. /// 指定將成員序列化為 SOAP 正文中的元素  
  23. /// < /summary> 
  24. [MessageBodyMember]  
  25. public Stream FileData;  
  26. }  
  27. /**//// < summary> 
  28. /// IStreamed接口  
  29. /// < /summary> 
  30. [ServiceContract]  
  31. public interface IStreamed  
  32. {  
  33. /**//// < summary> 
  34. /// 上傳文件  
  35. /// < /summary> 
  36. /// < remarks> 
  37. /// 1、支持數據流傳輸的綁定有:BasicHttpBinding、NetTcpBinding 
    和 NetNamedPipeBinding  
  38. /// 2、流數據類型必須是可序列化的 Stream 或 MemoryStream  
  39. // /3、傳遞時消息體(Message Body)中不能包含其他數據,即參數中只能有一個
    System.ServiceModel.MessageBodyMember  
  40. /**//// < /remarks> 
  41. /// < param name="fileWrapper">WCF.ServiceLib.Message.FileWrapper< /param> 
  42. [OperationContract]  
  43. void UploadFile(FileWrapper fileWrapper);  
  44. }  
  45. }  
  46. Streamed.cs  
  47. using System;  
  48. using System.Collections.Generic;  
  49. using System.Linq;  
  50. using System.Text;  
  51. using System.ServiceModel;  
  52. using System.IO;  
  53. namespace WCF.ServiceLib.Message  
  54. {  
  55. /**//// < summary> 
  56. /// IStreamed類  
  57. /// < /summary> 
  58. public class Streamed : IStreamed  
  59. {  
  60. /**//// < summary> 
  61. /// 上傳文件  
  62. /// < /summary> 
  63. /// < param name="fileWrapper">WCF.ServiceLib.Message.
    FileWrapper
    < /param> 
  64. public void UploadFile(FileWrapper fileWrapper)  
  65. {  
  66. var sourceStream = fileWrapper.FileData;  
  67. var targetStream = new FileStream(fileWrapper.FilePath,  
  68. FileMode.Create,  
  69. FileAccess.Write,  
  70. FileShare.None);  
  71. var buffer = new byte[4096];  
  72. var count = 0;  
  73. while ((count = sourceStream.Read(buffer, 0, buffer.Length)) > 0)  
  74. {  
  75. targetStream.Write(buffer, 0, count);  
  76. }  
  77. targetStream.Close();  
  78. sourceStream.Close();  
  79. }  
  80. }  

#p#

2、WCF消息處理之宿主

  1. Streamed.cs  
  2. using (ServiceHost host = new ServiceHost(typeof
    (WCF.ServiceLib.Message.Streamed)))  
  3. {  
  4. host.Open();  
  5. Console.WriteLine("服務已啟動(WCF.ServiceLib.Message.Streamed)");  
  6. Console.WriteLine("按< ENTER>停止服務");  
  7. Console.ReadLine();  
  8. }  
  9. App.config  
  10. < ?xml version="1.0" encoding="utf-8" ?> 
  11. < configuration> 
  12. < system.serviceModel> 
  13. < services> 
  14. < !--name - 提供服務的類名--> 
  15. < !--behaviorConfiguration - 指定相關的行為配置--> 
  16. < service name="WCF.ServiceLib.Message.Streamed" 
    behaviorConfiguration="MessageBehavior"> 
  17. < !--address - 服務地址--> 
  18. < !--binding - 通信方式--> 
  19. < !--contract - 服務契約--> 
  20. < !--bindingConfiguration - 指定相關的綁定配置--> 
  21. < endpoint address="Message/Streamed" binding="netTcpBinding" 
    contract="WCF.ServiceLib.Message.IStreamed" 
    bindingConfiguration="StreamedBindingConfiguration" /> 
  22. < endpoint address="mex" binding="mexHttpBinding" 
    contract="IMetadataExchange" /> 
  23. < host> 
  24. < baseAddresses> 
  25. < add baseAddress="http://localhost:12345/Message/Streamed/"/> 
  26. < add baseAddress="net.tcp://localhost:54321/"/> 
  27. < /baseAddresses> 
  28. < /host> 
  29. < /service> 
  30. < /services> 
  31. < behaviors> 
  32. < serviceBehaviors> 
  33. < behavior name="MessageBehavior"> 
  34. < !--httpGetEnabled - 使用get方式提供服務--> 
  35. < serviceMetadata httpGetEnabled="true" /> 
  36. < serviceDebug includeExceptionDetailInFaults="true"/> 
  37. < /behavior> 
  38. < /serviceBehaviors> 
  39. < /behaviors> 
  40. < bindings> 
  41. < netTcpBinding> 
  42. < !--transferMode - 指示通道是使用流處理模式還是緩沖模式來傳輸請求和響應消息--> 
  43. < !--maxReceivedMessageSize - 
    在采用此綁定配置的通道上可接收的***消息大小(單位:字節)--
    > 
  44. < !--receiveTimeout - 在傳輸引發異常之前可用于完成讀取操作的時間間隔--> 
  45. < binding name="StreamedBindingConfiguration" transferMode="Streamed" 
    maxReceivedMessageSize="1073741824" receiveTimeout="00:10:00" /> 
  46. < /netTcpBinding> 
  47. < /bindings> 
  48. < /system.serviceModel> 
  49. < /configuration> 

3、WCF消息處理之客戶端

  1. Streamed.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6. using System.Windows.Forms;  
  7. using System.ServiceModel;  
  8. using System.IO;  
  9. namespace Client2.Message  
  10. {  
  11. /**//// < summary> 
  12. /// 演示Message.Streamed的類  
  13. /// < /summary> 
  14. public class Streamed  
  15. {  
  16. /**//// < summary> 
  17. /// 流數據上傳文件  
  18. /// < /summary> 
  19. /// < param name="source">源文件地址< /param> 
  20. /// < param name="destination">目標路徑< /param> 
  21. public void HelloStreamed(string source, string destination)  
  22. {  
  23. try  
  24. {  
  25. var proxy = new MessageSvc.Streamed.StreamedClient();  
  26. var sr = new System.IO.FileStream(  
  27. source, System.IO.FileMode.Open);  
  28. proxy.UploadFile(destination + Path.GetFileName(source), sr);  
  29. sr.Close();  
  30. proxy.Close();  
  31. MessageBox.Show("上傳成功");  
  32. }  
  33. catch (Exception ex)  
  34. {  
  35. MessageBox.Show(ex.ToString());  
  36. }  
  37. }  
  38. }  
  39. }  
  40. App.config  
  41. < ?xml version="1.0" encoding="utf-8" ?> 
  42. < configuration> 
  43. < system.serviceModel> 
  44. < client> 
  45. < !--address - 服務地址--> 
  46. < !--binding - 通信方式--> 
  47. < !--contract - 服務契約--> 
  48. < endpoint address="net.tcp://localhost:54321/Message/Streamed" 
    binding="netTcpBinding" contract="MessageSvc.Streamed.IStreamed" 
    bindingConfiguration="StreamedBindingConfiguration" /> 
  49. < /client> 
  50. < bindings> 
  51. < netTcpBinding> 
  52. < !--transferMode - 指示通道是使用流處理模式還是緩沖模式來傳輸請求和響應消息--> 
  53. < !--sendTimeout - 在傳輸引發異常之前可用于完成寫入操作的時間間隔--> 
  54. < binding name="StreamedBindingConfiguration" 
    transferMode="Streamed" sendTimeout="00:10:00" /> 
  55. < /netTcpBinding> 
  56. < /bindings> 
  57. < /system.serviceModel> 
  58. < /configuration> 

 以上就是對WCF消息處理的相關概念介紹。

【編輯推薦】

  1. 六步驟完成WCF開發
  2. WCF附加屬性技巧掌握
  3. 學習WCF綁定經驗分享
  4. WCF效率提高技巧講解
  5. WCF自承載實踐心得分享
責任編輯:曹凱 來源: 博客園
相關推薦

2009-11-09 11:15:06

WCF消息隊列

2010-02-22 15:27:05

WCF數據契約

2010-02-23 09:34:15

WCF重載

2010-02-22 16:09:33

WCF宿主

2009-12-08 17:56:16

WCF配置

2009-12-07 18:43:29

WCF框架

2010-03-02 16:28:11

WCF發布訂閱

2010-03-02 13:43:01

WCF事務演示

2010-02-22 16:26:47

WCF傳輸數據

2009-11-06 09:14:14

WCF可靠性

2009-12-07 09:23:05

2010-02-23 11:22:15

WCF跟蹤調試

2010-02-23 16:07:39

2010-02-25 13:40:17

WCF禁用安全配置

2010-02-22 10:29:11

WCF上傳文件

2009-12-08 16:09:02

WCF消息

2010-02-24 09:18:49

WCF Adapter

2010-03-02 11:10:43

WCF標準終結點

2010-02-24 15:42:03

WCF服務端安全

2010-02-22 13:35:03

WCF異常處理
點贊
收藏

51CTO技術棧公眾號

91精品国产综合久久久久久漫画 | 茄子视频成人免费观看| 色综合久久中文| 亚洲视屏在线播放| 超碰在线最新网址| 欧美蜜桃一区二区三区 | 国产精品免费视频网站| 日韩精品综合在线| 国产一区二区看久久| 日韩视频在线观看视频| 人人爽香蕉精品| 日韩欧美亚洲在线| 九九国产精品视频| 日本阿v视频在线观看| 国产精品资源站在线| 亚洲天堂电影网| 久久99国内精品| 国产美女永久无遮挡| 丁香六月激情婷婷| 91麻豆国产自产在线观看| 亚洲天堂av线| 亚洲精品婷婷| 国产精品一区二区不卡视频| 影视一区二区| 国产精品亚洲综合| 久久免费高清| 男人天堂成人网| 国产suv精品一区二区6| 国产综合av在线| 99精品久久99久久久久| 午夜精品久久久久久久无码| 久久精品在这里| 91大神影片| 欧美日韩国产中字| 久久bbxx| 亚洲欧美日本精品| 国产精品第一国产精品| 久久精品欧美视频| 最新精品国偷自产在线| 91亚洲精华国产精华| 亚洲欧美卡通另类91av| 99国产超薄肉色丝袜交足的后果| 免费日韩视频| a在线视频观看| 一区二区三区在线观看欧美| 中文字幕在线观看日本| 一本色道久久88综合日韩精品| 视频一区日韩精品| 亚洲一区二区三区在线视频| 免费在线观看不卡| www.xxx亚洲| 欧美三片在线视频观看| 国产香蕉久久| 亚洲成人黄色影院| 激情视频免费观看在线| 99视频热这里只有精品免费| 国产精品免费一区二区三区四区| 欧美性xxxx在线播放| 国产精品一区二区婷婷| 日韩精品免费在线| 波多野结衣在线一区二区| av免费观看久久| 精品无码三级在线观看视频| 中文字幕国产免费| 欧美在线播放高清精品| 精品国产欧美日韩一区二区三区| 国产国语videosex另类| 日本视频中文字幕一区二区三区| 日本女优爱爱视频| 制服.丝袜.亚洲.中文.综合| 国产一区一区| 日本不卡免费新一二三区| 国产日韩欧美激情| av大大超碰在线| 97av视频在线| 久久超碰97人人做人人爱| 黄动漫网站在线观看| 亚洲欧美一区二区激情| 91精品天堂福利在线观看| 久久久亚洲国产精品| 色av成人天堂桃色av| 伊人久久大香线蕉综合影院首页| 99精品在线直播| 国产精品沙发午睡系列990531| 欧美人与牲禽动交com| 国产精品高潮粉嫩av| 国产成人av一区二区三区在线 | 8050国产精品久久久久久| 久久综合九色| 最近中文字幕mv第三季歌词| 亚洲欧美国产va在线影院| 日韩视频在线观看| 国产免费毛卡片| 亚洲高清一区二| 无需播放器亚洲| 亚洲精品久久久中文字幕| 精品视频一区在线视频| 国产一区亚洲| 导航艳情国产电影| 伊人伊成久久人综合网站| 小说区亚洲自拍另类图片专区| 欧美大胆成人| 日本成人黄色片| 亚洲精品视频在线播放| 99久久久久| 污污动漫在线观看| 尤物yw午夜国产精品视频明星| 一级毛片免费高清中文字幕久久网| 亚洲精品无码久久久久久| 日韩电影免费观看在线观看| 一区二区黄色| 久久免费看视频| 国产精品美女网站| 亚洲视频1区2区| 日韩欧美一级| 国产精品无码av在线播放| 精品香蕉一区二区三区| 久久一区国产| 羞羞的视频在线看| 欧美人牲a欧美精品| 综合视频在线| 成人高清在线| 欧美激情亚洲另类| 三级一区在线视频先锋| 中文字幕剧情在线观看一区| 欧美三级中文字幕在线观看| 久久一区二区中文字幕| 2018av男人天堂| 久久久欧美一区二区| 91日韩在线专区| 亚洲18在线| 国产精品无码av无码| 欧美另类老女人| 久久久久久久国产精品影院| 久久av日韩| 日韩中文字幕组| 78m国产成人精品视频| 亚洲欧美日韩精品久久久久| 任你弄精品视频免费观看| 国产色a在线观看| 国产有码在线一区二区视频| 欧美日韩在线影院| 亚洲午夜一区| 里番在线观看网站| 亚洲精品欧洲精品| 亚洲视频综合网| 久久久蜜臀国产一区二区| 免费观看亚洲天堂| 欧美狂欢多p性派对| 国产精品久久久久久搜索| 五月婷婷欧美视频| 国产精品豆花视频| 女同一区二区免费aⅴ| 日本不卡一区二区三区四区| 在线播放日韩精品| 中文字幕久久午夜不卡| 久久影院100000精品| 欧美成人三区| 7777在线视频| 国内精品模特av私拍在线观看| 一二三四社区欧美黄| 亚洲精一区二区三区| 国产伦精品一区二区三区视频金莲| 欧美亚洲精品一区二区| 国产va免费精品高清在线观看| 色哟哟亚洲精品| 麻豆视频观看网址久久| 久久国产精品免费一区二区三区| 国产三级香港三韩国三级| 九九99久久| 久久久国产成人精品| 午夜私人影院久久久久| 日产国产欧美视频一区精品| 国产精品一区二区三区www| 一级香蕉视频在线观看| 青娱乐一区二区| 久久久久亚洲精品成人网小说| 欧美性色视频在线| 国产精品996| 91亚洲国产高清| 国精产品一区二区三区有限公司 | 狠狠色狠狠色综合婷婷tag| 中文字幕在线观看日本| av日韩一区二区三区| 欧美一区二区三区免费观看 | 永久免费av在线| 激情小视频网站| 国产专区欧美专区| 高清一区二区三区av| 视频一区二区欧美| 久久网站免费观看| 久久久久久久久久伊人| 亚洲天堂影视av| 51精品国产人成在线观看 | 久久精品卡一| 亚洲mmav| 毛片网站在线| 亚洲国产精品毛片av不卡在线| 久久国产精品一区二区三区| 91国内在线视频|