个人项目中的WCF使用
今天闲着无事,给大家分享一下我的一个项目中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使用的更多相关文章
- 项目中使用WCF替换asmx Web service总结
以前项目解决方案中,用http协议的asmx Web service作服务器数据访问入口,在SoapHeader中写入用户名和加盐密码进行身份认证. http asmx服务是明文传输,传输过程中数据很 ...
- 赵本山 教你如何在实战项目中使用WCF
我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了. 但是我们想过没,在Development环境中可以这样做,但是QA.UAT.Productio ...
- 教你如何在实战项目中使用WCF
我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了. 但是我们想过没,在Development环境中可以这样做,但是QA.UAT.Productio ...
- Visual Studio2012中搭建WCF项目
分布式系统:指在系统与系统之间进行通信,系统不再是孤立的,例如:淘宝查看物流信息,或是hao123的天气预报,这些可能都是用的别的系统的web方法. 1.创建空的解决方案 2.新建项目-WCF服务库项 ...
- WCF项目中出现“目标程序集不包含服务类型”的解决办法
如果创建新项目时(以下简称A项目)选择的是WCF相关的项目模板,并且在A项目中只定义接口而不实现接口,那么任何引用了A项目的项目,在调试时都会弹出警告框“目标程序集不包含服务类型.可能需要调整此程序集 ...
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
- 创建寄宿在Windows服务中的WCF服务
1.创建Windows服务项目 2.Server1改名为你想要的名称,比如WinServer 3.在项目中新建一个WCF文件夹,用于存放wcf服务文件. 注:在WcfServer类的上面还要添加 [S ...
- SharePoint 2013 中自定义WCF服务
在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...
- 采用EntLib5.0(Unity+Interception+Caching)实现项目中可用的Caching机制
看了园子里很多介绍Caching的文章,多数都只介绍基本机制,对于Cache更新和依赖部分,更是只简单的实现ICacheItemRefreshAction接口,这在实际项目中是远远不够的.实际项目中, ...
随机推荐
- [Q]注册申请码获取工具问题
问题一: 异常信息: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** System.Reflectio ...
- [SOJ] 无路可逃?
Description 唐僧被妖怪关在迷宫中.孙悟空好不容易找到一张迷宫地图,并通过一个魔法门来到来到迷宫某个位置.假设迷宫是一个n*m的矩阵,它有两种地形,1表示平地,0表示沼泽,孙悟空只能停留在平 ...
- css 小知识
<!-- IE下消除点击图片文字后出现的虚线框代码 --> <style type="text/css">a {blr:expression(this.on ...
- Wise Registry Cleaner Pro(智能注册表清理) V9.31 绿色版
软件名称: Wise Registry Cleaner Pro(智能注册表清理)软件语言: 简体中文授权方式: 免费试用运行环境: Win7 / Vista / Win2003 / WinXP 软件大 ...
- cetos6 安装samba共享文件夹
yum方式安装 yum install samba 修改配置文件 vim /etc/samba/smb.conf [global] comment = global workgroup = QFpay ...
- UIPickerView 创建中国地区显示 省份 市
第一步初始化 UIPickerView *pickerview; //城市滚动表 NSDictionary *dict; //用于存储省份-城市的数据 NSArray *provinceArray; ...
- HDOJ-1052 田忌赛马(贪心)
田忌赛马 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述: Here is a famous story in Chinese history. "That was ...
- servlet的url-pattern匹配规则
首先需要明确几容易混淆的规则: servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则.所以不要用通配符或者正则表达式的匹配规则来看待servlet的url-pattern. ...
- 【原创】Spring MVC项目搭建(使用Java配置)
一.使用Intellij idea,新建maven项目,选择maven-archetype-webapp. 二.在src/main下新建文件夹,命名为java,并标注为source folder. 三 ...
- 《JavaScript高级程序设计》读书笔记 ---小结
对象在JavaScript 中被称为引用类型的值,而且有一些内置的引用类型可以用来创建特定的对象,现简要总结如下: 引用类型与传统面向对象程序设计中的类相似,但实现不同: Object 是一个基础 ...