WCF-09-message intercept, modify
基本概念
消息拦截与篡改
我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息。
可能我们还会有一个疑问:如何知道客户端与服务器通讯过程中,期间发送和接收的SOAP是什么样子。
当然,也有人是通过借助其他工具来抓取数据包来查看。那,有没有办法让程序自己输出相应的SOAP信息呢?当然有,正式本文讨论主题。
说到消息拦截,这个你肯定可以理解,如果你不懂...
2017-04-22 14:35:31 |
Network
WCF-08-stream-file-transfer
TransferMode
如果你不喜欢用Socket来传文件,不妨试试WCF,WCF的流模式传输还是相当强大和相当实用的。
因为开启流模式是基于绑定的,所以,它会影响到整个终结点的操作协定。如果你不记得或者说不喜欢背书,不想去记住哪些绑定支持流模式,可以通过以下方法:
因为开启流模式,主要是设置一个叫 TransferMode 的属性,所以,你看看哪些 Binding 的派生类有这个属...
2017-04-22 14:35:31 |
Network
WCF-07-message contract
Message Contract
消息协定
Simple Demo
消息协定的定义和数据协定很像,也是先写一个类,然后附加MessageContractAttribute,而对于类的成员(字段或属性,不管是公共的还是私有的)可以附加MessageHeaderAttribute或MessageBodyMemberAttribute。
其实,MessageHeaderAttrib...
2017-04-22 14:35:31 |
Network
WCF-06-simplex communication, duplex separation
单工、双工
单工 模式的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线
双工 指二台通讯设备之间,允许有双向的资料传输。
实例
Case One
没有返回值的单工函数。一切正常。
Server SingleService.cs
/// <summary>
/// 单工
/// </summar...
2017-04-22 14:35:31 |
Network
WCF-05-data contract
Data Contract
默认的情况下WCF使用称之为数据协定序列化程序的序列化引擎对数据进行序列化和反序列化,所有的.NET Framework基元类型,如整型、字符串型,以及某些被视为基元的类型,
如DateTime、XmlElement不需要做其他工作就可以被序列化,并被视拥有默认的数据协定。
数据协定
Simple Demo
User.cs
namespa...
2017-04-22 14:35:31 |
Network
WCF-04-soap
SOAP
SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。
为何使用
目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。
通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所...
2017-04-22 14:35:31 |
Network
WCF-03-service contract
Service contract
定义和实现服务协议。
[ServiceContract]
public interface ICalcService
{
[OperationContract]
void Add();
void Sub();
}
public class CalcService : ICalcService
{
public v...
2017-04-22 14:35:31 |
Network
WCF-02-hello world2
Hello World
上一篇中我们直接使用默认创建的模板尝试了一下WCF。我们这里再手动写一下。
(友情提示:可以跳过。)
一、创建 Server
直接新建命令行程序。
Program.cs
这里需要添加引用System.ServiceModel。
using System;
using System.Collections.Generic;
using System...
2017-04-22 14:35:31 |
Network