最近买了一本书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学习笔记的更多相关文章

  1. WCF学习笔记之事务编程

    WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...

  2. WCF学习笔记之传输安全

    WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...

  3. WCF 学习笔记之异常处理

    WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...

  4. WCF 学习笔记之双工实现

    WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...

  5. WCF学习笔记(2)——使用IIS承载WCF服务

    通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...

  6. WCF学习笔记1--发布使用配置文件的服务

    关于WCF的入门网上资料很多,可以参考蒋金楠老师的博客http://www.cnblogs.com/artech/archive/2007/02/26/656901.html,我是从这篇博客开始学习的 ...

  7. WCF学习笔记(1)——Hello WCF

    1.什么是WCF Windows Communication Foundation(WCF)是一个面向服务(SOA)的通讯框架,作为.NET Framework 3.0的重要组成部分于2006年正式发 ...

  8. WCF学习笔记(基于REST规则方式)

    一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉Web ...

  9. [WCF学习笔记] 我的WCF之旅(1):创建一个简单的WCF程序

    近日学习WCF,找了很多资料,终于找到了Artech这个不错的系列.希望能从中有所收获. 本文用于记录在学习和实践WCF过程中遇到的各种基础问题以及解决方法,以供日后回顾翻阅.可能这些问题都很基础,可 ...

随机推荐

  1. [ACM] POJ 1094 Sorting It All Out (拓扑排序)

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26801   Accepted: 92 ...

  2. Dll注入技术之消息钩子

    转自:黑客反病毒 DLL注入技术之消息钩子注入 消息钩子注入原理是利用Windows 系统中SetWindowsHookEx()这个API,他可以拦截目标进程的消息到指定的DLL中导出的函数,利用这个 ...

  3. Spring处理跨域请求

    [nio-8080-exec-8] o.s.web.cors.DefaultCorsProcessor        : Skip CORS processing: request is from s ...

  4. 根坤 eclipse配置android开发环境并搭建第一个helloWord工程

    一.搭建Android在eclipse下环境    一.JDK(不用安装  下载地址: http://www.xp510.com/xiazai/Application/program/23625.ht ...

  5. 一个2013届毕业生(踏上IT行业)的迷茫(1)

    从毕业到现在已经快半年了,已经想写这篇文字很久了,但是一次又一次的被没有时间给搁置了,今天突然好想写一篇自己这么多年的总结,算是一种反思,也可以看作为未来的人生指路吧. 我和很多搞IT的同行们一样,不 ...

  6. C#中HttpWebRequest与HttpWebResponse的使用方法

    关键字:C# HttpWebRequest HttpWebResponse HTTP GET POST 请求 这个类是专门为HTTP的GET和POST请求写的,解决了编码,证书,自动带Cookie等问 ...

  7. NYOJ781 又见回文数

    又见回文数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 冷淡的回文数被水了,各种被水,然后他非常生气,然后... 一个数从左边读和从右边读一样,就说这个数是回文数 ...

  8. XMLHttpRequest 请求java部署的webservice 跨域问题

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <html> <hea ...

  9. [nginx]invalid number of arguments

    invalid number of arguments nginx出现以下的错误,基本上错误的原因就是少了后面的分号导致. invalid number of arguments

  10. WPF Binding Path妙用

    <Window x:Class="XamlTest.Window9"        xmlns="http://schemas.microsoft.com/winf ...