| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1781 人关注过本帖
标题:WCF 企业应用实践 (一)
只看楼主 加入收藏
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
结帖率:80.91%
收藏
 问题点数:0 回复次数:6 
WCF 企业应用实践 (一)
最近公司有个项目 应用到WCF 主要是项目之间数据的传输 项目内的数据传输 就不细说了 相比较Webservice 个人感觉wcf 封装了webservice也加入了很多强大的功能 那开始第一步吧
1 首先在要接受数据的项目中 添加wcf服务 这里拿silverlight来说  通常会在项目中建立一个service文件夹 里面用于存放webervice服务和wcf服务
wcf文件的扩展名为.svc
图片附件: 游客没有浏览图片的权限,请 登录注册

2 然后在建立好的wcf服务内实现您要操作的代码
生成的主要代码如下

程序代码:
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
namespace WebProject.Service
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1
    {
        [OperationContract]
        public void DoWork()
        {
            // 在此处添加操作实现
            return;
        }
        // 在此处添加更多操作并使用 [OperationContract] 标记它们
    }
}
在这里我们可以添加自己的方法 OperationContract代表 契约 除了这种契约还有服务契约(ServiceContract),操作契约(OperationContract),数据契约(DataContract),服务已知类型(ServiceKnownType),数据成员(DataMember)。 大家可以把契约理解为通信接口。如果想验证写的wcf服务是否正确 可以右键在浏览器中查看如下
图片附件: 游客没有浏览图片的权限,请 登录注册

3 实现好之后我们就准备调用了 首先运行宿主程序也就是含有wcf服务的程序 然后在另一个程序引用添加宿主程序中的wcf服务



[ 本帖最后由 wangnannan 于 2011-9-28 09:23 编辑 ]
搜索更多相关主题的帖子: 项目 文件夹 service 扩展名 
2011-09-28 09:21
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-09-28 09:25
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
右键添加引用 选择添加服务引用 找到wcf宿主项目的地址 点击前往就可以看到我们写的我wcf服务及方法了 点击确定 就可以引用宿主项目的wcf服务了 现在我们看看如何调用宿主wcf服务的内容 主要代码如下
       /*启用了silverlight的wcf服务*/
            client = new ServiceReference1.MenuActDtlClient(CommandWcf.SetBinding(), CommandWcf.SetEndpointAddress(http://192.168.18.99/groupmanage/Service/MenuActDtl.svc));//宿主wcf服务地址
            client.getDataAsync();//wcf服务内方法
            client.getDataCompleted += new EventHandler<ServiceReference1.getDataCompletedEventArgs>(clent_getDataCompleted);

这里要注意一下 wcf返回的数据是异步的

[ 本帖最后由 wangnannan 于 2011-9-28 09:35 编辑 ]

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-09-28 09:29
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
还有其它的方法 也很类似 比方说webservice WcfRiaService这里个人比较倾向于WcfRiaService 更加灵活
现贴出代码仅供参考
程序代码:
//WCFRIAService  
ServiceReference3.UserManageDSSoapClient c = new ServiceReference3.UserManageDSSoapClient();
            System.ServiceModel.Channels.Binding b = new System.ServiceModel.BasicHttpBinding();
            System.Uri u = new Uri("http://192.168.18.99/groupmanage/ClientBin/Ecreate-RiaService-Web-Service-UserManageDS.svc/Soap");
            System.ServiceModel.EndpointAddress e = new System.ServiceModel.EndpointAddress(u);
            ServiceReference3.UserManageDSSoapClient d = new ServiceReference3.UserManageDSSoapClient(b, e);
          
            d.GetIC_MenuActDtlAsync();
            d.GetIC_MenuActDtlCompleted += new EventHandler<ServiceReference3.GetIC_MenuActDtlCompletedEventArgs>(c_GetIC_MenuActDtlCompleted);

 

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-09-28 09:32
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
程序代码:
  /*webservice调用*/
            BasicHttpBinding basicBinding = new BasicHttpBinding();
            CustomBinding binding = new CustomBinding(basicBinding);
            BindingElement binaryElement = new BinaryMessageEncodingBindingElement();
            EndpointAddress endPoint = new EndpointAddress("http://192.168.18.99/groupmanage/Service/ServiceMenuActDtl.asmx");
            ServiceReference2.ServiceMenuActDtlSoapClient serviceClient = (ServiceMenuActDtlSoapClient)Activator.CreateInstance(typeof(ServiceMenuActDtlSoapClient), binding, endPoint);
            serviceClient.HelloWorldAsync();
            serviceClient.HelloWorldCompleted += new EventHandler<HelloWorldCompletedEventArgs>(serviceClient_HelloWorldCompleted);


[ 本帖最后由 wangnannan 于 2011-9-28 09:35 编辑 ]

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-09-28 09:32
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
上班时间 有时间在和大家分享吧

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-09-28 09:36
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
w版 辛苦了

梅尚程荀
马谭杨奚







                                                       
2014-02-18 12:58
快速回复:WCF 企业应用实践 (一)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015657 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved