码迷,mamicode.com
首页 > 其他好文 > 详细

WCF 编程实验室

时间:2016-09-23 21:25:48      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

最近由于项目需要,简单研究了一下.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>

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

技术分享

 

WCF 编程实验室

标签:

原文地址:http://www.cnblogs.com/songr/p/5901480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!