WCF回顾一、基本概念和应用场景

一、WCF描述

wcf是一款基于面向服务的架构的通讯框架平台,在分布式框架中得到了广泛使用。 wcf入门非常简单,只要花几分钟就能编写一个完整的wcf程序,而实际上WCF是概念非常多的一门技术,需要花很大精力去深入研究。

二、WCF优点

1、将各种通讯技术进行整合

WCF是对于 Web Service,Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合

表示层可以基于 soap XML传输  和 rest  http调用

传输层可以基于 http https tcp  pipe msmq (在都可以满足需求的情况下,我个人比较喜欢tcp从性能和灵活性方面的综合考虑)

2、采用面向服务去实现,让编程变的更简单

软件开发方法:面向过程编程—>面向对象—>面向组件开发—>面向服务架构

面向服务优势:

一个项目中,如果存在多种风格的技术、第三方DLL或者两种技术不能同一个系统下运行 这种情况下将变的难以维护和编码不雅,但是把这些功能全部分离到的一个服务项目,通过一个个的服务接口去调用,多个环境去发布,既做到了解耦又提高了内聚, 代码在烂眼不见心不烦。

三、WCF基本概念

WCF程序分为服务端客户端,WCF程序通过宿主托管到进程中,读取配置并启动服务,客户端通过代理类实现调用。

1契约 :

(1)服务契约:  暴露给客户端的一组接口,需要加上[ServiceContract]特性,客户端才可以调用该服务。

(2)操作契约:  函数名加上[OperationContract],服务中才可以调用该函数。

[ServiceContract]
    public interface IService1
     {
         [OperationContract]
        string GetData(int value);

          [OperationContract]
         CompositeType GetDataByData(DataClass dc);

     }

  

(3)数据契约:  客户端和服务端传递的class需要加上属性[DataContract]标注为数据契约,在class的成员属性加上DataMember特性标注共享成员

注意:即使不添加特性DataContract,仍然默认为DataContract,只有数据契约可以偷懒不写

[DataContract]
public class DataClass{
   [DataMember]
    public double TotalPrice { get; set; }

 }

  

(4)消息契约:这个比较有意思,网上说法很多,关于应用场景的相当少

我的理解:首先消息契约和数据契约一样都支持流,返回流还能带附带其它信息,这些数据契约一样做的到只是多几个属性摆了。

消息契约重点在消息这两个字,数据的特性是一致性,你是 “1” 我也是 “1” ,但是消息不同我可以说成是 “1” 也可以说成是 ”一“,区别在于多样化。

消息契约是将传输数据 指定到 soap head或者soap body,可以通过order对多个head或者body中的数据进行排序,还可以自定义一些消息格式让传输格式多样化,支持更多设备的接收, 还可以对head进行加密等操作。

数据契约所有数据都在一起,我们无法控制生成的soap是什么样子。

注意每种契约都有各自的特性参数,这里就不介绍了

2地址

每个服务可以有多种传输协议,每种传输协议只能有一个调用地址

比如 :

http://192.168.1:800/Service1

net.tcp://localhost:8080/Service1

3代理

项目右键添加服务引,输入服务地址 便可以很方便的生成代理服务,也可以使用工具生成代理或者手写。

4、WCF配置文件

分为三块 bindings 、services和 behaviors

1)services:

可以有多个service ,一个service代表一个服务,

一个service可以多个endpoint,  endpoint作用主要是 地址、契约、绑定

endpoint举个例子比如 绑定http 地址就是 http://192.168.1.1:80/service1 服务契约就是 IService

(2) behaviors:

一个service可以有一个behavior ,约定服务的行为,比如服务出错是否输出详细错误,是否显示元数据等(元数据就是WCF浏览页)

(3) bindinds:

              一个service可以有一个bingding用于配置服务的传输协议和传输参数的设置等。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="tcpBind"    portSharingEnabled="true" transferMode="Buffered"   >
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="MyServiceTypeBehaviors" name="WcfService.SayService">
        <endpoint binding="netTcpBinding" bindingConfiguration="tcpBind" contract="WcfService.ISayService" />
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
          <!--发布元数据,发布前删除-->
          <serviceMetadata httpGetEnabled="true"  />
          <!--输出错误,发布前删除-->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

  

===============================================================纯属个人理解=========================================================

时间: 2024-10-11 00:13:28

WCF回顾一、基本概念和应用场景的相关文章

WCF分布式开发步步为赢(1):WCF分布式框架基础概念

众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推出了自己的中间件产品,比如Oracle Fusion和 SAP NetWeaver,IBM.BEA等企业也推出了自己基于SOA的解决方案.基于J2EE平台的SOA架构设计中的一个重要概念就是EJB企业服务总线,作用是实现各个系统的数据交互.而.NET平台上,WCF就是微软为各个系统的数据交互提供通讯

WCF学习笔记 -- 基本概念

WCF是实现WebService的一种微软提出的技术,整合了.Remote, .NET及ASP.NET服务的一种框架.是Windows Communication Foundation的缩写.WebService就是分布式应用程序间实现互操作性的一种标准.它与语言和平台无关,你可以使用任务语言编写发布到任何平台.它在底层通过SOAP协议来传送数据. WebService必须包含的几个要素: Address – 地址,也就是在哪找到该服务.地址必须唯一. Binging – 绑定协议,即通过什么方

概览 Windows Communication Foundation (WCF) 体系结构及其主要概念。代码示例演示 WCF 约定、终结点和行为

摘要:概览 Windows Communication Foundation (WCF) 体系结构及其主要概念.代码示例演示 WCF 约定.终结点和行为. 本页内容 简介 WCF 基础 代码示例 小结 简介 本文档提供 Windows Communication Foundation (WCF) 体系结构的概览.本文旨在阐释 WCF 中的主要概念以及它们如何协调工作.还有几个代码示例对这些概念进行深入阐释,但代码不是本文档的重点. 本文档下面的部分分为以下两个主要内容: WCF 基础:涵盖 WC

kafka核心概念与应用场景解析

kafka核心概念与应用场景解析 Kafka的主要特点 Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务,它主要用于处理活跃的流式数据. kafka的主要特点: 同时为发布和订阅提供高吞吐量.据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB). 可进行持久化操作.将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序.通过

WCF分布式开发步步为赢(14):WCF安全编程--基本概念

WCF安全机制是个非常复杂的问题,因为涉及的知识点较多,所以今天这个文章,会分析进行WCF安全开发应该了解的哪些知识点.如何查看资料.为了更好地理解WCF安全相关知识,我把WCF安全机制主要知识点整理为图表.本章以介绍WCF安全机制的基础概念为主.  要学习WCF安全编程,你应该学习什么首先掌握什么基础知识?很多时候会因为缺乏系统的安全概念,在进行WCF安全编程开发的时候,遇到很多问题,比如所证书,这个概念相信很多初学者第一次接触的时候花费了很多时间.我当时在做WSE安全开发的时候就查阅了很多资

WCF学习之基本概念的理解

最近在做云平台项目的时候,反复听到WCF这个东东,对于我这只菜鸟,也就只能硬着头皮上了. 那么什么是wcf呢,今天我们先看一些基本概念. 1.什么是WCF? WCF全名是:WindowsCommunication Foundation ,是一个运行库和一组 API,用于创建在服务与客户端之间发送消息的系统.它使用相同的基础结构和 API 来创建应用程序,这些应用程序可与同一计算机系统上或驻留在另一家公司内并通过 Internet 访问的系统上的其他应用程序进行通信. 2.它包括什么? 按照我的理

MQ入门总结(一)消息队列概念和使用场景

一.消息队列 消息即是信息的载体.为了让消息发送者和消息接收者都能够明白消息所承载的信息(消息发送者需要知道如何构造消息:消息接收者需要知道如何解析消息),它们就需要按照一种统一的格式描述消息,这种统一的格式称之为消息协议.所以,有效的消息一定具有某一种格式:而没有格式的消息是没有意义的. 而消息从发送者到接收者的方式也有两种.一种我们可以称为即时消息通讯,也就是说消息从一端发出后(消息发送者)立即就可以达到另一端(消息接收者),这种方式的具体实现就是我们已经介绍过的RPC(当然单纯的http通

什么是流? Node中为什么要有流这个概念 ? 使用场景?

流指的是数据流,指的是数据是分片传输, 数据可以实现非阻塞 gulp [ 流式操作 ] 案例: 打包压缩包 流程: 读取文件 const fs=require('fs') 2. 创建压缩包 const zlib=require('zlib') 3. 将读取的数据流写入压缩包 const inp=fs.createReadStream(./xx.text) 读取数据 const gzip=zlib.createGzip() 创建压缩包 4. 输出压缩包   const outp=fs.create

wcf精通1-15

随笔- 197  文章- 0  评论- 3407 十五天精通WCF——第一天 三种Binding让你KO80%的业务 转眼wcf技术已经出现很多年了,也在.net界混的风生水起,同时.net也是一个高度封装的框架,作为在wcf食物链最顶端的我们所能做的任务已经简单的不能再简单了, 再简单的话马路上的大妈也能写wcf了,好了,wcf最基本的概念我们放在后面慢慢分析,下面我们来看看神奇的3个binding如何KO我们实际场景中的80%的业务场景. 一:basicHttpBinding 作为入门第一篇