学习WCF笔记

一、参考http://www.cnblogs.com/artech/archive/2007/02/26/656901.html

二、步骤

1、新建空白解决方案:文件--新建项目--其他项目类型--Visual Studio解决方案--空白解决方案

2、新建契约类库项目 Contract,引用System.ServiceModel; 新建接口ICalculator,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace Contract
{
    [ServiceContract(Name="CalculatorService",Namespace="http://www.artech.com/")]
    public interface ICalculator
    {
        [OperationContract]
        double Add(double x,double y);
    }
}

3、新建服务类库项目Service,引用Contract,新建类CalculatorService,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Contract;
namespace Service
{
    public class CalculatorService : ICalculator
    {
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
}

  4、新建寄宿服务的控制台项目Hosting,引用System.ServiceModel、Service、Contract,代码如下

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

namespace Hosting
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceHost host = new ServiceHost(typeof(Service.CalculatorService));
            host.Opened += delegate
            {
                Console.WriteLine("服务已经启动,按任意键结束!");
            };
            host.Open();
            Console.ReadLine();
        }
    }
}

  配置服务文件,添加配置文件(添加-新建项-常规-应用程序配置文件),配置服务终结点,配置如下:

终结点(EndPoint)三要素:地址Address(决定服务位置),绑定Binding(实现通信的细节),契约Contract(对服务操作的抽象)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="metadataBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:9999/CalculatorService/metadata" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="metadataBehavior" name="Service.CalculatorService">  <!--注意此处必须与第三步服务的命名空间一致-->
        <endpoint address="http://127.0.0.1:9999/CalculatorService" binding="wsHttpBinding"  contract="Contract.ICalculator" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

4、客户端调用,新建控制台项目Client

4.1 运行Hosting.exe,

4.2 引用--添加服务引用,地址中输入http://127.0.0.1:9999/CalculatorService/metadata--前往,命名空间:ServiceReference,

http://127.0.0.1:9999/CalculatorService/metadata   为WSDL形式体现的服务元数据,可以在IE中打开查看

4.3 添加代码如下。

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

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Threading.Thread.Sleep(5*1000);  //等待服务启动后再调用
            ServiceCalculatorClient client = new ServiceCalculatorClient();
            Console.WriteLine("x+y={0},when x={1} and y={2}",client.Add(1,2),1,2);
            Console.ReadLine();
        }
    }
}

5、设置client、hosting为启动项(解决方案--右键--属性-多启动项-client启动、hosting启动),F5运行 查看结果。

6、源代码下载

时间: 2024-11-09 15:55:52

学习WCF笔记的相关文章

菜鸟学习WCF笔记-概念

背景 WCF这个词语一直不陌生,以前也使用过多次在实际的项目中,但是一直没有时间来做个系统的学习,最近抽点时间,看看 蒋金楠的<WCF全面解析>学习下,顺带做些笔记,如有错误,欢迎各路大神指正. 本章意在对Windows通信编程涉及到的相关词汇进行一个大概的理解不深究. 参考:http://baike.baidu.com/view/1140438.htm?fr=aladdin(不得不说百度百科,维基百科等资料很丰富),<WCF全面解析>. WCF介绍 Windows Communi

菜鸟学习WCF笔记-Address

终结点是WCF最为核心的对象,因为它承载了所有通信功能.服务通过相应的终结点发布出来,客户端通过与之匹配的终结点对服务进行调用.终结点有地址.绑定和契约ABC三要素构成. Address  作为终结点的三要素之一地址(Address),在基于WCF通信中不仅仅用于定位服务,还提供额外的寻址信息,同时还包含着用于进行服务认证的服务身份信息. 其地址的URL规则如下: [传输协议(Scheme)]://[主机名称|域名|IP地址]:[可选端口]/请求资源 如:http://test.com:81/t

[SQLServer]学习总结笔记(基本涵盖Sql的所有操作)

--################################################################################### /* 缩写: DDL(Database Definition Language): 数据库定义语言 DML(Database Manipulation Language): 数据库操作语言 DCL(Database Control Language): 数据库控制语言 DTM(Database Trasaction Manag

学习hibernate笔记

以前学习java的时候,一开始就学习了hibernate,那时候总觉得ssh非常高大上,所以就急忙看了下相关视频.不过因为实际需要不高,所以后来一直没有使用上hibernate组件.现在一年过去了,也疯狂学习了java一段时间了,做过几个不大的项目,但是总算对java有些了解.现在参加了工作,公司使用的就是ssh,所以这两天又重新开始捣鼓hibernate.这次学习直接使用editplus,直接开发.看了官网的demo,发现英语也没有想象中那么困难.哈哈,把自己的学习记录下来吧.这里主要记录三个

学习WCF(1)

1. 什么是WCF WCF是创建面向服务应用程序的一个框架,用WCF, 你可以发送异步消息. 一个服务的终结点可以是服务宿主在IIS上面,也可以是一个服务宿主在应用程序上面.一个终结点也可以是客户端的一个服务,它向服务器的终结点请求数据.消息可以是一个简单的字符或者字符串,如XML,也可以是复杂的二进制流.它可以用在下面的几个场景当中. 一个安全处理业务逻辑的服务. 一个提供数据的服务,如报表或者其它需要显示信息的服务. 一个可以两个人进行实时聊天的服务. 一个显示一个或多个服务当关状态的服务.

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整) 本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习.原文地址,http://dockone.io/article/101. 文中一些链接可能会跳转国外的网站,如果没有插件或开VPN的朋友,可以尝试修改一下Hosts文件,如何修改Hosts文件.或者使用XXNet插件,如何使用XXnet 介绍 Docker是一个新的容器化的技术,它轻巧,且易移植,号称"build once, configure

DSP28377S - ADC学习编程笔记

DSP28377S -  ADC学习编程笔记 彭会锋 2016-08-04  20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采样方式是不一样的:F28335ADC 采样序列可以配置为顺序采样和同步采样模式,而F28377S采样序列可以配置为round-robin or burst模式,这两种模式下面再讲解. 2 ADC上电配置步骤 首先明确一点,ADC是专用管脚,不需要配置GPIO,所以可以直接配置ADC的寄存器 //Wr

Python学习入门笔记(一):Python文件类型

1.源代码 扩展名:.py,由Python程序解释,不需要编译. --创建hello.py源文件 # cat hello.py  print 'Hello World!' --执行hello.py [[email protected] study]# chmod a+x hello.py  [[email protected] study]# python hello.py  Hello World! [[email protected] study]# ./hello.py  ./hello.

Python学习入门笔记(二):Python运算符

1.算术运算符 "+"加法:3+2=5 "-"减法:3-2=1 "*"乘法:3*2=6 "/"实数除法:3/2=1,3.0/2=1.5 "//"整数除法:5.6//2=2.0 "%"求余数:17%6=5 "**"求幂运算:2**3=8 2.赋值运算符 "="等于:x=3 "+="加等于:x+=2 "-="减等