WCF的知识点盘点(二)数据绑定,svcutil的支持,消息契约的应用

勇哥注:

此系列文章是梳理一下勇哥认为项目有用的WCF的知识点,读者须有WCF的开发经验。


一. 数据绑定


dataContract在适配CLR类型和WSDL的XLD之间的灵活应用


xsd是描述数据类型的,.net, java的程序最终生成的数据契约都是xsd的

不同的语言都是根据XSD生成各自平台下的强类型。


1. 普通的类

2. 集合类类型

3. 字典类型

4. 枚举


二. 对集合和枚举类型,要解决的坑 


 对服务引用的重新认识

1。对集合类型进行重新组装

    Arrary-->List

    只能要求svcutil 进行强制转换,在服务引用中做手脚



2。对字典进行重新组装 

    同样在服务引用做手脚


三. 最后的方案

1。 如果是.net程序互通,尽量遵守同一份Entity,但现实中,很难这样做,尤其是跨语言互通


   可以将类和数据类型封装到Lib中,这样各自平台引用同一份Lib,就没问题了。

   这样就不会在服务引用时生成新的类


   大家公用同一份lib,就不存在各种问题了。


四.  DataContract,DataMember,  EnumMember对wsdl中的xsd进行可视化定制


1。 默认全部可以进行DataContractSeriallizer序列化


2。 指定不需要在xsd中显示的字段

      (1) 某些字段不显示,需要自己强制指定IgnoreDataMember

     (2) 显式进行DataContract, DataMember声明


3。 其它方面的改造

    (1)DataMember改名对真实字段保护

            通过Name属性改

     (2)调整Field顺序【Order】

         如何让xsd中的顺序跟程序中的顺序一样

         通过Order属性来改


五. 消息契约


<?xml version="1.0" encoding="utf-8“?>

<s:Envelope xmlns:s=""/>

   <s:Header>

   </s:Header>

   <s:Body>

       <DoWork xmlns="">

             <msg>hello world!</msg>

        </Dowork>

   </s:Body>

</s:Envelope>


消息契约指的:CLR类型可以直接操控Message, [header(信封), body]


而数据契约,只影响s:Body


六. 操作s:Header有什么好处?


1。 可以单独在header中增加信息,方便第三方组件拦截的时候对header进行独立的处理

      (1)保证消息防篡改的token参数  【AppID, Appsecert】 AppID+param + Appsercert

   

       (2)用户登录的用户名和密码的md5验签


        就是说可以加一些信息保护机制


   client--->负载均衡---->Service

   以上处理都放在负载均衡中去做,对于违反规则的请求,由负载均衡直接返回,相当于截流的作用。


七. 如果用代码实现?

   [MessageContract] /  [MessageHeader] / [MessageBodyMember] 

   实现soap和CLR的强类型映射 



八. 更大的灵活性:直接在参数中使用Message

  1. 更大的灵活性,实际使用少,编程麻烦

  2. 代码实现




本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-06-24 17:24:12 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864