我们近期在做项目的时候用到了WCF,之前已经看了部分视频,对于WCF有了一定的了解,但仅限于能够根据搭建好的框架使用WCF,还不了解。所以就进行了研究,这样既有实践也能增加理论,二者结合,使用起来更胜一筹。

小编先从一些基本的概念开始,从基础一点点开始研究。

【WCF简介】

WCF(Windows Communication Foundation)是由微软开发的一系列数据通信的应用程序框架,可以翻译为Windows通讯开发平台。从本质上来说,她是一套软件开发包。WCF应用程序由三部分组成——WCF服务、WCF服务主机和WCF服务客户端。

【基本概念】

一、终结点(EndPoing):

定义了一个消息将被发送和接收的地址,是WCF实现通信的核心要素。一个WCF Service有一个端点集组成,每个端点就是用于通信的入口,客户端和服务端通过EndPoint交换信息。如下图能看出client和service端通过Endpoint交互。

从图中可以看出WCF由三个部分组成,Address,Contract,Binding;这三者简称为abc

1)a(address)——在哪里

是指定要接收的消息的准确位置和被指定为一个统一资源标识符(URL)。

一个服务地址有一个资源。

其表现形式为://域名[:端口]/[路径]

2)b(binding)——怎样做

实现了在client和service通信的所有底层细节,它定义了一个端点通信

(要与传输协议相匹配),绑定的内容有:绑定所需的协议、消息编码协

议、安全保障策略。

3)c(contract)——做什么

主要作用是暴露了WCF Service所提供的有效服务,通过在client端引用

contract文件,我们就能使用服务端的提供的服务,在这之中,contract

起到至关重要的作用,它将每个Operation转化成为相对应的

Message Exchange Pattern(MEP)(请点击了解)。

补充:

终结点还有一个组成部分是:行为(behavior),behavior主要作用是定

制终结点在运行时的一些必要的Behavior。终结点行为通过参与构建WCF

运行库的过程来实现这一点。

二、元数据

是WCF服务核心部分address、binding、contract的原始描述信息。服务所公开的元数据包括XSD和WSDL文档。

XSD:文档中出现的元素、出现的属性、子元素、子元素数量、子元素顺序、元素

是否为空、元素和属性的数据类型、元素或属性的默认和固定值。

WSDL:用于描述服务的方法、参数、参数个数、顺序、返回值、返回值的类型等

方法的相关信息。

下面这张图是我们项目中从客户端,直接按F12出现的界面,从中可以看出,方法和返回值都是来自于元数据,这也是我对元数据的最初认识。

【总结】

通过对WCF理论的研究,了解了abc各自是用来做什么的,有什么作用。对WCF介绍了解了我们的系统运用WCF的为什么使用和使用的必要性,主要是实现分布式。针对绑定方式和契约会在接下来的博客继续介绍,我们一起学习,期待我的更新吧!

最新文章

  1. js判断图片是否加载完成
  2. poj2631 求树的直径裸题
  3. iOS关于html缓存
  4. ember.js:使用笔记7 页面中插入效果
  5. Jenkins定时构建项目
  6. 《OD大数据实战》Hive环境搭建
  7. javascript组件开发之基类继承实现
  8. 逆向+两次bfs(UVA 1599)
  9. android95 缩放加载大图片
  10. JSTL 中<c:forEach>使用
  11. sqlite3命令行
  12. java虚拟机学习-JVM调优总结(6)
  13. Ngnix技术研究系列1-通过应用场景看Nginx的反向代理
  14. mysql的复杂查询,连接数据库
  15. [Spark SQL] SparkSession、DataFrame 和 DataSet 练习
  16. AQS源码阅读笔记(一)
  17. 013_UDP专项研究监控
  18. 清北澡堂 Day 3 上午
  19. python pyqt绘制直方图
  20. flask的migrate

热门文章

  1. java web中的相对路径和绝对路径
  2. Qt5 QtQuick系列----QtQuick的Secne Graph剖析(3)-- qml与OpenGl结合
  3. 使用命令进行Apache Kafka操作
  4. 《Mysql - 自增主键为何不是连续的?》
  5. Spring笔记4
  6. Django框架深入了解_03(DRF之认证组件、权限组件、频率组件、token)
  7. django.db.utils.ProgrammingError: 1146 解决办法
  8. day38——线程queue、事件event、协程
  9. gorm - postgresql 如何连接?
  10. application.yml报错:a global security auto-configuration is now provided