不管是Web Service还是微软的WCF,客户端和服务器端的交互方式都是通过Soap来进行的,借助一些Soap Trace工具可以对Soap信息尽心跟踪以发现其不为人知的秘密。写这篇文章的初衷,是为了更深入地理解证书,因为看了很多关于WCF的安全概念,很多 情况都使用到了证书,但就不没能明白原理,后来猜想是微软封装了底层,一旦做了相应的证书配置,底层会自动进行身份验证和加密解密。但一直停留在猜测上, 没找到证据来证明自己的猜想,一不小心发现了Trace Utility,才证明了自己的想法。概念上说可以追踪Tcp信息,但用才发现只能追踪Http消息。
首先我们来讲讲Trace实现的基本原理。说的简单点Trace就是一个监听/转发器(Listening/Forwarding)。当我们启动这个工具 的时候,通过设置它监听的Port,和它将要转发的Host和Port(Destination Server& Destination Port),随后它就开始在本机的Listening Port开始监听,如果这时候一个针对该Listening Port 的Http Request,它就会把Request的内容取下来展现在我们的面前,随后将该Request转发到我们预先设定的Host和Port。说白了就是把要 发的消息先给我们查看和备份,我们再转发出去。
下载SOAP Toolkit 3.0,安装后打开Trace Utility新建Formatted Trace,如下图:
- Listen中的Local port是要监听的端口;
- Forward to中的第一个Destination是要把监听端口的任何访问转发到的目标服务器地址;
- Forward to中的第二个Destination是要把监听端口的任何访问转发到的目标端口;
如在浏览地址栏输入:http://127.0.0.1:8080或者http://localhost:8080,将会自动转发到对http://www.google.com:80的访问:
只要知道原理就好办了,在Webservice以及WCF示例我就不写了,很简单了。
还有些其他Trace工具,大家可以玩下: