Ric*_*ich 5 .net xml wcf json platform-agnostic
我一直致力于创建独立于.Net客户端运行的WCF服务.由于谷歌和StackOverflow上,我已经能够创建简单XML和JSON服务,而肥皂的包装和一堆花哨的WCF的东西,我只是不需要.这是一个痛苦的经历,因此这个问题的主题.在自动添加服务引用时使用WebGet和WebInvoke时,WCF在客户端是疯狂的.
为了检查通信,我一直在本地创建一个WCF客户端并通过Fiddler传递所有内容.这样,无论是否有效,我至少可以看到客户端尝试发送的内容.当它最终工作时,我可以看到从两端发送的数据,然后在非.Net客户端中复制此通信.
我当前的问题是,当我更改服务以期望POST数据为json(enableWebScript行为)时,客户端不知道,它仍然尝试将对象作为xml发送.我在使用添加服务引用时没有自动设置客户端的配置有很多问题,所以我希望它可以添加到客户端的app.config上.使用XML时,我在服务中创建和使用的对象由客户端自动进行xml序列化(这是最方便的).在当前版本的WCF中,甚至可以像json那样做吗?
应该注意的是,我能够弄清楚我需要手动做什么并让它以原始形式与Fiddler(请求构建器)一起工作,所以我可以在代码中序列化我的对象并通过http post手动发送数据. ..无论如何,我是如何在我的非.Net客户端做的.这更像是一个更好地理解WCF方面的问题,以及为什么我在客户端缺少那么多可用于解决问题的文档的原因.
WCF 服务引用适用于自描述的 RPC 有效负载 - 即 SOAP、wsHttp 等。同样,WCF 强类型客户端仅适用于 RPC 有效负载,因为只有它们能够广播其所需的所有类型信息等。正常工作。
当您使用 webget 和 webinvoke 时,您正在创建非 rpc 服务(旨在编写 REST 服务),这些服务也不是自描述的,因此它不太适合服务引用功能。
您当然可以为此编写一个 .Net 客户端 - 但您会发现使用 WebClient/WebRequest 编写它要容易得多,手动格式化/读取 XML/Json 请求/响应(或使用 DataContractSerializer 和 DataContractJsonSerializer 来帮助解决那)。
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |