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. HTTP协议和SOCKS5协议

    HTTP协议和SOCKS5协议 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们平时上网的时候基本上是离不开浏览器的,尤其是搜索资料的时候,那么这个浏览器是如何工作的呢?用的又是 ...

  2. jQuery实现滚动监听

    1.设计思路 1)获取窗口滚动高度: 2)获取附加导航栏: 3)获取导航栏下的所有li: 4)通过相同class获取所有监听元素:(此例中为jumbotron巨幕) 5)遍历所有监听元素,若当前元素距 ...

  3. WPS, 破解WPA/WPA2密钥的捷径

    1.关于WPS(WIFI保护设置) WPS(WIFI保护设置)主要致力于简化无线网络的安全加密设置. 传统方式下,用户新建一个无线网络时,必须在接入点手动设置网络名(SSID)和安全密钥,然后在客户端 ...

  4. android app与服务器交互

    package mydemo.mycom.demo2.service; import org.apache.http.HttpResponse; import org.apache.http.Name ...

  5. QPushButton按钮

    需要 from PyQt5.QtWidgets import QPushButton继承 QAbstractButton 创建按钮控件:QPushButton() 创建一个无父控件的按钮控件QPush ...

  6. CF1009F Dominant Indices

    传送门 还是放个链接让泥萌去学一下把 orzYYB 题目中要求的\(f_{x,j}\),转移是\(f_{x,j}=\sum_{y=son_x} f_{y,j-1}\),所以这个东西可以用长链剖分优化, ...

  7. mysql 案例~关于pt-osc工具的用途

    简介:今天咱们聊聊PT-OSC的东东一 简单介绍  1 标准组合   pt-online-schema-change --user= --password= --host= D=,t= --sock= ...

  8. ubuntu16.10安装docker17.03.0-ce并配置国内源和加速器

    说明:这个针对docker-ce安装,ce和ee的区别是前者是社区版,后者是企业版 1.  配置Ubuntu的源,不然慢的去哭吧.参考http://cn.archive.ubuntu.com/help ...

  9. MySQL版本升级参考资料【转】

    MySQL升级参考资料 MySQL 升级的最佳实践 - 技术翻译 - 开源中国社区https://www.oschina.net/translate/mysql-upgrade-best-practi ...

  10. 关于MySQL 8.0的几个重点【转】

    转自 关于MySQL .0的几个重点,都在这里 https://mp.weixin.qq.com/s/QUpk9uuS2JTli1GT6HuORA 一.关于MySQL Server的改进 1.1 re ...