WCF Windows Communication Foundation

1.1 新建一个"空白解决方案"

1.2 在解决方案中添加类库IBLL

  1.2.1 添加接口IUserInfoService  

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks; namespace IBLL
{
[ServiceContract]
public interface IUserInfo
{
[OperationContract]
int Add(int a ,int b);
}
}

IUserInfo

  1.2.2 添加引用 System.ServiceModel

1.3 添加类库BLL

  1.3.1 添加引用IBLL

  1.3.2 添加类UserInfoService实现接口IBLL

using IBLL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace BLL
{
public class UserInfoService:IUserInfoService
{
public int Add(int a, int b)
{
return a + b;
}
}
}

UserInfoService

1.4 将WCF布置到控制台程序

  1.4.1 添加控制台程序Host

  1.4.2 添加引用BLL和IBLL

  1.4.3 修改App.config文件  

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <system.serviceModel>

    <services>

      <service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration">

        <host>

          <baseAddresses>

            <add baseAddress="http://localhost:8000/"/>

          </baseAddresses>

        </host>

        <endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserInfoService"></endpoint>

      </service>

    </services>

    <behaviors>

      <serviceBehaviors>

        <behavior name="behaviorConfiguration">

          <serviceMetadata httpGetEnabled="true"/>

        </behavior>

      </serviceBehaviors>

    </behaviors>

  </system.serviceModel>

</configuration>

App.config

  1.4.4 添加引用System.ServiceModel  

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks; namespace Host
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(BLL.UserInfoService)))
{
host.Open();
Console.WriteLine("服务启动成功!");
Console.ReadKey();
}
}
}
}

Main

  1.4.5 进入debug目录,以管理员身份启动

1.4.6 启动客户端测试服务程序

  VS安装目录下F:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\WcfTestClient.exe

2 客户端程序

  2.1 控制台程序-新建控制台程序

F:\Users\home\Documents\Visual Studio 2013\WCFDemo\Solution1\Client

svcutil http://localhost:8000/?wsdl /o:UserInfoServiceClient.cs

2.2 将生成的文件包括到项目中

2.3 勇output.config文件替换掉App.config文件(删App,将output重命名)

2.4 添加引用BLL,IBLL和ServiceModel

2.5 client 中main方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Client
{
class Program
{
static void Main(string[] args)
{
UserInfoServiceClient client = new UserInfoServiceClient();
int sum = client.Add(,);
Console.WriteLine(sum);
Console.ReadKey();
}
}
}

Main

2.6 改造自动生成的

//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------ //[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
//[System.ServiceModel.ServiceContractAttribute(ConfigurationName="IUserInfoService")]
//public interface IUserInfoService
//{ // [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IUserInfoService/Add", ReplyAction="http://tempuri.org/IUserInfoService/AddResponse")]
// int Add(int a, int b); // [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IUserInfoService/Add", ReplyAction="http://tempuri.org/IUserInfoService/AddResponse")]
// System.Threading.Tasks.Task<int> AddAsync(int a, int b);
//} using IBLL;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public interface IUserInfoServiceChannel : IUserInfoService, System.ServiceModel.IClientChannel
{
} [System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
public partial class UserInfoServiceClient : System.ServiceModel.ClientBase<IUserInfoService>, IUserInfoService
{ public UserInfoServiceClient()
{
} public UserInfoServiceClient(string endpointConfigurationName) :
base(endpointConfigurationName)
{
} public UserInfoServiceClient(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
} public UserInfoServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
} public UserInfoServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
base(binding, remoteAddress)
{
} public int Add(int a, int b)
{
return base.Channel.Add(a, b);
} //public System.Threading.Tasks.Task<int> AddAsync(int a, int b)
//{
// return base.Channel.AddAsync(a, b);
//}
}

UserInfoServiceClient

2.7 分别启动两个exe文件

3 我们也可以自己建立一个客户端

  3.1 创键控制台应用程序

  3.2 添加服务引用

  3.3 运行结果

WCF简介-01的更多相关文章

  1. WCF学习——WCF简介(三)

    一.WCF简介 1.什么是WCF? WCF的全称是:Windows Communication Foundation.从本质上来说,它是一套软件开发包,是微软公司推出的符合SOA思想的技术框架. 2. ...

  2. 第1章WCF简介(WCF全面解析读书笔记2)

    第1章 WCF简介 面向服务架构(SOA)是近年来备受业界关注的一个主题,它代表了软件架构的一种方向.顺应SOA发展潮流,微软于2006年年底推出了一种新的分布式通信框架Windows Communi ...

  3. WCF全面解析第一章 WCF 简介

    1.WCF中的 "A","B","C" 介绍 我们先看个生活中的例子,某一天,公司的领导让你去送一份合同文件,送文件的过程你可以选择的交通方 ...

  4. WCF简介

    WCF(Windows communication Foundation),顾名思义,就是在windows平台下解决通信的基础框架.WCF做为.NET Framework 3.0的一个组件发布出来的, ...

  5. WCF学习笔记(一):WCF简介

    转:http://www.cnblogs.com/wengyuli/archive/2009/11/04/1595693.html MSDN上关于WCF给出如下注解: 设计 Windows Commu ...

  6. wcf例子01

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  7. mysql高可用架构 -> MHA简介-01

    作者简介 松信嘉範:MySQL/Linux专家2001年索尼公司入职2001年开始使用oracle2004年开始使用MySQL2006年9月-2010年8月MySQL从事顾问2010年-2012年 D ...

  8. Redis系列---redis简介01

    一. 本章我们将用简短的几句话来帮助你快速的了解什么是redis,初学者不必深究 1 Redis简介 Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写 ...

  9. 小步前进之WCF简介

    WCF 前言 什么是WCF? 契约 合约 前言 在 .NET Framework2.0 以及前版本中,微软发展了 Web Service..NET Remoting 等通信支持. 如果要进行通信,对于 ...

随机推荐

  1. H3C常用命令详解

    H3C常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1.关闭后台日志输出 <yinzhengjie>sys [yinzhengjie]undo info- ...

  2. 把svn上的mycelipse导到本地的eclipse中【原】

    myeclipse和eclipse的web项目互导时会产生各种问题,现在把我遇到的情况记录如下: eclipse如何把svn上down下来的myeclipseWeb项目变成eclipse的Web项目: ...

  3. Java Calendar详解

    网上看到的一篇,码一下.侵删 一:字段和方法的信息 YEAR 字段: public static final int YEAR ; 指示年的 get 和 set 的字段数字.这是一个特定于日历的值: ...

  4. Java入门系列(十二)Java反射

    Why--指的是为什么做这件事,也既事物的本质. 反射之中包含了一个“反”的概念,所以要想解释反射就必须先从“正”开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化 ...

  5. Python实现Plugin

    1. Plugin与Python 插件的历史最早可追溯至1970年代,它是一种程序组件,通过和应用程序的互动,为应用程序增加一些所需要的特定的功能[维基].插件允许第三方开发者对已有的程序功能进行扩展 ...

  6. Java开发中各种集合框架简介

    在大数据MapReduce作业开发中,我们经常会遇到一些大小表的join,这是如果这个小表足够“小”的话,我们可以使用进行“map-join-side”,这要就可以有效的降低reduce端的压力,但是 ...

  7. android HttpClient将数据提交到服务器

    1.HttpClient 使用方式 public static String loginByClientGet(String username,String password) { try { //打 ...

  8. 进度条QProgressBar

    import sys from PyQt5.QtCore import Qt, QTimer from PyQt5.QtWidgets import QApplication, QWidget, QP ...

  9. NOIP2016 D2-T3 愤怒的小鸟

    看了题解之后知道,是状压dp. 一.首先预处理一个$2^n$次方的fpow[]数组 fpow[]=; ;i<=;i++)fpow[i]=(fpow[i-]<<); 二.然后预处理一个 ...

  10. cdn.dns,cms

    CDN CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各 ...