每天进步一点--WCF学习笔记
最近买了一本书WCF服务编程,重头再开始了解学习WCF,现将学习记录,以便后来复习,也希望和大家一起进步。
WCF用终结点表示一种组成关系,终结点就是地址、契约与绑定的混合品,即 地址(Address)、契约(Contract)、绑定(Binding)。
以一个小例子来,调通我们的第一个WCF程序。我学习就爱用Demo来学习,再深入一步一步学习。
我用的vs2012,新建WCF服务应用程序
运行后显示
这是WCF的服务端,我们先不做处理,下面我们添加WCF客户端,我们添加一个普通的控制台程序
添加服务引用:
客户端要调用服务的操作,客户端首先要导入服务契约到客户端的本地描述中。如果客户端使用了WCF,调用操作常见的做法就是使用代理。代理就是一个CLR类,它公开了一个单独的CLR接口用于表示服务契约。
我们创建我们的代理
namespace ConsoleApplication1
{
class MyContractClient : ClientBase<ServiceReference1.IService1>, ServiceReference1.IService1
{
public MyContractClient()
{
}
public MyContractClient(string endpointName)
: base(endpointName)
{
} public string GetData(int value)
{
return Channel.GetData(value);
} public ServiceReference1.CompositeType GetDataUsingDataContract(ServiceReference1.CompositeType composite)
{
throw new NotImplementedException();
} public Task<string> GetDataAsync(int value)
{
throw new NotImplementedException();
} public Task<ServiceReference1.CompositeType> GetDataUsingDataContractAsync(ServiceReference1.CompositeType composite)
{
throw new NotImplementedException();
}
}
}
该类继承与ClientBase,需添加对using System.ServiceModel的引用。
客户端和服务端的契约和绑定要保持一致,不然会报错,我们更改服务端配置文件,修改绑定

修改客户端配置文件

服务端和客户端都使用basicHttpBinding绑定,最后我们在Program启动类中添加调用代码:
class Program
{
static void Main(string[] args)
{
using (MyContractClient client = new MyContractClient())
{
string result = client.GetData(3);
Console.WriteLine(result); }
}
}
运行后就调用了服务端方法,并返回值,服务端的GetData方法为
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。
// 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
} public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}
所以客户端调用结果为

以上就是我创建的WCF小例子,希望对新手有所帮助
每天进步一点--WCF学习笔记的更多相关文章
- WCF学习笔记之事务编程
WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...
- WCF学习笔记之传输安全
WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...
- WCF 学习笔记之异常处理
WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...
- WCF 学习笔记之双工实现
WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...
- WCF学习笔记(2)——使用IIS承载WCF服务
通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...
- WCF学习笔记1--发布使用配置文件的服务
关于WCF的入门网上资料很多,可以参考蒋金楠老师的博客http://www.cnblogs.com/artech/archive/2007/02/26/656901.html,我是从这篇博客开始学习的 ...
- WCF学习笔记(1)——Hello WCF
1.什么是WCF Windows Communication Foundation(WCF)是一个面向服务(SOA)的通讯框架,作为.NET Framework 3.0的重要组成部分于2006年正式发 ...
- WCF学习笔记(基于REST规则方式)
一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉Web ...
- [WCF学习笔记] 我的WCF之旅(1):创建一个简单的WCF程序
近日学习WCF,找了很多资料,终于找到了Artech这个不错的系列.希望能从中有所收获. 本文用于记录在学习和实践WCF过程中遇到的各种基础问题以及解决方法,以供日后回顾翻阅.可能这些问题都很基础,可 ...
随机推荐
- KindEditor4.1.10,支持粘贴图片
转载自https://blog.csdn.net/jimmy0021/article/details/73251406 我已经忘记我是不是从这个博主的那里找到的解决kindeditor粘贴图片的方法了 ...
- TensorFlow 实战(四)—— tensor 的认识
tensorflow,即是 tensor flows,在 computation graph 中 flows(流动)的不是别人,正是 tensor: 1. tensor 基本属性 tensor 的名字 ...
- Method and system for implementing mandatory file access control in native discretionary access control environments
A method is provided for implementing a mandatory access control model in operating systems which na ...
- C# opcode 查询源码
Add|将两个值相加并将结果推送到计算堆栈上.Add.Ovf|将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上.Add.Ovf.Un|将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算 ...
- 关于easyui-accordion的添加以及显示隐藏菜单的使用
<script type="text/javascript"> $(function() { leftMenus(); }); function leftMenus() ...
- mysql和mysqli使用笔记
总体来说还算兼容得还行,很多函数直接加个i 即可,比如mysql_connect -> mysqli_connect. 有些细小的区别,mysqli 更严格,当变量有与字段重名时,改变变量名才可 ...
- c语言学习笔记(10)——结构体
------------------------------------------------------------------ # include <stdio.h> struct ...
- 深度学习实战 Tricks
1. 梯度消失与梯度爆炸 gradient clipping 梯度爆炸:min(grad_max,grad) grad_max:梯度上限 梯度消失:max(grad_min, grad) grad_m ...
- NYOJ781 又见回文数
又见回文数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 冷淡的回文数被水了,各种被水,然后他非常生气,然后... 一个数从左边读和从右边读一样,就说这个数是回文数 ...
- modern-cpp-features
C++17/14/11 Overview Many of these descriptions and examples come from various resources (see Acknow ...