什么是WCF(Windows Communication Foundation(WCF))

大家可以百度一下了解什么是WCF。当然有些人看到密密麻麻的黑框白字就懒的读。即使读了 可能也没明白确切的含义。

1.    一组数据通信的应用程序接口相当于Windows通讯接口。它是从.net框架的一部分,由 .NET Framework 3.0 开始引入。

2.    通信是什么呢?

简单的举例来说。除特殊情况以外不受时间、地点、空间、距离的限制传递各自的信息。大家生活中最普遍的就是手机啦。那么对于我们程序而言WCF就是传达各自信息的媒介。通过它。我们随时随地的查看自己想要的信息。或者聊天等等(前提网络的支持。)

WCF(Windows Communication Foundation(WCF))怎样工作的

为了让大家更明白我直接上图在讲解。

打开vs2010 ----文件—新建---项目----- SilverlightApplication(应用程序)

下面出现的默认确定就可以了。

右键- SilverlightApp.web—添加---新建项目---WCF服务—添加


重新生成解决方案(最好养成这种习惯)。基本建设完成。

建设好的项目如下图


下一步添加服务引用

SilverlightApp.web—引用中—右键—添加服务引用—直接点发现。会自动搜索的

然后我单机了服务中Service1.svc-展开。是不是有方法啦。--单机确定(重新生成解决方案)

SilverlightApp.web项目中添加了一个服务引用

我们先来看下Web.config有什么变化。

它自动给你添加了服务 你的地址 还有默认时间(closetimeout opentimeout)等根据你们想要的时间进行更改即可 前面的过程中我忘记截添加服务引用之前的图了。大家做的时候可以对照一下有什么具体的改变。

打开service1.cs类

WCF 的基本概念是以合约(Contract) 来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现

现在我用登陆用户名和密码的例子

服务合约 (Service Contract),订定服务的定义[ServiceContract(Namespace ="http://lyztd.com.samples")]

操作合约 (Operation Contract)

数据合约 (Data Contract),订定双方沟通时的数据格式。

下一步双击Service1.svc

删除原来的dowork方法 实现接口中的方法

好了 下一步我们生成一下代理类

首先更新一下服务引用—debug(Service1.svc设置成起始页)

打开

写上wcftestclient会出现一个wcf测试客户端 右键-添加服务

双击你的方法测试

返回的是TRUE 说明登陆用户名密码登陆测试成功

Ps:有时代码出错的刷新一下服务地址重新调试即可

把这个建立完的项目挂到iis,保证用ip地址可以访问就行了(不要忘了关闭防火墙)

生成客户端代理类 (为了每个程序移植的方便利用我们生成代理类进行调用)

打开你的命令提示符(cmd)两者都可以



之后在桌面上会出来两个文件,把这两文件放到根目录 不要忘记引用命名空间,

public override void ViewDidLoad ()
  {

var binding=new BasicHttpBinding()
  {
Name="basicHttoBinding",
MaxReceivedMessageSize=67108864,
};
binding.ReaderQuotas=new System.Xml.XmlDictionaryReaderQuotas()
{
MaxArrayLength=2147483646,
MaxStringContentLength=5242880,
};
binding.Security.Mode=BasicHttpSecurityMode.None;
var timeout=new  TimeSpan(0,1,0);
binding.SendTimeout=timeout;
binding.OpenTimeout=timeout;
binding.ReceiveTimeout=timeout;
AsyncTaskClient client =new AsyncTaskClient(binding,new EndpointAddress("
http://192.168.0.1:1823/Service1.svc"));

client.GetUserCompleted += HandleGetUserCompleted;

client.GetUserAsync(txtUserName.Text.Trim(),txtPassWord.Text.Trim());

}

void HandleGetUserCompleted (object sender, GetUserCompletedEventArgs e)

{

If(e.Error==null)

{

If(e.Result==true)

{

登陆成功!(根据自己想要的窗口弹出或不弹出)

}else

{

登录失败!

}

}

}

好了wcf异步调用完成。。(各别自己加密)

PS:如果代理类生成失败。C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Tools这个目录下增加一个

SlSvcUtil.exe.config文件

内容为:

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

<assembly name="SlSvcUtil, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</satelliteassemblies>

<!--<configuration>

<satelliteassemblies>

<assembly name="SlSvcUtil, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</satelliteassemblies>

-->
</configuration>

什么是WCF(转)的更多相关文章

  1. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  2. 【WCF】使用“用户名/密码”验证的合理方法

    我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...

  3. 【WCF】错误协定声明

    在上一篇烂文中,老周给大伙伴们介绍了 IErrorHandler 接口的使用,今天,老周补充一个错误处理的知识点——错误协定. 错误协定与IErrorHandler接口不同,大伙伴们应该记得,上回我们 ...

  4. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  5. [WCF]缺少一行代码引发的血案

    这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性.具体来说,这是一个关于如何自动为服务接口(契约 ...

  6. 【原创经验分享】WCF之消息队列

    最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...

  7. Ajax使用WCF实现小票pos机打印源码

    通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq  22945 ...

  8. C# 用SoapUI调试WCF服务接口(WCF中包含用户名密码的验证)

    问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapU ...

  9. WCF基础

    初入职场,开始接触C#,开始接触WCF,那么从头开始学习吧,边学边补充. SOA Service-Oriented Architecture,面向服务架构,粗粒度.开放式.松耦合的服务结构,将应用程序 ...

  10. Mono下的WCF的Bug?

    最近一段时间,一直在折腾Mono,折腾Linux.让我无比痛苦的是Mono下的WCF的坑真的是太多了,这不又遇到了一个莫名其妙的问题. 环境:mono 3.2.1,Jexus 5.4.3,OS Cen ...

随机推荐

  1. bean 的各个属性

    http://www.springframework.org/schema/beans/spring-beans.xsd org.springframework.beans.factory.confi ...

  2. 45 Useful JavaScript Tips, Tricks and Best Practices

    <45 Useful JavaScript Tips, Tricks and Best Practices> http://flippinawesome.org/2013/12/23/45 ...

  3. MSP430 G2553 基本时钟模块+ (Basic Clock Module+)

    一.时钟源 MSP430的Basic Clock Module+支持的时钟源有: DCOCLK:内部数字控制振荡器,Internal digitally contrlled oscillator.所有 ...

  4. [Erlang21]Erlang性能分析工具eprof fporf的应用

    前段时间项目改代码突然cpu波动很大,排查了好久都没有找到原因,只能求助于性能测试工具 :   <<Erlang程序设计>>----Joe Armstorng[哈哈,登月第一人 ...

  5. 获取outlook联系人寻呼字段

    这称不上一篇技术文. 这边记录解决一个问题的过程和感受.这种感觉每个搞IT的人或多或少都感受过,是程序人独有的快乐之一.只是大部分人没有将这种感觉记录下来.但是当你记录时,这种感觉也早已消失. 需求: ...

  6. css细节复习笔记——浮动

    CSS除了能够改变字体.背景和所有其他属性,还能够完成基本布局任务. div+css通过浮动和定位.盒子模型等技术应用,是最常用的布局方式. 定位的基本思想很简单,它允许定义元素框相对于其正常位置应该 ...

  7. php—Smarty-2

    一.注释 *注释内容* Html注释显示客户端源文件中 Smarty注释不会发给客户端 Smarty的注释主要给模板设计者来看的 二.模板中的变量 l  由php文件分配 1)  普通变量 2)  数 ...

  8. OC中NSClassFromString()与NSStringFromClass()的用法及应用场景

    1.NSClassFromString()利用一个字符串创建一个类,我是在标签控制器中 UITabBarController中创建它的子控制器中使用的 - (void)viewDidLoad { [s ...

  9. LEFT JOIN条件写在where里是不会多查出数据来的

    因为WHERE条件是对前面整个数据集进行查询,但如果条件放在ON里是会把在前表不在后表的数据查出来的

  10. 2018 ACM-ICPC 亚洲区域赛青岛现场赛 —— Problem F. Tournament

    题面:http://acm.zju.edu.cn/contest-materials/qd2018/qd2018_problems.pdf 题意: n个骑士决斗K轮 要求是每个骑士只能跟另外一个骑士决 ...