您的位置:首页 > 其它

什么是WCF(转)

2013-08-21 10:49 169 查看
什么是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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: