构建一个简单的WCF服务

以Web服务类似的步骤由IIS进行宿主服务。建立的步骤:

1 新建3.5网站

2 添加WCF服务,自动生成契约接口与实现,这里改动一下,添加个字串参数:

[ServiceContract]

public interface IFirstService

{

[OperationContract]

void DoWork(string strContent);

}

服务中的方法什么都不用做。

public class FirstService : IFirstService

{

public void DoWork(string strContent)

{

}

}

在添加WCF服务时,会自动在配置文件中添加必要的章节,例如绑定和元数据发布。

<system.serviceModel>

<behaviors>

<serviceBehaviors>

<behavior name="FirstServiceBehavior">

<serviceMetadata httpGetEnabled="true" />

<serviceDebug includeExceptionDetailInFaults="false" />

</behavior>

</serviceBehaviors>

</behaviors>

<services>

<service behaviorConfiguration="FirstServiceBehavior"

name="FirstService">

<endpoint address=""

binding="basicHttpBinding"

contract="IFirstService">

<identity>

<dns value="localhost" />

</identity>

</endpoint>

<endpoint address="mex"

binding="mexHttpBinding"

contract="IMetadataExchange" />

</service>

</services>

</system.serviceModel>

这里把绑定改一下,改为basicHttpBinding。

然后在测试端:新建立类库项目,由发布的元数据生成代理,然后进行服务请求:

[Test]

public void Test()

{

FirstInstance.FirstServiceClient client =

New FirstInstance.FirstServiceClient();

client.DoWork("this is a test!");

}

现在看一下消息包的情况:

这是客户端请求的信息:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body>

<DoWork xmlns="http://tempuri.org/">

<strContent>this is a test!</strContent>

</DoWork>

</s:Body>

</s:Envelope>

这是服务端回应的信息:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body>

<DoWorkResponse xmlns="http://tempuri.org/"/>

</s:Body>

</s:Envelope>

对于BasicHttpBinding来说,它通过http来发送soap1.1的消息。这个绑定用于配置和公开能够与基于asmx的web service和客户端进行通信的终结点,以及符合ws-i basic profile 1.1标准的其它服务。

通过设置WCF绑定的消息编码格式来设置传输过程中所使用的编码:

<basicHttpBinding>

<binding name="firstBinding" messageEncoding="Text">

</binding>

</basicHttpBinding>

现设置BasicHttp绑定的消息编码为文本,当传输二进制附件时,会怎么用base64编码:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body>

<SaveImage xmlns="www.self001.com">

<bb>GMDggAOw==</bb>

</SaveImage>

</s:Body>

</s:Envelope>

其中附件部分我省略了大部分,只留一小段。

当使用MTOM编码格式时:

--uuid:deef670a-dfd7-4a71-8d89-face6ac975dd+id=1

Content-ID: <http://tempuri.org/0>

Content-Transfer-Encoding: 8bit

Content-Type: application/xop+xml;charset=utf-8;type="text/xml"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body>

<SaveImage xmlns="www.self001.com">

<bb>

<xop:Include

href="cid:http%3A%2F%2Ftempuri.org%2F1%2F634057273450156250"

xmlns:xop="http://www.w3.org/2004/08/xop/include"/>

</bb>

</SaveImage>

</s:Body>

</s:Envelope>

--uuid:deef670a-dfd7-4a71-8d89-face6ac975dd+id=1

Content-ID: <http://tempuri.org/1/634057273450156250>

Content-Transfer-Encoding: binary

Content-Type: application/octet-stream

GIF89ad……省略

--uuid:deef670a-dfd7-4a71-8d89-face6ac975dd+id=1--

这与WSE3中使用的MTOM是相同的。

转载于:https://www.cnblogs.com/jams742003/archive/2010/04/01/1702277.html

消息(6)——WCF,构建简单的WCF服务,MTOM编码相关推荐

  1. 构建简单的微服务架构

    前言 本篇仅作引导,内容较多,如果阅读不方便,可以使用电脑打开我们的文档官网进行阅读.如下图所示: 文档官网地址:docs.xin-lai.com 目录 总体介绍   微服务架构的好处    微服务架 ...

  2. 利用Vert.x构建简单的API 服务、分布式服务

    目前已经使用Vertx已经一年多了,虽然没有太多的造诣,但也已在项目中推广了下:从最初的vertx搭建web服务,到项目上线运营,还算比较稳定.再到后来尝试搭建基于vertx的分布式服务,一路下来也积 ...

  3. spark restful_使用Spark构建简单的RESTful API

    spark restful 免责声明 :这篇文章是关于名为Spark的Java微型Web框架的,而不是关于数据处理引擎Apache Spark的 . 在此博客文章中,我们将看到如何使用Spark构建简 ...

  4. 使用Spark构建简单的RESTful API

    免责声明 :这篇文章是关于名为Spark的Java微型Web框架的,而不是关于数据处理引擎Apache Spark的 . 在此博客文章中,我们将看到如何使用Spark构建简单的Web服务. 如免责声明 ...

  5. 我的WCF之旅(1):创建一个简单的WCF程序

    http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一 ...

  6. 创建一个简单的WCF程序

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...

  7. WCF 创建简单的CF程序VS2008

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...

  8. c#进阶(5)—— WCF 实现简单预订功能

    1.WCF概述 WCF全称为Windows Communication Foundation,在.Net 3.0 中引入,用于客户端与服务端通信,替换了之前的一些技术,如.Net Remoting 及 ...

  9. 用ExtJs+Linq+Wcf打造简单grid

    本系列文章列表 1)Ajax访问Xml Web Service的安全问题以及解决方案 2)Ajax与WCF交互-WCF之美 3) Ajax与Wcf交互-JSON 4) ExtJs与WCF交互:生成树 ...

最新文章

  1. 超详细的Guava RateLimiter限流原理解析
  2. Ruby Cucumber环境
  3. Java黑皮书课后题第4章:*4.17(一个月的天数)编写一个程序,提示用户输入一个年份和一个月份名称的前3个字母(第一个字母使用大写形式),显示该月中的天数。如果月份非法则显示出错信息
  4. 关于 mysql 在联合查询时,使用 concat 拼接查询条件
  5. crs-4124   Oracle 11gR2 RAC ohasd failed to start 解决方法
  6. 线性表—顺序表-顺序表基本运算的实现
  7. python socket 游戏_python socket模拟游戏开服
  8. 佛系听歌?Beats推出“串珠”耳机 盘它?
  9. 三月提示:提防挂马网站 关注账号安全
  10. Java 函数传递对象是引用传递还是值传递?
  11. sql server sysobjects 中type 和xtype
  12. windows下快速安装nginx并配置开机自启动的方法
  13. 超详细傻瓜iPhone自定义来电铃声教程
  14. 2022年煤气考试试题及答案
  15. 用Matlab搞了个小工具,以后给你女朋友的证件照换底色再也不用发愁了
  16. Android实时音视频如何快速实现回声消除
  17. 域名与DNS域名系统
  18. E盘里多了个ppsds.pgf文件是怎么回事?
  19. mongodb mysql配置_Mongodb 配置
  20. Java 中tag配置文件中的标签属性意思

热门文章

  1. c语言规定在一个源程序中main函数的位置是什么?
  2. ajax如何传超长字符串_解决ajax超长字符串、中文乱码问题
  3. 怎么样解决小交换机引起的路由环路故障?
  4. 工业以太网交换机的概念及其主要功能介绍
  5. 数字光端机和模拟视频光端机的六个不同点
  6. 光纤模块与光纤收发器的区别
  7. [渝粤教育] 宁波大学 聆听中国 参考 资料
  8. 【渝粤教育】电大中专消费者心理学_1作业 题库
  9. 物联网应用领域-物联网智能安全始于产品开发
  10. linux cookie 地址,SYN Cookie原理及其在Linux内核中的实现