1. 概念:

  WCF(Windows Communication Foundation):一个用于创建和运行分布式系统的技术集合,使用它能创建安全的、可靠的、跨平台的分布式解决方案。它的面向服务的编程模型整合了.Net平台下以往全部的分布式开发技术,例如.Net Remoting,Asp.Net Xml Web Service,MSMQ,WSE,和Enterprise Service等,它可以支持跨应用程序域,进程,网络的进行数据通讯,而且能寄宿在诸如IIS,Windows Service,Console,Windows Application等多种宿主中。

2. 组成:

  • Contracts:类库项目,定义服务契约,应用System.ServiceMode程序集;
  • Services:  类库项目,提供WCF服务的实现。该项目中的所有WCF服务实现了定义在Contracts中相应的服务契约,所以Services具有对Contracts项目的引用;
  • Hosting:   控制台程序或其他应用程序,实现对定义在Services项目中的服务的寄宿,该项目需引用Contracts和Services两个项目和System.ServiceMode程序集;
  • Client:      控制台或其他应用程序模拟服务的客户端,该项目引用System.ServiceMode程序集。

3. 契约类型

  服务契约、数据契约、消息契约和错误契约

4. WCF技术优势

  常用的分布式技术有COM+、.NET远程技术(Remoting)、Web Service和微软消息队列服务,WCF技术将这些分布式技术整合为一个高效的API。常用的那些分布式技术只能解决项目开发中某个方面的问题,并且不同技术对平台要求不同。在项目中有时要使用到多种技术从而导致这些技术所提供的服务有重叠之处,并且整个项目的维护复杂性大大增加。WCF技术提供了一个完整统一的方案解决这些问题,它提供了一个用于访问各种分布式技术的通用API,并且增加了很多必要的服务。

5. 建立WCF程序

  • 创建服务:由地址、契约、绑定三部分组成。
    a.编写契约:其实是一个接口。

    namespace WCFService
    {    [ServiceContract]public interface IService{[OperationContract]string DoSomething();}
    }

    b.编写服务类型:是契约的实现。

    namespace WCFService
    {   public class Service : IService{public string DoSomething(){return "This is my first WCF Project!";}}
    }  

  • 创建宿主
    a.添加引用: System.ServiceMode和WCF的服务WCFService
    b.添加配置文件

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration><system.serviceModel><services><service name="WCFService.Service" behaviorConfiguration="ServiceBehavior"><host><baseAddresses><add baseAddress="http://localhost:8001/Services/" /></baseAddresses></host><endpoint address="Service" binding="basicHttpBinding"contract="WcfService.IService"  /></service></services><behaviors><serviceBehaviors><behavior name="ServiceBehavior"><serviceMetadata httpGetEnabled="true" /></behavior></serviceBehaviors></behaviors></system.serviceModel>
    </configuration>

    c.编写宿主

    using System.ServiceModel;namespace ServiceHost
    {class Program{static void Main(string[] args){using (ServiceHost host=new ServiceHost(typeof(WCFService.Service))){host.Open();Console.WriteLine("WCF Services start!");Console.ReadKey();host.Close();}}}
    }  

  • 编写客户端
    a.添加服务引用
    b.编写客户端代码

    namespace UserClient
    {class Program{static void Main(string[] args){using (WCFServices.ServiceClient client = new WCFServices.ServiceClient()){string result = client.GetData();Console.WriteLine("WCF Result!");Console.ReadKey();}}}
    }  

  • 启动宿主,运行客户端程序。

引自:http://www.cnblogs.com/artech/archive/2007/09/15/893838.html
参考:http://www.cnblogs.com/iamlilinfeng/category/415833.html

转载于:https://www.cnblogs.com/raysbo/archive/2009/01/06/1370447.html

WCF - 基础介绍相关推荐

  1. wcf 基础知识 之 消息交换模式 response/reply oneway deplex

    wcf支持请求-回复(response-reply).单工(oneway)以及双工(duplex)三种消息交换模式.今天我们来说一下第一种消息交换模式--请求--回复,请注意这里是消息交换模式. 请求 ...

  2. day23:shell基础介绍 alias及重定向

    2019独角兽企业重金招聘Python工程师标准>>> 1.shell基础介绍: shell是一个命令解释器,用于用户与机器的交互: 也支持特定的语法(逻辑判断,循环): 每个用户都 ...

  3. WCF 基础之契约(Contract)[转]

    1. WCF 基础之契约(Contract) 契约(Contract)是 WCF 的消息标准,告知客户端如何与服务器联系交互.契约是平台中立的,也就说我们可以使用其它平台(包括开发和系统平台)来调用服 ...

  4. WCF基础知识问与答

    学习WCF已有近两年的时间,其间又翻译了Juval的大作<Programming WCF Services>,我仍然觉得WCF还有更多的内容值得探索与挖掘.学得越多,反而越发觉得自己所知太 ...

  5. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  6. python介绍和用途-Python基础介绍(一)

    Python基础介绍(一) 1. python是什么编程语言 编译型与解释型 ​编译器吧源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以极其语言来运行此程序,速度很快 ...

  7. STL体系结构与内核分析-2-STL体系结构基础介绍(侯捷)--笔记

    STL体系结构与内核分析(侯捷) 2.STL体系结构基础介绍 STL设计方式与OO(面向对象)不同的地方,OO鼓励数据和处理数据的方法都放在类里,而STL的数据在容器里,操作数据的方法在其他部件里(模 ...

  8. ai一个线段多个箭头_初学设计却分不清PS和AI?超详细的AI基础介绍包你一看即会!...

    以前提到AI,第一个想到的就是人工智能.自从扎进设计的神坑,再提到AI,我可只认软件了~ 包括小ke在内的很多设计小伙伴在最开始入行的时候都认为,只要学好PS就可以稳打设计圈了~毕竟那么多公号一提到设 ...

  9. 深度学习与计算机视觉系列(1)_基础介绍

    转载自: 深度学习与计算机视觉系列(1)_基础介绍 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/detail ...

最新文章

  1. Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比
  2. VC++从txt文本中读取字符和数字
  3. 【MySQL】(图解)快速理解内连接、外连接、左连接、右连接
  4. 倒梁法matlab,在编制措施项目清单时,关于钢筋混凝土模版及支架费项目,应在清单中列明(    )...
  5. 微信小程序 canvas 文字自动换行
  6. 利用归并排序求逆序对
  7. 机器翻译pascal程序
  8. Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置
  9. WeTool V6.0.0免费版多功能微信好有管理软件
  10. Swift 3到5.1新特性整理
  11. 使用code::blocks搭建objective-c的IDE开发环境 支持 @interface
  12. python 编译 pyc
  13. echart data放入数组_线性表(数组、链表、队列、栈)详细总结
  14. 麻将 (Standard IO)
  15. 2018年线程与多线程面试必知必会内容
  16. HDU2032 杨辉三角【入门+趣味程序】
  17. 文本数据挖掘(Text Mining)
  18. Clickhouse除数为0
  19. 国内部分视频剪辑软件使用总结
  20. 数电常见74系列器件及其功能总结(不要再混乱啦,值得收藏)

热门文章

  1. 【学习总结】之 3Blue1Brown系列
  2. IIS 6和IIS 7 中设置文件上传大小限制设置方法,两者是不一样的
  3. FineReport中Domino数据库连接方法
  4. 【新番前线】2009年公开剧场版动画汇总
  5. 使用Javascript制作连续滚动字幕
  6. Android内核开发必备知识
  7. RxJava zip 使用
  8. 算法--- 二叉树的层序遍历 II
  9. 【Linux】【C/C++】十叉非完全树的构造和重构
  10. HwServiceManager篇-Android10.0 HwBinder通信原理(五)