VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
  • asp.net教程之消息操作

消息操作

由于WCF的客户端和服务器之间都是通过消息响应和通信的,那么在WCF应用的运行过程中,消息是如何在程序之间进行操作的,这就需要通过XML文档来获取相应的结果。在客户端和服务器之间出现信息通信,并且客户端调用了服务器的方法时,就会产生消息,如GetSum方法。GetSum方法在接口中的代码如下所示。
        [OperationContract]                                                                                                                     //标识方法
        int GetSum(DateTime time);                                                                                                     //定义方法
在GetSum方法的实现过程中,只需要进行简单的操作即可,示例代码如下所示。
        public int GetSum(DateTime time)                                                                                 //实现方法
        {
            int BreadNum = 10;                                                                                                   //声明必要字段
            int Milk = 5;                                                                                                                           //声明必要字段
            int HotDryNuddle = 20;                                                                                            //声明必要字段
            int today = BreadNum + Milk + HotDryNuddle;                                                    //实现计算
            return today;                                                                                                                         //返回值
        }
上述代码执行后,客户端会调用服务器的GetSum方法,服务器接受响应再返回给客户端相应的值,如图18-14和图18-15所示。
 
图18-14  执行服务器方法                      图18-15  返回的XML格式文档
在运行后,测试客户端能够获取请求时和响应时的XML文档,其中请求时产生的XML文档如下所示。
<s:Envelope
  xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://tempuri.org/IService1/GetSum</a:Action>
    <a:MessageID>urn:uuid:dcc8a76e-deaf-45c4-a80c-2034b965d001</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
  </s:Header>
  <s:Body>
    <GetSum xmlns="http://tempuri.org/">
      <time>2008-10-03T17:30:00</time>
    </GetSum>
  </s:Body>
</s:Envelope>
从上述代码可以看到在Action节中,使用了相应的方法GetSum,在WCF服务库编程中可以通过使用OperationContract.Action捕获相应的Action消息,示例代码如下所示。
        [OperationContract(Action = "GetSum", ReplyAction = "GetSum")]
        Message MyProcessMessage(Message m);
MyProcessMessage实现示例代码如下所示。
        public Message MyProcessMessage(Message m)
        {
            CompositeType t = m.GetBody<CompositeType>();                                                   //获取消息
            Console.WriteLine(t.StringValue);                                                                                             //输出消息
            return Message.CreateMessage(MessageVersion.Soap11,
            "Add", new CompositeType("Hello World!"));                                                                          //返回消息
        }
上述代码将操作转换为消息后发送,开发人员可以通过Windows应用程序或ASP.NET应用程序获取修改后消息的内容。在进行消息的操作时,WCF还允许开发人员使用 MessageContractAttribute / MessageHeaderAttribute 来控制消息格式,这比 DataContractAttribute 要更加灵活。

相关教程