今天闲着无事,给大家分享一下我的一个项目中WCF的使用。我这项目使用的是Silverlight,至于其他类型的使用方法也是一样的。

1.建立一个Silverlight带Web项目的解决方案。

2.在web项目中创建Wcf服务文件.如文件创建在web项目下Services文件夹中,名为HomeService.svc。

3.在客服端引用wcf服务。

4.在应用程序中获取Wcf服务。

 string WCFServiceUri = "Services/HomeService.svc"; //WCF服务 相对路径

 HomeService.HomeServiceClient hs = (HomeService.HomeServiceClient)CreateWebServiceObject(typeof(HomeService.HomeServiceClient), WCFServiceUri);
hs.UserLoginCompleted += new EventHandler<HomeService.UserLoginCompletedEventArgs>(hs_UserLoginCompleted);
hs.UserLoginAsync(this.txtLoginID.Text, this.pwbLoginPaw.Password); private void hs_UserLoginCompleted(object sender, HomeService.UserLoginCompletedEventArgs e)
{
//code
} /// <summary>
/// 指定最大接收信息的大小
/// </summary>
public static long dMaxReceivedMessageSize = ; /// <summary>
/// 指定最大缓冲区的大小
/// </summary>
public static int dMaxBufferSize = ; /// <summary>
/// <para>1.type 你需要创建服务的类型。例如:typeof(WcfClass) </para>
/// <para>2.webServiceName 服务路径/ServiceHost</para>
/// </summary>
public static object CreateWebServiceObject(Type type, string webServiceName)
{
BasicHttpBinding basicBinding = new BasicHttpBinding();
basicBinding.MaxReceivedMessageSize = dMaxReceivedMessageSize;
basicBinding.MaxBufferSize = dMaxBufferSize;
basicBinding.SendTimeout = TimeSpan.FromMinutes();
CustomBinding binding = new CustomBinding(basicBinding); EndpointAddress endPoint = new EndpointAddress(GetServicesUri(webServiceName,)); return Activator.CreateInstance(type, binding, endPoint);
} /// <summary>
/// 获取路径
/// </summary>
/// <param name="sUri"></param>
/// <param name="type">1.路径到ClientBin下.2.根目录.3.当前页面路径</param>
/// <returns></returns>
public static string GetServicesUri(string sUri, int type)
{
var applicationUri = Application.Current.Host.Source;
string uri = string.Empty;
switch (type)
{
case :
uri = new Uri(Application.Current.Host.Source, string.Format("{0}", sUri)).AbsoluteUri; //ClientBin
break;
case :
uri = new Uri(Application.Current.Host.Source, string.Format("../{0}", sUri)).AbsoluteUri; //localhost
break;
case :
uri = new Uri(System.Windows.Browser.HtmlPage.Document.DocumentUri, sUri).ToString();
break;
default:
uri = sUri;
break;
} return uri;
}

这样便可以访问到web端的Wcf服务。

注意:在实例化BasicHttpBinding对象时,BasicHttpBinding的MaxBufferSize和MaxReceivedMessageSize最好设置成一样大小,本人测试了MaxReceivedMessageSize小于MaxBufferSize的情况,貌似是不可以的。

在一些实际的项目中,如果项目安全要求比较高的话,本人建议将服务端处理文件封装在DAL中,通过服务地址跳转的方式访问。

 

个人项目中的WCF使用的更多相关文章

  1. 项目中使用WCF替换asmx Web service总结

    以前项目解决方案中,用http协议的asmx Web service作服务器数据访问入口,在SoapHeader中写入用户名和加盐密码进行身份认证. http asmx服务是明文传输,传输过程中数据很 ...

  2. 赵本山 教你如何在实战项目中使用WCF

    我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了. 但是我们想过没,在Development环境中可以这样做,但是QA.UAT.Productio ...

  3. 教你如何在实战项目中使用WCF

    我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了. 但是我们想过没,在Development环境中可以这样做,但是QA.UAT.Productio ...

  4. Visual Studio2012中搭建WCF项目

    分布式系统:指在系统与系统之间进行通信,系统不再是孤立的,例如:淘宝查看物流信息,或是hao123的天气预报,这些可能都是用的别的系统的web方法. 1.创建空的解决方案 2.新建项目-WCF服务库项 ...

  5. WCF项目中出现“目标程序集不包含服务类型”的解决办法

    如果创建新项目时(以下简称A项目)选择的是WCF相关的项目模板,并且在A项目中只定义接口而不实现接口,那么任何引用了A项目的项目,在调试时都会弹出警告框“目标程序集不包含服务类型.可能需要调整此程序集 ...

  6. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

  7. 创建寄宿在Windows服务中的WCF服务

    1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [S ...

  8. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  9. 采用EntLib5.0(Unity+Interception+Caching)实现项目中可用的Caching机制

    看了园子里很多介绍Caching的文章,多数都只介绍基本机制,对于Cache更新和依赖部分,更是只简单的实现ICacheItemRefreshAction接口,这在实际项目中是远远不够的.实际项目中, ...

随机推荐

  1. MediaPlayer的错误列表速查(android)

    public static final int MEDIA_ERROR_IO Added in API level 17 File or network related operation error ...

  2. Nginx redirect

    if ($host != 'www.xxxxx.com' ) { rewrite ^/(.*)$ http://www.xxxx.com/$1 permanent; }

  3. 为 ngui TweenPosition 添加 pingpongone

    //---------------------------------------------- // NGUI: Next-Gen UI kit // Copyright © 2011-2015 T ...

  4. cpu affinity (亲和性)

    来源:http://www.ibm.com/developerworks/cn/linux/l-affinity.html#download 管理处理器的亲和性(affinity) 为什么(3 个原因 ...

  5. ubuntu jdk环境变量配置

    export JAVA_HOME=/usr/local/java/jdk1.8.0_25  export JRE_HOME=${JAVA_HOME}/jre  export CLASSPATH=.:$ ...

  6. C++中int转为char 以及int 转为string和string 转int和空格分隔字符串

    1.对于int 转为char 直接上代码: 正确做法: void toChar(int b) { char u; ]; _itoa( b, buffer, ); //正确解法一 u = buffer[ ...

  7. gridview XML

    GridView动态添加模板列   http://blog.csdn.net/wljhk2006/article/details/24723219 XML与DataTable互转类 http://bl ...

  8. windows和Ubuntu双系统的安装和基本操作

    因为最近刚开始学习ubuntu系统,首先要安装系统,搜集了网上的资料觉得这篇博客特别有用  http://www.cnblogs.com/Duane/p/5424218.html,我也是按照里面的步骤 ...

  9. Python3与Python2的区别汇总

    1.print 在Python3.0  是一个函数,正确输入应该是:print (3x) 2.raw_input 在Python3.0改成input

  10. Paint Pearls

    Paint Pearls 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5009 dp+双向链表优化 看到题目,很自然地可以定义状态:dp[i]表示涂好 ...