博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF 第二章 契约 同步请求回复操作
阅读量:6832 次
发布时间:2019-06-26

本文共 1812 字,大约阅读时间需要 6 分钟。

对服务操作来说,同步请求回复消息交换是最普通的模式。这个模式就像任何人在面向过程或者面向对象语言中编程的那样。请求回复模式是本地过程调 用的原型,对远程过程调用也很普通。图片2.3显示了一个请求回复交互,一个在客户端运行的代理发送请求给一个服务,服务端同步返回消息给客户端。
WCF使得在客户端和服务端进行请求-回复通信非常容易。在设计阶段,你使用添加服务引用或者svcutil.exe来调用服务元数据终结点而 且生成一个客户端代理来模仿服务操作的签名。这允许客户端代码像本地函数调用一样调用代理上的方法。代理把方法名字和参数序列化成一个SOAP消息,然后 发送SOAP消息到服务端,然后创建一个.NET类型来表示从服务返回的回复消息。
列表2.1显示一个服务契约定义。一个服务契约和一个操作契约被定义到代码中。操作契约代表一个可以被客户端调用的方法,或者更准确一些的说,一条消息可以被客户端发送并被服务端理解。注意契约在接口中定义,而不是类定义。
using System;
using System.ServiceModel;
 
namespace EssentialWCF
{
    [ServiceContract]
    public interface IStockService
    {
        [OperationContract]
        double GetPrice(string ticker);
    }
 
    public class StockService : IStockService
    {
        public double GetPrice(string ticker)
        {
            return 94.85;
        }
    }
}
 列表2.2显示了客户端代码,使用一个由添加服务引用生成的代理并调用列表2.1中的服务。这很像列表1.2中显示的代码。
using System;
using System.ServiceModel;
 
namespace Client
{
    class Client
    {
        static void Main(string[] args)
        {
            localhost.StockServiceClient proxy =
                new localhost.StockServiceClient();
            double price = proxy.GetPrice("msft");
            Console.WriteLine("msft:{0}", price);
            proxy.Close();
        }
    }
}
 
  列表2.3 显示了从客户端发送到服务终结点的SOAP消息。有很多值得注意的地方:
 
   SOAP消息的命名空间是 ,除非在[ServiceContract]中重载属性否则这就是默认的。如果服务将要暴露在一个应用的外面或者在一个相对小的组织外面,你应该重载默认属性,因为命名空间结构设计来唯一定义你的服务来避免多个连接服务模棱两可。
  在列表1.1中类的定义中的方法名,GetPrice用来定义wsa:动作在SOAP消息头中。完全的动作名是契约命名空间的组合,契约名字(接口名字或者类型,如果没有明确的服务接口被使用)操作名字,一个额外的字符串(如果消息是一个相关的回复)。
  SOAP消息体由方法签名控制,具体方法由[OperationContract]和[DataContract]属性确定。SOAP消息头包括消息将要发送到的地址。这种情况下,它是寄宿在IIS服务器上的SVC文件。
<s:Envelope xmlns:s="">
  <s:Header>
    <To s:mustUnderstand="1"
        xmlns="">
    </To>
    <Action s:mustUnderstand="1"
            xmlns="">
            
    </Action>
  </s:Header>
  <s:Body>
    <GetPrice xmlns="">
      <ticker>msft</ticker>
    </GetPrice>
  </s:Body>
</
s:Envelope
>

=========

转载自

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

转载于:https://www.cnblogs.com/llbofchina/archive/2011/06/27/2091340.html

你可能感兴趣的文章
qt添加图标
查看>>
字节流高效缓冲区文件复制
查看>>
ColorMatrixColorFilter颜色过滤(离线用户的灰色头像处理)
查看>>
react:reducer-creator
查看>>
MyEclipse 总是弹出“multiple Errors have Occurred”
查看>>
sas实例合集
查看>>
C语言解释器的实现--存储结构(一)
查看>>
Java Eclipse常规设置
查看>>
ios官方菜单项目重点剖析附项目源码
查看>>
构建javaweb项目
查看>>
MVC5学习笔记
查看>>
大大大大板子
查看>>
使用博客园时,如何在自己的博客上显示头像?
查看>>
【作业】简单绘图程序
查看>>
二分查找
查看>>
java ee
查看>>
复制文字,链接,剪贴板的使用
查看>>
RSA加解密-2
查看>>
正向与反向代理的理解
查看>>
二分搜索法
查看>>