首页 > 代码库 > 浅谈WCF

浅谈WCF

什么是WCF

先看看官方说法:

Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点。服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务。终结点可以是从服务终结点请求数据的服务客户端。简单消息可以是作为 XML 发送的单个字符或单个单词,复杂消息可以是二进制数据流。一些示例方案包括:

    • 处理企业事务的安全服务。

    • 将当前数据提供给其他服务(例如流量报告或其他监视服务)的服务。

    • 使两个人能够实时通信或交换数据的聊天服务。

    • 轮询一个或多个服务以查找数据并将其以逻辑表现形式展示出来的面板应用程序。

    • 将使用 Windows Workflow Foundation 实现的工作流作为 WCF 服务公开。

    • 轮询服务以查找最新数据源的 Silverlight 应用程序。

WCF是一个数据传输服务,对内提供丰富的承载模式,也就是可以在多种进程中运行,对外有丰富的绑定方式,即有多种传输方式和数据格式。

服务如何运行?

WCF和网页一样,自身并不能直接运行,所以它要寄宿到别的进程内。用官话说就是激活和承载。将写的服务加载到合适的进程中,并调用相关的API使其处于活动状态,这就是激活了,而加载这个服务的进程就是一个宿主。

一般情况服务和宿主是相互隔离的,虽然他们在一个进程内。

对于服务,在配置文件中也有单独的配置节,与承载进程并不冲突。

宿主的作用就是启动与关闭服务。

如何调用?

服务端设定输出模式,即绑定。绑定类型很丰富,常用的通讯方式、协议都用上了,有基于http的Web 服务、REST、甚至直接文本,有基于TCP的远程对象,还命名管道、消息队列,能用的通讯方式都用上了,很大很全。

服务端的绑定决定了客户端怎么使用,根据绑定使用的协议调用就是了。有一点要说明的是,如果调用的客户端刚好也是.Net写的,只要客户引用了定义契约的程序集,那客户端都不用生成代理,直接激活使用,代码语意完全保持一致。

使用场景

  • 对系统进行分层,做到物理上的隔离。WCF提供的访问安全机制也有效了保护了服务资源,对不同层次应用可以做数据级别的访问控制。对应用系统的部署也可以更加的灵活。
  • 多系统集成。由于WCF提供了丰富的数据格式,能够满足大部分应用系统的访问要求,这样就可以在数据层面,通过WFC将各类不同系统连接在一起。

总结

WCF是面向服务的一种平台实现,开发时并不需要关注太多通讯与数据格式上的细节,因为这些都可以通过少量的配置就可以实现,这样就可以把更多的精力放到业务逻辑上去。

浅谈WCF