WCF 编程实验室

最近由于项目需要,简单研究了一下.NET WCF编程。

首先,简单说下WCF是什么,WCF 本质上,是一种开发框架。它用来开发类似COM+ 、WEB SERVICE 这样“远程方法调用” 功能。

普通情况想,一个进程中,A模块调用B模块的方法。

有了COM+ 、Webservice 这些,可以实现A进程 调用 B进程的方法。 更好的是,A,B可以不在同一个机器上。WCF就用来开发这样的“功能”

WCF 比 COM+ WebService 灵活,(高效不知道,没有实际案例测试)

  • 能在http\tcp\pipe\msmq 之间灵活切换。
  • 可以注入到应用程序、windows服务、web服务中。(以webservice为例,它似乎只能在web容器中发挥作用。wcf 可以以一个exe为宿主。)

我打算从一个简单的例子开始,分别用http  和 tcp 来实现。

我自己开发过程总结了一下大致以下步骤

  1. 编写类库,定义契约
  2. 编写宿主
  3. 配置宿主
  4. 引用服务
  5. 编写客户端

其中,3,4 步骤有很强的关联关系。

下面我就用VS2013 .net framework 4 来实现一个简单的基于http协议的WCF

我们此次目标是 实现,提供加法运算、 问候语功能的服务,宿主我们用一个控制台(要改IIS 或者 windows服务,我们后面会涉及到)



1 编写类库

首先,用C#语言新建一个类库工程

处理一些基本的命名规范

添加 Sysmte.ServiceModel程序集

同时添加 using System.ServiceModel;

接着,需要定义契约和接口,代码和注释如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace WCF_Simple_Lib
{
    //1 先编写这样的代码,表示一个服务契约。关于它的细节我们以后再研究
    [ServiceContract]
    //2 定义一个接口,
    public interface IWCF_Simple
    {
        //3 这个接口要求实现一个Add加法,为了让这个方法被远程调用,需要[OperationContract]
        // 同样的,关于它的细节我们以后研究
        [OperationContract]
        int Add(int x,int y);
        //4 每个对外的接口都需要加入OperationContract约束
        [OperationContract]
        String Hello(String yourName);
    }
    //5 实现这个接口
    public class WCF_Simple_Impress:IWCF_Simple
    {
        public int Add(int x,int y)
        {
            return x+y;
        }

        public String Hello(String yourName)
        {
            return String.Format("Hello! {0}",yourName);;
        }
    }
    public class WCF_Simple1_Lib
    {
    }
}

编译,得到 WCF_Simple_Lib.dll,第一步结束



2,编写宿主

再新建一个控制台工程,同时引用System.ServiceModel 程序集 和 我们在第一个步骤中编译得到的WCF_Simple_Lib.dll

添加一个应用程序配置文件 App.config

然后生成一下。这样加载类库,为一步做准备。

继续下一步,最后输入访问host的http地址。

VS 自动填写好APP.CONFIG的内容

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <services>
            <service name="WCF_Simple_Lib.WCF_Simple_Impress">
                <endpoint address="http://127.0.0.1:8090/wcfsimplehost" binding="basicHttpBinding"
                    bindingConfiguration="" contract="WCF_Simple_Lib.IWCF_Simple" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

事实上到这一步,这个服务已经配置完了。但是,如果仅仅这样配置,我们无法引用这个服务。所以还有一些工作要做。

时间: 2024-10-27 13:14:49

WCF 编程实验室的相关文章

【WCF--初入江湖】01 WCF编程概述

01 WCF编程概述 SOA的优点 1.服务独立于平台和工作环境.服务并不关心自己所处的环境,也不关心与之进行通信的服务所处的    环境. 2.服务相互隔离. 3.服务对协议.格式和传输中立. 4.服务可以扩展. 5.服务行为不受限制. 实现SOA思想的技术: 1.webService 2.WCF 什么是WCF MSDN上的定义: WCF为.NetFramework 提供了一个基础,使其能够编写代码,以在组件.应用程序.系统之间进行通信.WCF的设计遵循的是面向服务的原则.服务是指可以通过消息

[WCF编程]6.绑定行为

一.绑定行为概述 为了支持服务端的其它本地特性,WCF定义了行为的概念.行为就是服务的本地特性,不会影响服务的通信模式.客户端并不知道服务端行为,所以行为不会出现在服务的绑定和发布的元数据中.说下WCF下“契约(Contract)”和“行为(Behavior)”的区别:契约是涉及双边的描述(契约是服务的提供者和服务消费者进行交互的手段),那么行为就是基于单边的描述.客户端行为体现的是WCF如何进行服务调用的方式,而服务端行为则体现了WCF的请求分发方式.所以服务契约会通过元数据对外发布,而WCF

[WCF编程]3.WCF基础

一.服务 服务是一组公开功能的集合. 服务内部包含了如语言.技术.版本与框架等概念,服务之间的交互只允许使用规定的通信模式 外界客户端并不知道服务内部的实现细节,所以WCF服务通常通过元数据的方式描述可用的功能及服务可能采用的通信方式 WCF不允许客户端直接与服务交互,客户端总是使用代理将调用转发给服务 ,WCF允许客户端跨越执行边界与服务通信,如跨应用程序域.进程甚至网络. WCF要求客户端对本地对象还是远程对象都保持一致的编程模型,而不用考虑服务的位置 WCF对本地对象还是远程对象都使用代理

[WCF编程]2.SOA概述

一.SOA简介 1. SOA(面向服务架构)既是一种编程方式,也是软件开发的一种架构方法.根据这种架构方法,应用程序是由具有一定行为(称为服务)的功能单元组成的. 2. SOA的基本思想是构建一个粗粒度.松散耦合的系统,在这个系统中,服务的使用者与服务的实现唯一共同拥有的东西,就是公开的服务操作和参数的结构定义. 3. 客户端只知道用来描述服务方法的名称.输入参数类型及返回值类型. 4. SOA架构的技术基础是SOAP标准.SOAP用XML语言来定义一个服务操作所发送和接收消息的内容.该消息是由

[WCF编程]10.操作:单向操作

一.单向操作概述 WCF提供了单向操作,一旦客户端调用,WCF会生成一个请求,但没有相关的应答信息返回给客户端.所以,单向操作是不能有返回值,服务抛出的任何异常都不会传递给客户端. 理想情况下,一旦客户端调用了一个单向操作,它只会在要求调用的一瞬间被阻塞.事实上,单向调用不等于异步调用.当单向调用到达服务端时,不会立即分发这些调用,而是将调用方法服务端的队列中,并在某个时间分发.这一过程要根据服务配置的并发模式行为而定.服务要放入到队列中的消息个数与哦诶只的管道及可靠性模式有关.如果队列消息的数

WCF分布式开发步步为赢(12):WCF事务机制(Transaction)和分布式事务编程

今天我们继续学习WCF分布式开发步步为赢系列的12节:WCF事务机制(Transaction)和分布式事务编程.众所周知,应用系统开发过程中,事务是一个重要的概念.它是保证数据与服务可靠性的重要机制. 作为面向服务应用的开发平台,WCF也提供了对事物编程模型的支持..NET 2.0提供的System.Transactions类来开发事务应用程序.同样WCF也支持事务特性,WCF事务机制是什么,它与微软已有的技术如Microsoft 分布式事务协调器 (MSDTC)有何关系?与Enterpise

wcf之二(接口契约式编程思想)

Wcf编程之二(接口契约编程) 简述 任务理解接口式编程,定义一个接口是为了遵循中规范,便于程序的扩展.接口是一种能力也是一种约定.1.接口不可以被实例化 2.实现类必须实现接口的所有方法(抽象类除外)3.接口可以实现多继承 4.接口中可定义属性. 实例 打印机需要墨盒和纸张.墨盒有黑白.彩色.纸张有A4 B5.打印机怎么实现对不同纸张好墨盒打印的呢?接口契约式编程,打印机执行定义纸张接口和墨盒接口两个约定.纸张厂家和墨盒厂家只需遵循约定就可有打印. 代码 接口契约墨盒 public inter

Async和Await进行异步编程

使用Async和Await进行异步编程(C#版 适用于VS2015) 你可以使用异步编程来避免你的应用程序的性能瓶颈并且加强总体的响应.然而,用传统的技术来写异步应用是复杂的,同时编写,调试和维护都很困难. VS2012介绍了简单的方法,那就是异步编程,它在.Net Framework 4.5和Windows 运行时提供了异步支持.编译器做了开发者以前做的困难的工作,而且你的应用保持了类似于异步代码的逻辑结构.结果,你轻易地就获得了所有异步编程的优势. 异步提升响应 异步对于可能阻塞的活动是至关

《WCF技术剖析》博文系列汇总[持续更新中]

http://www.cnblogs.com/artech/archive/2009/11/21/1607686.html 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖析(卷1)>写作期间,对WCF又有了新的感悟,为此以书名开始本人的第三个WCF系列.本系列的目的在于对<WCF技术剖析>的补充,会对书中的一些内容进行展开讲述,同时会囊括很多由于篇幅的原因忍痛割弃的内容. [第1篇] 通过一个ASP