zoukankan      html  css  js  c++  java
  • C#2008与.NET 3.5 高级程序设计读书笔记(25) WCF

    1.什么是WCF

    WCF的全称是:Windows Communication Foundation。从本质上来说,它是一套软件开发包,是微软公司推出的符合SOA(Service Oriented Architecture)思想的技术框架。
    WCF为程序员提供了丰富的功能,其中包括:托管、服务实例管理、异步、安全、事务管理、离线队列等。并且WCF对产业中的标准协议进行了封装和定义,它把程序员从繁琐的通信、格式编码中解放出来,使得程序员能够专注于业务逻辑的实现。同时,WCF统一了微软公司之前推出的多种分布式技术,其中包括:
    (1). Web服务和WSE。
    (2). .Net Remoting。
    (3). .Net 企业服务。
    (4). 微软消息队列(MSMQ)。
    WCF对这些技术的集成包括两个方面:
    (1). WCF的架构本身吸取了这些技术的精华。
    (2). WCF开发的服务/客户端可以和现有的Web服务、MSMQ程序进行交互。

    2.WCF核心程序集

    WCF的功能由安装在全局程序集缓存(GAC)里面的一组.NET程序集表示.

    3.WCF应用程序的基本构成

    WCF服务程序集:这个*.dll包含了希望向外部用户公开的整体功能的类和接口

    WCF服务宿主:这个软件模块是承载WCF服务程序集的实体

    服务寄宿的目的就是开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或多个终结点,使之暴露给潜给的服务消费者。服务消费者最终通过相匹配的终结点对该服务进行调用。

    WCF客户端:这是通过中间代理访问服务功能的的应用程序

    4.WCF的ABC

    地址(A,address):服务的位置,在代码中,用System.Uri类型表示,然而,值一般保存在*.config中.

    地址决定了服务的位置,解决了服务寻址的问题.

    在WCF框架中,每个服务都具有唯一的地址。在SOA系统中,其它服务和客户端通过服务的地址来对服务进行访问。一个服务的地址由一个统一资源标示符(URI)来表示。下面是几个地址示例:

    http://localhost:80/Service

    net.tcp://dc3web1:9023/MyService

    net.msmq://localhost/MyMsMqService

    绑定(B,binding):WCF附带了许多不同的绑定来指定网络协议,编码机制和传输层.

    绑定实现了通信的所有细节,包括网络传输、消息编码,以及其他为实现某种功能(比如安全、可靠传输、事务等)对消息进行的相应处理。WCF中具有一系列的系统定义绑定,比如BasicHttpBinding、WsHttpBinding、NetTcpBinding等

    契约(C,contract):从WCF公开的每一个方法的描述

    WCF服务契约标记了各种特性,如果服务契约的成员只包含简单的数据类型,可以只使用[ServiceContract]和[OperationContract]特性来构建完整的WCF服务,如果有自定义类型成员,需要使用System.Runtime.Serialization命名空间的[DataMember]和[DataContract]类型

    配置文件设置绑定例子:

    代码
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.web>
    <compilation debug="true" />
    </system.web>
    <system.serviceModel>
    <services>
    <service name="WcfServiceLibrary1.Service1" behaviorConfiguration="WcfServiceLibrary1.Service1Behavior">
    <!-- 地址,绑定,契约-->
    <endpoint address ="HelloWord "
    binding
    ="wsHttpBinding "
    contract
    ="WcfServiceLibrary1.IService1 ">
    </endpoint>
    </service>
    </services>
    </system.serviceModel>
    </configuration>
  • 相关阅读:
    配置ssh免密登录
    idea打开项目定位到选择项目的位置
    MySQL decimal、numeric数据类型介绍
    C++ string::size_type类型
    Java Oracle存储过程问题
    PLSQL Developer简单使用教程
    ed2k如何下载
    老毛桃U盘启动盘制作工具安装教程
    Hibernate current_session_context_class的事务说明
    java openSession和getCurrentSession的比较
  • 原文地址:https://www.cnblogs.com/engine1984/p/1803629.html
Copyright © 2011-2022 走看看