• WCF 4 高级编程 读书笔记


    第2章 服务契约与数据契约

    在SOA架构中,契约提供了服务通信所必需的元数据。契约用来定义数据类型、操作、消息交换模式和消息交换使用的传输协议。契约通常是XML格式发布的。在WCF中,服务元数据通常是用WSDL(Web Service Description Language, Web服务描述语言)文档格式来描述的。有关这方面的详细内容,可以访问 http://www.w3.org/TR/wsdl

    如果不同模式之间必须严格保持一致,则每个修改实现后,必须赋给契约一个新的版本。

    如果不同模式之间没有必要严格保持一致,则只需注意以下几点:

    服务契约版本控制

    • 可以在任何时候添加新方法。
    • 可以不删除任何已存在的方法。
    • 参数的数据类型必须保持兼容。

    数据契约版本控制

    • 不要由于继承的原因给数据契约赋予一个新版本,而是要创建一个独立的新数据类。
    • 为了方便双向版本控制,必须一开始就实现IExtensibleDataObject接口。
    • 如果确实需要改变数据类或数据成员的名称,请使用DataContract或DataMember特性生成兼容的数据契约。
    • 不要随便对数据类型进行修改。
    • 不要改变由[DataMember(Order=?)]属性确定的数据成员的顺序。
    • 保持IsRequired的默认值(false)不变。
    • 可以在任何时候添加数据成员,但是必须记住,这会改变序列化的顺序。可以把新成员的Order属性设置为当前版本值。如第2版,就赋予Order=2.
    • 不要删除数据成员。
    • 不要对IsRequired属性做后续的修改。

    第3章 绑定

    为了定义一个服务的终结点,必须实现WCF的A、B、C三要素,即地址、绑定和契约(Address、Binding和Contract),它们相当于一个服务的Where、How和What。

    • 地址是服务托管的地方,通过地址引用服务,客户端通过地址发送消息。
    • 绑定定义如何使用服务,即定义如何发送和接收消息。
    • 契约定义消息的内容。

    配置和使用绑定时,必须记住:传输绑定元素和编码绑定元素必须是指定的第一个和第二个元素,这是因为它们保证了通道之间的可靠通信。

    带有“net”前缀的绑定表示它们是利用.NET特性设计的,因而可以执行许多高性能的操作。带有“ws”前缀的绑定表示可以应用于所有系统,而且符合Web标准。

    如何选择一个合适的绑定呢?

    最明显的决定是根据是否需要与非WCF应用程序交互。如果服务需要与WCF客户端通信,则可以使用任何以net开头的绑定。

    当修改basicHttpBinding的MessageEncoding属性、将它的默认值从Text改为Mtom.Mtom(消息传输优化机制,Message Transmission Optimization Mechanism)时,可以把SOAP消息按原始字节进行发送,从而实现用较小的消息传递大量的数据,这种修改会大大改善系统的性能。

    第4章 客户端

    与SOA相反,REST最重要的不是消息本身,而是资源、URL地址和使用的动作。

    为了帮助大家使用状态码(如200,403),枚举System.Net.HttpStatusCode或类OutgoingWebResponseContext提供了可以使用的辅助方法。

    REST API的使用只限于几个动作,避免了复杂的SOAP消息交换。

    REST Starter Kit工具提供了许多类和扩展方法,可用来编写服务器端的REST程序和客户端的REST调用程序。然而,此工具不仅包含程序集,还包含许多完整的代码,可以从这些代码获取实现REST程序的各种不同思想。

    (CodePlex显示:The WCF REST Starter Kit is no longer supported

    To build RESTful services using .NET please use ASP.NET Web API.)

    第5章 实例化

    InstanceContextMode决定了会话期间服务器对象的3种创建模式:

    1. 在每一会话(PerSession)中客户端代理是否与服务对象的同一个实例进行通信
    2. 是否在每次调用(PerCall)服务对象时先创建一个新的实例,然后当调用结束时立即删除此实例
    3. 是否不管客户端多少都只创建一个(Single)服务器实例

    暂停更新...

  • 相关阅读:
    《需求工程-软件建模与分析之读书笔记之五》
    Neo4j (3.3.9)的学习之路(1)
    大数据培训第一天总结
    京东B2B业务架构演变阅读心得
    小米网抢购系统开发实践阅读心得
    余额宝技术架构及演进阅读心得
    美图数据统计分析平台架构演进阅读心得
    荔枝架构实践与演进历程阅读心得
    去哪儿网支付系统架构演进全历程阅读心得
    基于SOA质量属性的系统构架分析与实践
  • 原文地址:https://www.cnblogs.com/MikeYao/p/2725812.html
Copyright © 2020-2023  润新知