您的位置:首页 > 其它

化零为整WCF(8) - 消息处理(使用流数据传输文件)

2008-04-21 08:52 477 查看
[索引页]

[源码下载]

[align=center]化零为整WCF(8) - 消息处理(使用流数据传输文件)[/align]

作者:webabcd

介绍

WCF(Windows Communication Foundation) - 消息处理:使用流数据传输文件,减少内存开销。

示例

1、服务

IStreamed.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

using System.IO;

namespace WCF.ServiceLib.Message

Streamed.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

using System.IO;

namespace WCF.ServiceLib.Message

2、宿主

Streamed.cs

using (ServiceHost host = new ServiceHost(typeof(WCF.ServiceLib.Message.Streamed)))

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<system.serviceModel>

<services>

<!--name - 提供服务的类名-->

<!--behaviorConfiguration - 指定相关的行为配置-->

<service name="WCF.ServiceLib.Message.Streamed" behaviorConfiguration="MessageBehavior">

<!--address - 服务地址-->

<!--binding - 通信方式-->

<!--contract - 服务契约-->

<!--bindingConfiguration - 指定相关的绑定配置-->

<endpoint address="Message/Streamed" binding="netTcpBinding" contract="WCF.ServiceLib.Message.IStreamed" bindingConfiguration="StreamedBindingConfiguration" />

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

<host>

<baseAddresses>

<add baseAddress="http://localhost:12345/Message/Streamed/"/>

<add baseAddress="net.tcp://localhost:54321/"/>

</baseAddresses>

</host>

</service>

</services>

<behaviors>

<serviceBehaviors>

<behavior name="MessageBehavior">

<!--httpGetEnabled - 使用get方式提供服务-->

<serviceMetadata httpGetEnabled="true" />

<serviceDebug includeExceptionDetailInFaults="true"/>

</behavior>

</serviceBehaviors>

</behaviors>

<bindings>

<netTcpBinding>

<!--transferMode - 指示通道是使用流处理模式还是缓冲模式来传输请求和响应消息-->

<!--maxReceivedMessageSize - 在采用此绑定配置的通道上可接收的最大消息大小(单位:字节)-->

<!--receiveTimeout - 在传输引发异常之前可用于完成读取操作的时间间隔-->

<binding name="StreamedBindingConfiguration" transferMode="Streamed" maxReceivedMessageSize="1073741824" receiveTimeout="00:10:00" />

</netTcpBinding>

</bindings>

</system.serviceModel>

</configuration>

3、客户端

Streamed.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.ServiceModel;

using System.IO;

namespace Client2.Message

App.config

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<system.serviceModel>

<client>

<!--address - 服务地址-->

<!--binding - 通信方式-->

<!--contract - 服务契约-->

<endpoint address="net.tcp://localhost:54321/Message/Streamed" binding="netTcpBinding" contract="MessageSvc.Streamed.IStreamed" bindingConfiguration="StreamedBindingConfiguration" />

</client>

<bindings>

<netTcpBinding>

<!--transferMode - 指示通道是使用流处理模式还是缓冲模式来传输请求和响应消息-->

<!--sendTimeout - 在传输引发异常之前可用于完成写入操作的时间间隔-->

<binding name="StreamedBindingConfiguration" transferMode="Streamed" sendTimeout="00:10:00" />

</netTcpBinding>

</bindings>

</system.serviceModel>

</configuration>

运行结果:

上传文件后提示上传成功

OK

[源码下载]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: