WCF开发框架配置详解 WCF开发实例高级教程
![]() ![]() WCF服务器配置 - web.config文件 WCF客户端配置 - app.config文件 客户端调用WCF接口 C# Code: /// <summary> /// 职员资料的WCF接口 /// </summary> public class WCF_Employee : WCF_Base<IHR>, IBridge_Employee { /// <summary> /// 获取员工资料 /// </summary> /// <param name="employeeName"></param> /// <returns></returns> public DataTable GetEmplyoeeTable(string employeeName) { return this.Excute(client => { byte[] loginTicket = WebServiceSecurity.EncryptLoginer(Loginer.CurrentUser); byte[] bs = client.GetEmplyoeeTable(loginTicket, employeeName); return ZipTools.DecompressionDataSet(bs).Tables[0]; }); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 客户端WCF_Base基类 C# Code: using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Text; using System.Threading.Tasks; namespace CSFrameworkV5.WebRef { /// <summary> /// WCF客户端代理层-基类 /// </summary> /// <typeparam name="T"></typeparam> public class WCF_Base<T> where T : class { /// <summary> /// 执行WCF方法 /// </summary> /// <param name="action">调用WCF接口核心逻辑</param> protected void Excute(Action<T> action) { T svc = null; try { svc = WCFFactory.Create<T>(); action(svc); this.CloseService(svc as ICommunicationObject);//关闭WCF服务 } catch (Exception ex) { if (svc != null) this.CloseService(svc as ICommunicationObject); throw ex; } } /// <summary> /// 执行WCF方法 /// </summary> /// <typeparam name="R">数据类型</typeparam> /// <param name="action">调用WCF接口核心逻辑</param> /// <returns></returns> protected R Excute<R>(Func<T, R> action) { T svc = null; try { svc = WCFFactory.Create<T>();//创建WCF接口实例 R result = action(svc);//调用接口逻辑 this.CloseService(svc as ICommunicationObject);//关闭WCF服务 return result; } catch (Exception ex) { if (svc != null) this.CloseService(svc as ICommunicationObject); throw ex; } } /// <summary> /// 执行指定WCF接口的方法 /// </summary> /// <typeparam name="M">WCF接口</typeparam> /// <typeparam name="R">数据类型</typeparam> /// <param name="action">调用WCF接口核心逻辑</param> /// <returns></returns> protected R Excute<R, M>(Func<M, R> action) where M : class { M svc = null; try { svc = WCFFactory.Create<M>();//创建WCF接口实例 R result = action(svc);//调用接口逻辑 this.CloseService(svc as ICommunicationObject);//关闭WCF服务 return result; } catch (Exception ex) { if (svc != null) this.CloseService(svc as ICommunicationObject); throw ex; } } private void CloseService(ICommunicationObject svc) { try { //查看连接状态,关闭WCF CommunicationState state = svc.State;//创建WCF通道,默认State=Opened; svc.Close(); //svc.Close();//测试关闭状态下,调用Close } catch { } } } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 WCFFactory C# Code: /// <summary> /// 动态创建WCF接口透明代理 /// </summary> /// <typeparam name="T">WCF接口,如:ICommonService</typeparam> /// <param name="uri">连接地址</param> /// <returns></returns> public static T Create<T>(string uri = "") where T : class { //获取WCF接口的名称,如:ICommonService string iName = typeof(T).Name; //获取接口的URI地址,必须是主程序的App.config配置文件 if (String.IsNullOrWhiteSpace(uri)) uri = System.Configuration.ConfigurationManager.AppSettings[iName]; //支持4种凭据类型:None/ Basic / Windows / Certificate string UseCredentials = System.Configuration.ConfigurationManager.AppSettings["UseCredentials"]; //default:None switch (UseCredentials) { case "Basic": return CreateBasic<T>(uri);//Basic认证,需要指定Windows用户/密码 case "Windows": return CreateWindows<T>(uri);//Windows认证,需要指定Windows用户/密码 case "Certificate": return CreateCertificate<T>(uri);//Certificate认证,需要提供SSL证书文件 default: return CreateNone<T>(uri); } //是否使用https协议,默认false //bool https = System.Configuration.ConfigurationManager.AppSettings["UseHttps"].ToLower() == "true"; //C#动态创建WCF协议配置实例(不依赖App.config配置文件) //var myBinding = CreateWSHttpBinding(https); //获取协议配置并创建实例,必须是主程序的App.config配置文件 //var myBinding = new WSHttpBinding("WSHttpBinding"); //var myBinding = new BasicHttpBinding("BasicHttpBinding"); //var myBinding = new NetTcpBinding("NetTcpBinding"); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 WCF开发框架配置详解, WCF开发实例教程 ![]() 推荐文章: ![]() WCF开发框架 - CSFrameworkV5.1旗舰版 ![]() ![]() ![]() ![]() ![]() ![]() C/S架构开发框架系列产品已成功应用500多家企业、6000多位软件用户,其中包括国内知名软件公司、国有企业、研发机构及上市公司(优秀企业选择了我们的产品-成功案例)。经过十年迭代升级,最新旗舰版V5.1,基础架构更成熟、应用更广泛、性能更稳定、开发效率更高! CSFrameworkV5.1旗舰版 ![]() 扫一扫加作者微信 ![]() ![]()
参考文档:
WCF开发框架之ICommunicationObject 对象详解 WCF开发框架之WSHttpBinding参数配置(C#代码配置+App.Config两种方案) WCF开发框架IIS承载WCF - Website站点承载改为ASP.NET网站应用程序承载 WCF开发框架 - NetTcpBinding配置web.config与C#代码配置 WCF开发框架 - BasicHttpBinding绑定的web.config与C#代码配置(支持https协议) WCF开发框架-IIS启用net.tcp协议发现不会自动执行Global应用程序解决方案 WCF快速开发框架 - IIS承载WCF net.tcp协议NetTcpBinding配置详解 WCF开发框架 - vs发布IIS承载(IIS Hosting)的WCF应用服务详解 WCF快速开发框架 - IIS承载WCF http协议BasicTcpBinding配置详解 WCF快速开发框架 - IIS承载WCF服务wsHttpBindings配置详解(HTTP协议) CSFramework WCF开发框架 - 多个WCF服务接口合并到一个svc服务 WCF开发框架-客户端采用BASIC身份认证调用HTTPS协议WCF接口 WCF开发框架默认连接:HTTP协议+Message安全模式+Windows客户端认证 WCF开发框架之WCF服务器配置文件 - Web.config WCF开发框架之Winform客户端配置文件 - App.config
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |