Welcome

首页 / 软件开发 / WCF / 用Restful方式调用WCF进行上传下载

用Restful方式调用WCF进行上传下载2010-07-28 cnblogs jillzhang在前面几篇文章中,分别就WCF如何与Ajax交互,如何返回json数据给Ajax,如何为ExtJs控件提供数据,如何用Http的访问方式异步调用Restful的WCF服务,本文着重讲述如何用Restful方式调用WCFl进行文件的上传和下载。在前面的文章中,曾经写过Restful的WCF支持两种格式的请求和响应的数据格式:1)XML 2) JSON。事实上WCF不光支持上述两种格式,它还支持原生数据(Raw,来源于Carlos" blog)。这样一来,WCF的Restful方式实际上支持任意一种格式的,因为原生的即表明可以是任意一种格式,WCF从客户端到服务端,从服务端到客户端都会保持这种数据的原来的数据格式。通过查阅MSDN中WebMessageEncodingBindingElement 类的说明:也能找到上述的论证

首先总结一下如何在Restful的WCF的服务端和客户端传递原生的数据(Raw),在WCF中,返回值或者参数为System.IO.Stream或者System.IO.Stream的派生类型的时候,加配上HTTP请求和Restful服务操作响应消息中的ContentType,便能实现原生数据的传输。

下面通过一个上传和下载图片文件的项目示例来演示如上的结论。

第一步:在VS2008中,创建一个解决方案:WcfBinaryRestful,包括四个项目:如下图所示:

其中各个项目的说明如下表所述:
项目名称说明
WcfBinaryRestful.ContractsWCF服务的契约部分
WcfBinaryRestful.ServiceWCF服务具体实现部分
WcfBinaryRestful.HostWCF服务的Console程序的承载程序
WcfBinaryRestful.Client客户端