WCF的实现

2024-07-11

WCF的实现(精选8篇)

WCF的实现 篇1

基于SOA(Service Oriented Architecture)的架构设计把原有的功能封装成服务,以服务或服务组合的形式组成业务流程,提高了已部署系统的灵活性,同时避免了因为业务变化而重新构建系统或者作大改动的麻烦,它不仅可以快速地对业务的变化作出响应,同时也能解决各应用系统之间存在的“信息孤岛”问题,更好地实现数据共享与数据同步[1]。

深圳某货代公司原有的应用系统一直采用传统模式的信息系统,由相互独立的各个子系统组成,不同的子系统采用不同技术和平台开发,造成各子系统之间的信息相互独立,存在着较严重的“信息孤岛”问题,在数据共享与数据同步方面存在严重的问题,如各应用系统之间的公司组织架构和用户信息,目前企业的发展也已经受到了较严重的制约。基于WCF的统一用户视图(Union User View,简称UUV)服务组件的设计正是基于上述问题而提出的,它采用面向服务体系架构(SOA)思想和理论模式并应用WCF服务编程技术实现的轻量级服务组件,以统一服务的方式对公司组织架构和用户基本信息进行管理,并提供接口规范供各应用系统调用以获取公司组织架构和用户基本信息,并保证整个货代企业公司的用户账号一致,同时可实现一个用户多重身份的功能,很好地实现了货代公司组织架构和用户基本信息在各应用系统之间的数据共享与数据同步。

1 SOA研究概述

面向服务的体系架构(Service Oriented Architecture,SOA)是信息化技术迅速发展下的一种全新的体系架构,是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构[2]。SOA正成为新一代企业软件架构的主流和趋势,将会为整个企业级软件架构设计带来巨大的影响。

基于SOA的架构设计把原有的功能封装成服务,以服务或服务组合的形式组成业务流程,提高了已部署系统的灵活性,同时避免了因为业务变化而重新构建系统或者作大改动的麻烦,它不仅可以快速地对业务的变化作出响应,同时也能解决各应用系统之间存在的“信息孤岛”问题,更好地实现数据共享与数据同步,而且能够适合企业动态性的架构,可以对企业的各种实际业务与功能需求做出快速反应,真正做到随需而变[1]。

2 WCF服务编程技术

Windows通信基础(Windows Communication Foundation,WCF),是微软基于SOA推出的.Net平台下的框架产品,它代表了软件架构设计与开发的一种发展方向,是微软推出的在Windows操作系统下开发面向服务应用程序的统一平台[4]。WCF是微软应对SOA战略而推出的一套基于.NET Framework下的SDK[5]。在基于WCF的统一用户视图服务组件设计与实现中,将利用WCF服务编程技术来实现组件所需各类服务的开发,包括数据契约和服务契约的定义、基本服务实现;并结合.NET组件开发技术完成服务组件的实现。WCF集成了.NET编程开发的习惯,极大地提高了基于SOA的应用系统开发的效率,保证了服务编写的规范性和高质量[5]。

3 统一用户视图服务组件的分析与设计

3.1 UUV概述

统一用户视图,Union User View,简称UUV,是为管理员进行公司组织架构和用户基本信息管理,并提供接口规范供各应用系统调用以获取公司组织架构和用户基本信息,并保证整个货代企业公司的用户账号一致,同时可实现一个用户多重身份的功能。

3.2 逻辑结构

根据货代企业实际的业务需求,统一用户视图的逻辑结构如图1所示。

统一用户视图的逻辑结构主要包括以下几个部分:

用户信息库:存放组织机构及用户信息,用户信息保持与Active Directory同步,组织机构信息以信息库为准。

单点认证中心:对外提供开放式协议标准的HTTP接口和Web Services接口,供用户和独立应用系统(IAS)完成单点登录操作。

组织机构及用户管理:提供一系列用户管理界面,管理用户及组织机构信息。

应用管理模块:管理应用系统角色权限控制,用于门户个性化展现。

管理及查询接口:为应用系统提供查询用户相关信息接口,同步实现用户信息同步至各应用系统接口。

3.3 功能结构

统一用户视图中包括的功能模块和功能点如图2所示。

3.4 用户模型

统一用户视图的本质,就是维护好机构、人员和人员组三者之间的关系。它们之间的关系图3所示。

组织机构及用户管理的管理对象是深圳某货代企业所有的机构以及所有的工作人员,可以将机构和人员抽象为以下三个概念:

组织机构(ORG):是实际的货代集体企业各部门的抽象概念

人员或者用户(User):是现实中实际存在的人的抽象概念。规定一个人至少存在于一个部门下,即一个人员必须至少从属于一个机构,但一个人可属于多个组织机构。

组(Group):是人员或者部门的集合,统一用户视图只管理全局组,本地应用组由各应用系统维护。

组织机构、人员(用户)、组的数据关系如图4所示。

3.5 统一用户视图(UUV)服务组件接口设计

在基于WCF的统一用户视图服务组件的接口设计中,提供了内部接口和外部接口,内部接口主要提供给内部应用系统使用,外部接口主要提供给下属单位在构建第三方的应用系统时使用。服务组件接口架构图5所示。

1)内部接口设计

内部接口主要提供给内部应用系统使用[9],例如客户管理、销售管理等子系统,接口以内部服务方式提供,为了保障统一用户视图管理的唯一性,全部服务接口设计为只读属性。在应用系统中新建名为UUVInfo4Intranet SVC的服务,提供统一用户视图的内部接口调用,包括了查询用户信息、查询组织信息、查询所有的组织、查询组信息等接口。

2)外部接口设计

外部接口主要提供给下属单位在构建一些其他应用应用系统时,需要使用到用户、组织架构等信息时,方便构建第三方的应用系统。在应用系统中新建名为UUVInfo4-Internet SVC的服务,提供统一用户视图的外部接口调用其接口包括了同步用户信息、同步组织机构信息、同步组信息、查询组织接口等。

4 统一用户视图服务组件的实现

根据统一用户视图服务组件设计的要求,将服务组件中可能被多次用到的功能模块设计成服务,每一个功能模块都有多项功能组成,其中每一个功能就是一个基本服务。基本服务的实现包括了数据契约的定义、服务契约即服务接口的定义、服务的实现[7]。

4.1 数据契约定义

数据契约,即Data Contract,定义了与服务交互的数据类型[4]。WCF为内建类型如int和string隐式地定义了契约,也可以非常便捷地将定制类型定义为数据契约。

在统一用户视图中,用户信息包括了用户ID、用户登录帐号、用户中文名、用户英文名、岗位、办公电话、手机、小灵通、传真、E-mail等,因此需要对用户相关的信息定义好数据契约,以供服务消费者在调用服务是使用。用户信息数据契约定义如下:

由于Data Contract将被序列化以及反序列化,因此类型中成员的顺序也相当重要,在Data Member Attribute中,提供了Order属性,用以设置成员的顺序[4]。

4.2 服务契约定义

服务契约,即Service Contract,又称服务接口,描述了客户端能够之下的服务操作[4]。与面向对象的编程类似,在程序的编写过程中先完成对服务接口的定义,然后在完成对服务操作实现[6]。

在WCF服务编程中,使用特性Service Contract Attribute标定服务契约,Operation Contract Attribute标定服务方法服务实现。IUser SVC的服务接口定义具体如下:

Operation Contract只能用于Method,只有添加了此特性的方法才能被客户端调用。SOA只是分布式系统的架构体系,在架构体系内部依然采取面向对象的原则来编码,所以标注私有方法是不被推荐的,这也是使用接口作为服务契约的一个好处[10]。

4.3 服务操作实现

在服务操作的实现过程,也将会涉及到对业务逻辑层相应方法的调用,业务逻辑层又会调用到数据处理层方法的调用,对于数据处理层和业务逻辑层的实现属于传统的面向对象多层结构编程[8],在此将不再做详细介绍。

首先在项目中添加为User SVC的WCF Service的新项,此时将会产生两个文件User SVC.svc和App Code目录下的User SVC.cs文件。其中User SVC.svc文件是WCF服务中用于识别隐藏在文件和类后面的服务代码,类似与.asmx文件;而User SVC.cs文件将是完成对服务契约(接口)操作实现的类文件。具体实现代码如下所示:

5 结束语

基于WCF的统一用户视图服务组件采用面向服务体系架构(SOA)思想和理论模式,并结合.NET组件开发技术和WCF服务编程技术实现的一套轻量级服务组件,以统一服务的方式对公司组织架构和用户基本信息进行管理,很好地解决了货代企业信息系统中各子系统之间存在的“信息孤岛”问题,并保证整个货代企业公司的用户账号一致,同时可实现一个用户多重身份的功能,更好地实现了公司组织架构和用户基本信息在各应用系统之间的数据共享与数据同步。

摘要:基于WCF的统一用户视图(Union User View,简称UUV)服务组件采用面向服务体系架构(SOA)思想和理论模式并应用WCF服务编程技术实现的轻量级服务组件,以统一服务的方式对公司组织架构和用户基本信息进行管理,并提供接口规范供各应用系统调用以获取公司组织架构和用户基本信息,并保证整个货代企业公司的用户账号一致,同时可实现一个用户多重身份的功能,更好地实现了公司组织架构和用户基本信息在各应用系统之间的数据共享与数据同步。

关键词:统一用户视图,WCF,面向服务体系架构,服务组件

参考文献

[1]李巍.构建下一代软件架构SOA[EB/OL].http://tech.51cto.com/art/200601/16242.htm,2006.

[2]单建洪,卢中延.SOA整合之道[M].北京:电子工业出版社,2008.

[3]SOA在行业中的应用[EB/OL].http://www.ibm.com/developerworks/cn/webservices/ws-soaapp/index.html,2004.

[4]Juval Lowy.WCF服务编程[M].张逸,徐宁,译.北京:机械工业出版社,2008.

[5](美)Craig M.Marc M.Nigel W.等著.WCF揭密[M].赵科平,译.北京:人民邮电出版社,2008.

[6]沙为超.基于Web服务的SOA应用研究[J].安徽大学,2007.

[7]郭春燕.基于SOA的企业应用的研究与实现[J].大连理工大学,2005.

[8]郭晋伟.SOA架构的管理信息系统设计与实现[J].中国科学研究生院,2006.

[9]朱振杰.SOA的关键技术的研究与应用实现[J].四川:电子科技大学,2006.

[10]张逸.WCF基础知识问与答[EB/OL].http://www.cnblogs.com/wayfarer/archive/2008/04/15/1153775.-html,2008.

[11]Mikhail Genkin.SOA中的服务接口设计最佳实践之一[EB/OL].http://dev.yesky.com/81/7749581.shtml,2008.

WCF的实现 篇2

关键词:silverlight;WCF;WebGIS;财政预算审批管理系统

0 引言

WebGIS(Web Geographical Information System)是Internet 技术与GIS技术的结合。它通过互联网对地理空间数据进行发布和应用,实现地理空间数据的共享和互操作,它是GIS应用的重要发展方向。但目前传统WebGIS 技术存在地图界面操作体验不佳、交互性差、数据响应速度慢、代码模块化程度低及开发维护复杂等问题。

针对以上问题,本文提出了基于Silverlight技术和WCF服务的WebGIS应用框架。通过在财政预算审批空间可视化管理系统项目中的实际应用表明,该框架在增强WebGIS的交互性、加快处理速度、优化用户体验方面有较好的效果,同时该框架能提高开发模块复用性,为模块化快速搭建WebGIS应用系统提供了一种可行的解决方案。

1 相关技术介绍

1.1 Silverlight

在介绍Silverlight之前,有必要先介绍RIA(Rich Internet Applications,富因特网应用程序)。传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,而RIA的出现正是为了解决这个问题[ 1 ]。RIA是新一代的网络应用程序,它集桌面应用程序的最佳用户界面功能、Web应用程序的普遍性、低成本部署,以及基于网络的实时互动优势于一体。RIA 技术的发展迅速,主要有Adobe公司的Flex、微软公司的Silverlight 和 SUN公司的JavaFx,其中前两者是目前的RIA技术主流。本文选择微软公司的Silverlight作为RIA技术进行研究介绍。

Silverlight 是微软RIA策略的主要开发平台之一,以浏览器的插件方式运行,提供Web应用程序中多媒体与高度交互性前端应用程序的解决方案,可创建丰富的、绚丽效果的交互式应用[ 2 ]。基于Silverlight 开发的RIA,具备跨浏览器、跨平台等特性,甚至可以在移动设备上使用。Silverlight 提供灵活的编程模型,用户界面可由基于XML的XAML (可扩展应用程序标记语言)来渲染。

1.2 WCF服务介绍

WCF结合分布式技术和SOA理念[ 3 ],借助.NET框架而形成的面向服务的分布式通信编程框架,可以使开发人员快速地构建跨平台、安全、高效、事务性的企业级解决方案[ 4 ]。WCF是使用托管代码建立和运行面向服务应用程序的统一框架,它具有统一性、互操作性、安全性、兼容性的特点。WCF是微软分布式应用程序开发的集大成者,整合了.NET 平台下所有的和分布式系统有关的开发技术,从而大大简化开发过程;它采用SOAP(Simple Object Access Protocol)机制進行通信,从而保证了系统间的互操作性,而且利用这种通信机制可以支持跨进程、跨子网甚至跨Internet进行通信。正是由于这些优势,使得WCF在架构面向服务分布式企业级解决方案中,发挥越来越重要的作用,开发者对于WCF在企业级解决方案中的研究和应用也越来越多。

1.3 ArcGIS API for Silverlight

ArcGIS API for Silverlight是ESRI公司开放的基于Silverlight上的 ArcGIS ServerAPI接口[ 5 ]。其构建在微软的Silverlight平台之上,能够将ArcGIS Server、微软的Bing等地图服务和功能等,融合在Silverlight应用程序中,采用REST API应用程序接口来实现ArcGIS Server服务。因此,ArcGIS Server API for Silverlight,可以创造丰富的网络和桌面应用程序。ArcGIS API for Silverlight为用户提供的功能主要有:地图显示功能,该功能支持多种类型的地图投影、微软的Bing地图服务、ArcGIS Server的动态加载地图和缓存地图服务。在地图漫游和缩放时提供了动画显示效果,具有非常炫丽的用户界面。地图交互功能,通过 Graphics Layer等实现与地图的良好交互,这其中包括地图的输入与输出。任务工具功能,主要包含了查询、地理编码、地理处理、标识要素、查找、地理操作等常用的任务,极大丰富了GIS服务应用。

1.4 数据库技术

基于silverlight技术和WCF服务的WebGIS应用框架,使用大型关系型成熟数据库技术作为空间信息数据和属性数据的存储介质,包括空间数据库和项目属性数据库两部分,相互之间通过内部关键字进行关联。ArcGIS对空间数据的存储主要通过ArcSDE实现。ArcSDE为任意的客户端应用提供了一个能在数据库管理系统(DBMS)中存储、管理和使用空间数据的接口,并将地理特征数据(空间数据)和属性数据统一地集成在关系数据库管理系统中,从而可以较好地借助关系数据库管理系统对数据进行统一、有效的管理,保证空间数据与属性数据间的一致性和完整性。本框架采用ArcSDE为空间数据引擎连接SQL Server 2012进行空间数据的存储。

2 基于Silverlight和WCF的WebGIS框架

2.1 框架的目标

框架主要完成以下目标:

(1)实现系统架构的可扩展性和灵活性。利用基于面向服务思想的WCF服务开发WebGIS应用系统,实现功能模块间的松耦合,系统结构更加灵活,具有良好的扩展性。

(2)增强界面用户操作体验和系统交互性。利用Silverlight 富客户端比传统的WebGIS应用更能调用客户端自身的处理能力这一大优势,加上强大的Silverlight开发工具和控件(如Telerik、Blend、ESRI ArcGIS API for Silverlight)的支持,创建具有丰富体验的程序用户操作界面,同时解决传统WebGIS交互性差的弱点。

(3)实现框架功能的模块化。通过对传统经典三层架构(包括表现层、业务逻辑层和数据处理层)[ 6 ]进行扩展和细化,封装非业务公共功能模块形成通用类库,使得开发人员可以直接调用某一个类库来实现某项功能,提高企业级 WebGIS应用系统开发的效率。

2.2 框架的总体架构

本框架用Silverlight技术作为实现客户端的技术方案,WCF技术作为实现服务器端的服务基础。具体实现方法则是扩展传统的经典三层WebGIS应用框架,设计新的WebGIS框架的总体结构如图1所示。

(1)界面表示层

表示层用来完成地图数据和业务数据的展示以及人机交互的相关逻辑,接收用户的输入并将用户的意图转换为对业务层相关逻辑的调用。采用Silverlight Blend技术并调用Silverlight 控件(如Telerik)构建,地图展示和地图操作框架通过调用ArcGIS API for Silverlight接口快速实现[ 7 ]。

(2)WCF服务层

WCF服务层位于表示层和业务逻辑层之间,通过服务代理封装和扩展Silverlight客户端所调用的WCF服务,实现客户端服务调用的统一控制。服务端通过调用封装的业务逻辑层对象(以WCF服务的方式封装)响应界面表示层的数据请求和操作。WCF服务层的存在,降低了系统的耦合度,提高了系统的扩展性,并通过WCF服务代理的方式提高了系统开发的灵活性。

(3)业务逻辑层

业务逻辑层响应WCF服务层的业务逻辑请求,并完成与数据访问层的交互。它完全由WCF服务实现,以数据操作契约的形式向WCF服务层公开其数据操作。在服务底层开放与数据库交互基本操作的接口,并封装了基础数据实体的常用操作。

(4)数据访问层

负责空间数据和属性数据的存取,维护各种数据间的关系,通过用户的调用完成对数据的持久化工作,并且保障整个系统数据源的安全性。另外,本框架还包括数据实体类与通用类库:二者均面向全局,前者主要定义了基础数据实体模型,便于规范业务数据实体对象;后者主要是封装程序开发经常用到的方法和操作,例如数据转换、字符串处理等。

3 应用案例

本文将基于Silverlight技术和WCF服务的WebGIS框架应用于实际开发项目——财政预审审批空间可视化管理系统开发,取得了较好的效果。该系统前台使用Silverlight技术调用ArcGIS API for Silverlight等控件进行地图界面绘制,空间数据通过ArcSde空间数据引擎存储到商业数据库SQL Server 2012中,WCF服务层封装数据库操作函数,后台运维部分采用.NET环境下的C#语言开发。

3.1 WCF服务层的实现

新建WCF服务中GIS数据操作接口类文件IGISServices.cs,在其命名空間内,定义GIS数据库操作的函数,如下:

namespace WCFServices

{

[ServiceContract]

public interface IGISServices

{

[OperationContract]

ReturnInfoClass InsertFeaturesetIntoSDE(string FeaturesetJson, bool IsUpdate = false);

[OperationContract]

ReturnInfoClass DeleteFeatureFromSDE(string XMBH, bool IsUpdate = false);

[OperationContract]

ReturnInfoClass UpdateFeatureAttributes(string XMBH, Dictionary dicAttributes, bool IsUpdate = false);

}

}

之后,新建IGISServices.cs类的具体实现类文件GISServices.svc,在其中具体编写具体事件以完成IGISServices.cs中对应函数的功能。在此以在SDE数据库中插入图层数据的函数InsertFeaturesetIntoSDE()为例介绍其具体实现过程事件:

public ReturnInfoClass InsertFeaturesetIntoSDE(string FeaturesetJson, bool IsUpdate = false)

{

//设置欲更新的图层名

string strFeatureClassName = “sde.DBO.CZYSSP_Polygon”;

returnInfo.AddStepMsg(string.Format(“要素集名称{0}已确定”, strFeatureClassName));

//连接至工作空间获取要更新的图层

IWorkspace sdeWordspace = SDEConnectClass.OpenSdeConnect(connectionString=”SERVER=localhost;INSTANCE=5151;DATABASE=sde;USER=sde;PASSWORD=085222;VERSION=sde.DEFAULT”);

returnInfo.AddStepMsg(“打开工作空间”);

IFeatureClass featureClass = SDEConnectClass.findFeatureClassByName(sdeWordspace, strFeatureClassName);

returnInfo.AddStepMsg(“打开要素集”);

IFeature feature = featureClass.CreateFeature();

returnInfo.AddStepMsg(“创建空白要素成功”);

try

{

feature.Shape = j2fClass.features[0].geometry.polygon;

returnInfo.AddStepMsg(“添加图形”);

//属性处理

for (int i = 0; i < feature.Fields.FieldCount; i++)

{

//添加圖层的属性和字段值

}

//图层保存

feature.Store();

returnInfo.AddStepMsg(“要素保存完毕”);

returnInfo.ExecuteOK = true;

}

catch (Exception ex)

//如果没有保存成功 则删除掉创建的空白Feature

}

return returnInfo;

}

3.2 界面层的实现

本系统以XAML语言作为界面元素和.NET Framework for Silverlight 的衔接形式描述界面,借助ArcGIS API for Silverlight提供的控件和方法,展现和操作地图。下面以举一个很简单的例子说明:

//引用文件

……

//定义各种GIS操作(点、线、面等)在图层界面的样式

//插入ESRI提供的地图控件

Ext

ent=”12324619.9921,3013545.2841,12521039.992,3086331.8652”

MouseMove=”MyMap_MouseMove”

Progress=”Map_Progress”>

上述过程即搭建了一个简单了页面,在该页面中加入了一个地图控件,控件展示了本机发布的一张底图。财政预算审批空间可视化管理系统的截图如图2:

4 结束语

针对传统WebGIS地图界面操作体验不佳、用户交互性差、数据响应速度和架构模块化程度低的缺陷,本文提出了基于Silverlight技术和WCF服务的WebGIS应用框架。通过在财政预算审批空间可视化管理系统项目中的实际应用表明,该框架在一定程度上增强了WebGIS的用户体验和系统交互性,提高了WebGIS的开发模块复用性,为不同商业GIS业务系统的快速搭建提供了一个基本框架。

参考文献

[1] 吴涛, 戚铭尧, 黎勇, 等. WebGIS 开发中的RIA 技术应用研究[J]. 测绘通报, 2006, (6 ): 34- 37.

[2] Burkhardt F,Andreas M,Peter N.Integration of Environmental Management Information Systems and ERP Systems Using Integration Platforms[J].Environmental Science and Engineering:Information Technologies in Environmental Engineering,2009, 2:53-63.

[3]杨昌锋,王冠,司建辉. 基于 SOA 构建新一代的企业应用集成[J].计算机应用与软件,2005.20(3):63-65

[4] Juaval Lowy著,张逸,徐宁译. WCF 编程[M]. 机械工业出版社,2009:12-64,97-104

[5]汤国安,杨昕.ArcGIS地理信息系统空间分析实验教程(第二版)[M].北京科学出版社,2012

[6] 孙莉,李树刚,陶莹,等.基于B/S 模式的质量信息管理系统设计与实现[J].上海交通大学学报,2010,44(S1):175-177.

WCF的实现 篇3

关键词:平安城市,WCF,REST,设备管理

1 WCF REST技术概述

WCF是在原有的.net Remoting, Web Service, Socket的基础上, 融合HTTP、FTP等技术, 是Windows平台上开发分布式应用最佳的实践方式。REST, 表述性状态转移 (Representational State Transfer, REST) , 不是一种标准, 而是一种软件架构风格。它巧妙地借助已经验证过的成功的web基础设施-HTTP。Web上所有的东西本质上都是资源。而Rest正是基于命名资源而非消息的, 这就限制了底层技术的曝光, 从而给应用程序设计中的松耦合提供了便利条件。

2 视频设备管理服务简介

在平安城市中, 为了使管理员和用户更方便、直观的对前端视频设备进行管理, 较好的方法是通过WEB, 但是直接通过WEB对设备进行操作是十分不安全的行为, 并且WEB方式与前端设备的交互属于跨平台操作, 另外前端设备数量较大, 且设备现场广泛, 如何安全的实现跨平台的设备管理?本文采用基于WCF REST技术, 设计并实现了视频设备管理服务, 解决了WEB与前端设备跨平台交互以及安全性问题。该视频设备管理服务实现了前端视频设备的搜索, 在线视频设备的查询, 视频设备的添加及删除, 录像计划设置等功能。

3 设计方法

由图1可以看出, web服务器发送HTTP REQUEST请求, 视频设备管理接收请求后, 进行相应处理, 例如与存储服务器、流媒体转发服务器、数据库进行逻辑交互, 然后发送HTTP RESPONSE给web服务器。

1) 视频设备管理服务主要实现6个功能。

(1) 搜索前端摄像头:搜索具体网段内所有的摄像机设备, 获取流媒体转发服务器中网段内的设备列表, 然后获取数据库中设备的列表, 最后取交集, 即为前端摄像头列表, 这样设计的原因是能搜索到所有的前端摄像机, 防止重复以及漏缺等问题。

(2) 添加摄像头:即注册指定IP的摄像机至存储服务器以及流媒体转发服务器中。首先登录存储服务器, 在存储服务器中查询是否已经存在该设备, 如果已经存在, 返回已注册的标识给WEB服务器;若不存在, 则向存储服务器以及流媒体转发服务器中注册该摄像机, 返回注册结果。如果其中任何一个的注册失败, 则进行回滚, 删除另外一个服务器中已经注册的摄像机记录, 如果删除失败, 则将该记录写入文件保存, 开启定时器定时删除。通过以上处理, 可以避免重复注册的问题, 也保持流媒体转发服务器和存储服务器中注册摄像机列表的一致。

(3) 删除视频设备:删除存储服务器以及流媒体转发服务器中已注册的摄像机。

(4) 获取摄像机列表:获取媒体转发服务器中的摄像机列表, 然后获取存储服务器中的摄像机列表, 取交集, 接着过滤掉文件中删除失败的摄像机记录, 即为已注册的摄像机列表。

(5) 录像:设置录像计划, 使得摄像机在规定的时间进行录像, 设置存储服务器中指定摄像机的配置参数, 必须要合理的定义参数, 才能精确的设置录像计划。

(6) 验证存储服务器:指定IP、端口、用户名、密码、厂家、型号, 验证该存储服务器是否存在, 如果不存在, 则不能进行存储。

2) 为了保证安全性, 服务应需要验证功能, 在用户进行验证后, 返回唯一ID并且该ID是进行加密过的, 在一定的时间内, web服务器发送带有ID的信息, 就能不进行验证就可以进行相关操作。

4 实现过程

1) 新建WCF服务库, 在接口文件中定义接口, Rest最重要的思想就是URI对资源的唯一标识, 所以每一个接口都给定一个URI标识。

2) 新建控制台应用程序, 新建类, 继承上述接口, 添加windows服务, 调用存储器流媒体转发服务器的SDK, 连接数据库, 安装设计实现。

3) 服务端维护一个在线用户的列表, 该列表中有用户名、登录时间、最后一次操作时间时间、ID、IP等字段, 定时查询该列表, 一旦发现超时, 即删除该用户在线记录。

4) 在配置文件中配置数据库流媒体转发服务器、存储服务器、数据库服务器信息, 配置Service Model节点的HTTP访问根地址, 一般采用“http://{ip}:{port}/关键词”格式。

5) WEB服务器与视频设备管理服务通信数据格式一律采用JSON格式, 易于机器解析以及生成, 提高传输效率。

参考文献

[1]GB/T 28181-2011安全防范视频监控联网系统信息传输、交换、控制技术要求[S].

[2]韩伟钟.大型视频综合管理平台在平安城市建设中的应用浅析[J].中国安防, 2014 (21) .

[3]许端, 王世伟, 贺波涛.一种平安城市视频监控中的媒体连接方式智能切换方法[J].

浅述WCF 篇4

它可以跨进程、跨机器、跨子网、企业网乃至于Internet;可以是控制台程序, IIS, Windows Forms, Windows Service等为宿主程序;它支持TCP, HTTP, 命名管道, M SM Q等协议;它还支持SAML, Kerberos, X509, 用户/密码, 自定义等多种标准与模式。

WCF是提供统一的, 可用于建立安全、可靠的面向服务的应用的高效开发平台。

1 WCF的应用

WCF兼容了早期很多技术特性, 支持Web Service的行业标准和核心协议, 某种程度上看, 它就是ASP.NET Web Service, 因此它能胜任ASP.NET Web Service和WSE能做的事情, 跨平台和语言更不是问题 (数据也支持XML格式化, 而且提供了自己的格式化器) 。但是WCF作为微软主推一个通讯组件或者平台, 它的目标不仅仅是在支持和集成Web Service, 和传统的分布式通信框架一样, 从本质上来说, WCF符合SOA思想的技术框架, 是一套软件开发包, 提供一个跨机器、跨进程以致跨网络的服务调用。但是WCF还没有广泛运用在企业当中, 不过随着开发者的深入探究, WCF会得到普及。而且WCF整合了以前各种分布式技术, 提供对各种协议的支持, 对旧有技术在迁移的方面也提供了有利的解决途径。同时, WCF还可以结合为各企业级商务应用程序间的消息交流、应用程序集成, 使得为软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具能够搭载于应用服务器之上, 更进一步满足企业应用的不同需要。所以对于开发者而言, 学习起来就不太难。而且应用SOA解决方案的最佳选择就是WCF。WCF是面向服务的框架, 当我们需要进行大量数据的处理、挖掘、承载大量的访问负荷时, 应用系统就需要在多个服务器上运行不同服务, 所以根据不同的项目开发WCF的不同服务, 然后放在不同服务器平台上, 使得资源有效地利用, 减轻负荷。

2 WCF适合与不适合应用的举例

例1:学校内部原来有个基于.NET开发的学生管理系统, 现想利用这个系统, 开发一个网站, 显示学生的信息、结构、招聘情况等, 考虑到学校安全问题, 不允许连入学生管理系统的数据库, 则可以开发一个WCF服务, 具有查询功能, 只要两者都基于.NET, 整合起来就容易。

例2:当我们在做视频、或聊天软件时, 虽然WCF具备了很多功能, 但不适合用它来完成, 会出现性能方面的问题, 所以我们要用方便、便捷的方式来实现, 就可以直接用C、C++语言等编程来完成。

WCF自承载的优点:

(1) 易用性; (2) 灵活性; (3) 易调试性; (4) 易部署性; (5) 支持所有绑定和传输。

WCF自承载的缺点:

(1) 可用性受到限制; (2) 功能受到限制。

3 WCF的优势

3.1 统一性 (集成性)

WCF保留了ASMX, Net Remoting, Enterprise Service, WSE MSMQ等旧有技术的整合, 提供了好的解决方案。为各种应用提供了单一的编程模型。

3.2 互操作性 (跨平台)

通过标准的SOAP消息WCF可以与其他应用程序进行交互, 很好地支持了跨平台跨操作系统的的目标。

当然越复杂的功能就需要更复杂的规范来支持, 只是需要两个不同的平台之间使用相同版本的协议, 因为WCF最基本的通信机制是SOAP (简单对象访问协议) , 这种可以跨进程、跨机器甚至于跨平台的通信, 强调了互操作性的角色, 而非实现它们的平台。这就保证了系统之间的互操作性, 即是可以运行不同的上下文。

3.3 安全与可信赖

客户端和服务通过Internet进行相互通信, 需要进行身份验证, 执行要求消息完整、保密。由于WS-Security, WS-Trust和WS-Secure Conversation均被添加到SOAP消息中, 以及用于用户认证, 数据完整性验证, 数据隐私等多种安全因素, 所以大大增强了WCF在运用上的安全性与可信赖性。

3.4 兼容性

WCF作为一个通讯组件或平台, 考虑到与旧有系统的兼容性, 所以它不仅仅是在支持和集成Web Service。因此, 安装WCF并不会影响到原有的软件。并可以直接进行交互使用。

4 结语

对于使用.NET Framework进行软件研发的开发人员来说, WCF是分布式编程领域的一个新台阶, 关注WCF技术的发展并在实际开发项目中合理地运用它是十分必要的。开发系统的时候, 也要做个权衡, 综合多方面的因素。

参考文献

[1]Juval Lowy著, 张逸, 徐宁译《.WCF服务编程》[J].北京:机械工业出版社, 2008.

[2]Michele Leroux Bustamante著, 庞引明, 侯伯薇译《.学习WCF:从原理到实践》[J].北京:电子工业出版社, 2008.

[3]Craig McMurtry著, 赵科平译《.WCF揭秘》[J].北京:人民邮电出版社, 2008.

WCF的实现 篇5

经过二十多年的信息化建议, 目前我国已经建立起网络化、信息化、电子化的税务应用系统, 在此基础上, 税务系统下一步目标是实现互联互通、资源共享, 此时遇到的难题有:1) 现有的老系统存在异构性, 数据集成困难。老系统可能是不同的开发商开发, 运行在不同平台上, 采用不同的技术标准, 把这些老系统与新系统集成起来具有难度。2) 为适应税目、新业务的变化, 需要快速开发、增加系统新功能。3) 要求通过互联网提高政务效率及数据共享[1,2]。根据税务系统的现状, 采用面向服务架构 (Service-Oriented Architecture, SOA) 的分布式架构是解决税务新老系统集成最有效的方法。SOA是基于互联网集成异构系统, 消除信息孤岛的基本方案[3], 它常见的支持开发包如Sun的J2EE、IBM的Websphere等, 在实际应用中已经取得成功[4]。

Windows Communication Foundation (WCF) 是微软公司一套.NETFramework环境下SOA的开发平台, 已经集成在Visual Studio 2010等开发环境中, 目前越来越广泛地应用于各种SOA分布式系统开发[5]。本文通过一个个税查询案例探讨WCF架构下分布式税务系统的开发过程。

1 WCF下个税查询的实现过程

WCF下个税查询采用富客户端访问远程服务器上Web服务 (Web Service) 的方式工作, 使用Visual Studio 201为+IIS服务器软件开发。富客户端采用win Form形式。个税查询的基本要求:客户端给出查询的身份证号和被查询的年份, 服务器端返回该年份各月已经缴纳的个税。WCF是采用Web服务方式工作, 所以个税查询分成服务器端、客户端两边编程, 实现过程如下。

1.1服务器端的编程

服务器端的编程主要包含三个关键步骤:先定义一个服务接口, 在其中定义对外暴露的业务逻辑函数;再为接口写一个实现类, 实现业务逻辑函数;最后是编写配置信息, 把此服务部署到IIS上, 供客户端调用。

1) 定义服务接口的代码片段如下:

上述代码第1行声明上下文引用System.Service Model。第2行定义命名空间, 采用逆域名方式。第4行用[Service Contract]说明接口是一个WCF的服务接口。第5行定义一个服务接口。第7行[Operation Contract]说明业务逻辑函数是一个WCF的函数。第8行在接口中定义一个业务逻辑函数query () , 调用它时传入身份证号ID和查询的年份year, 返回字串形式的缴税记录。

2) 服务接口的实现类。

实现类要实现接口中的业务逻辑函数。代码片段如下:

上述代码片段中, 第2行实现接口。第6~8行根据输入的身份证号、查询年份, 构造SQL语句后通过ADO.NET查询后台数据库, 最后返回结果。

3) 部署服务。

运行VS2010的WCF部署工具, 产生部署信息, 关键的部署信息片段如下示:

上述部署信息中, 第3行表示部署接口实现类。第5行定义客户端调用业务服务的URL名。

1.2富客户端编程

运行VS2010, 新建一个服务终结点, 所设置的address、binding、contract与查询服务一致。在win Form窗体上放置身份证号码、查询年份两个文本框架, 单击查询按钮后调用服务, 结果打印在窗体上。如图1示。

2结论

WCF是微软公司在.NET环境下的一种SOA开发方案, 已经集成在Visual Studio 2010开发环境中, 是.NET Framework的重要组成部分, 具有易用、易开发、易部署等优点, 是税务新、老系统的一种快速集成方法, 在税务系统开发中有重要的应用前景。

参考文献

[1]宋海根, 张亚东.基于J2EE税务系统持久层Hibernate解决方案[J].微计算机信息, 2007, 3:223-224.

[2]邓海伟, 徐秋亮, 王忠天.基于J2EE的电子税务系统设计[J].计算机工程与设计, 2004, 25 (4) :606-608.

[3]张海军, 史维峰, 刘伟.基于SOA企业应用集成框架研究与实现[J].计算机工程与设计, 2008, 28 (8) :2085-2088.

[4]欧阳慧, 杨贯中, 陶勇.基于SOA/J2EE电信增值业务AAA系统的设计与实现[J].计算机工程与科学, 2005, 27 (9) :108-110.

WCF的实现 篇6

在一个整体的解决方案中,有许多的有特定功能的应用程序需要进行相互的实时消息交互,如何解决这些应用程序间错综复杂的消息传递,是一个很常见但是令人很困扰的问题,尤其是在应用程序数量比较多,同时消息频率也很大的时候[1,2,3]。通常一般的解决方案会采取点对点直接订阅方式,这种方式的复杂度会使开发者让而却步,且消息密集度都将导致消息传输的延迟而不能正确传递。本文提出了一种相对简单、高效的且易于实施的技术手段。

1 WFC简介

1.1 WCF

WCF (Windows Communication Foundation)[4,5]是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架,它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。以通信范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于Internet;以宿主程序而论,可以以ASP.NET、EXE、WPF、Windows Forms、NT Service、COM+作为宿主。WCF可以支持的协议包括TCP、HTTP、跨进程以及自定义,安全模式则包括SAML、Kerberos、X509、用户/密码、自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA(Service Oriented Architecture)的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于握着叩开SOA大门的钥匙。

1.2 WCF的优势

Net分布式技术,包括.Net Remoting、Web Service、COM+等五种技术,这既不利于开发者的开发,也加大了程序的维护难度和开发成本。正是因应于这样的缺陷,WCF才会在.Net 2.0中作为全新的分布式开发技术被微软强势推出,它整合了上述所属的分布式技术,成为了理想的分布式开发的解决之道。

从功能的角度来看,WCF完全可以看作是ASMX、.Net Remoting、Enterprise Service、WSE、MSMQ等技术的并集。这种说法仅仅是从功能的角度,事实上WCF远非简单的并集这样简单,它是真正面向服务的产品,它已经改变了通常的开发模式。因此利用WCF,就可以解决包括安全、可信赖、互操作、跨平台通信等等需求,开发者再不用去分别了解.Net Remoting、ASMX等各种技术了。概括地说,WCF具有如下的优势。

1.2.1统一性

WCF是对于ASMX、.Net Remoting、Enterprise Service、WSE、MSMQ等技术的整合。由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。

1.2.2互操作性

由于WCF最基本的通信机制是SOA协议,这就保证了系统之间的互操作性,即使是运行于不同的上下文中。这种通信可以是基于.Net到.Net间的通信,可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphere,WebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的操作系统,如Sun Solaris、HP Unix、Linux等等。

1.2.3安全与可信赖

WS-Security、WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。在SOAP的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS-AtomicTransaction之上的基于SOAP格式交换的信息,则支持两阶段的事务提交。上述的多种WS-Policy在WCF中都给与了支持。对于Messaging而言,SOAP是Web Service的基本协议,它包含了消息头和消息体。在消息头中,定义了WS-Addressing用于定位SOAP消息的地址信息,同时还包含了MTOM(Message Transmission Optimization Mechanism)。

1.2.4兼容性

WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX和.Net Remoting。即使对于WCF和ASMX而言,虽然两者都使用了SOAP,但基于WCF开发的应用程序,仍然可以直接与ASMX进行交互。

2旧有方案的不足

多个应用程序间的实时消息交互,通常有以下几种方案。

2.1点对点订阅方式

这种方案是每个应用程序都向特定的应用程序订阅其所能提供的某些消息,这种方式有以下几个不足之处:扩展性差,每当有新的应用程序加入时候,当旧有的应用程序需要和这个新的应用程序进行通信时候,其他的应用程序都需要进行修改;实现复杂,每个应用程序都需要和许许多多的其他应用程序维护消息通道,一旦应用程序数量达到一定规模,信道维护工作是一件非常繁复且容易出错的任务。

2.2广播方式

这种方式下,每个应用程序都以广播方式向外发布消息,这种方式实现比较简单,但是有两个不足之处:每个应用程序都会收到很多不必要的消息,每个应用程序需要对每个消息进行判别,从而降低了处理效率;网络上的消息数量会非常的巨大,增大网络负担,从而降低消息传递的准确性。

3 WCF开发的基于订阅方式的消息总线

整个消息总线的原理如图1所示。

从图1可以看出,这种基于订阅方式的消息总线,核心在消息中心。这种方式有以下优势:

(1)每个应用程序都只向消息中心订阅其所需要的消息,大大减少了网络上消息数量。

(2)每个应用程序都只和消息中心做交互,只需要公开消息中心的部署地址,通信接口,各个应用程序就能够轻易的接入这个系统,与其他应用程序交互,这样即减少了信道维护工作量,同时也使得系统的扩展性大大增强。

(3)消息中心通信接口采用WCF,WCF的优势我们在理论基础节中已经有阐述。他的互操作性非常强,这种通信可以是基于.Net到.Net间的通信,可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphere,WebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的操作系统,如Sun Solaris、HP Unix、Linux等等,这个保证了我们和异构系统通信没有问题。另外WCF又是安全与可信赖的,既保证了通信的稳定性和私密性。

(4)为了保证各个应用程序一旦离线,再次重启后也能够收到所订阅的消息,我们在消息中心一侧采用了一个持久化池,一旦某个应用程序非正常退出,就将他订阅的消息保存下来,等到该应用程序重启后再发还给他。

(5)消息中心在这个方案里是一个中枢,在应用程序增加后,消息中心会不会成为一个瓶颈呢?答案是肯定的,因为消息中心和所有应用程序通信,肯定会成为瓶颈,为了解决这个问题,我们可以使用扩展消息中心方式来进行,或者说使用多个消息中心(如图2所示)。不同的应用程序和不同的消息中心通信,消息中心1在收集应用程序1,应用程序N订阅的消息后,将本消息中心不能够提供的消息,转给消息中心,同样,消息中心2在收集应用程序2,应用程序……的消息后,也将本消息中心不能够提供的消息转给消息中心,而消息中心就把分消息中心当成是应用程序一样,中转与分发消息给不同的分消息中心。在这个方案里,分消息中心过滤了部分消息,减轻了网络通信压力。

4仿真实验

本方案的消息中心封装成了自动启动的Windows服务,随着Windows系统启动而自动启动,为这个消息总线中其他的应用程序提供了可信赖的运行环境;系统使用WCF技术,运行于Windows操作系统上,可实现同一计算机上多个进程或者多个计算机上的多个进程间的消息传递,通过配置,可支持TCP/IP、WebServies等多种底层通讯技术;消息由消息总线转发,参与通讯的进程订阅消息标题,经过消息总线过滤,其只收到所关系的消息,大大降低网络负荷;采用基于服务的技术,参与到消息通讯的进程只与消息中心交互,彼此不关心对方行为与存在,实现通讯进程的在线可插拔;利用缓存技术,实现消息传输的可靠性。

本技术方案已经在宝信软件股份有限公司的iMES软件中使用,该软件采用了一个消息中心,软件一期有5个应用程序,二期增加了两个,扩展非常简单。采用本技术方案前后信道数量由42个减少到14个,消息包数量由210个/s.减少到40。这里假设每个应用程序每秒发送5消息个包,订阅1个主题消息。记n为应用程序数,采用新消息总线前的信道数量是n(n-1),随着应用程序数的增加,信道数量近似以2次方增加,量是非常惊人的;而采用新的消息总线后,信道数量只是2n,而且都是和消息中心通讯,信道维护简单很多。

5结束语

如今的应用系统越来越庞大,系统之间的整合越来越多,而不同异构进程之间的通信是一个必须要解决的问题。本文提出一种利用WCF技术开发的基于订阅模式的消息总线,能够有效的解决这些进程间交互问题,仿真实验验证了算法的有效性。

参考文献

[1]年福丰,刘秋让.基于WCF的异构数据源集成系统的研究和实现.科学技术与工程,2009;9(11):3116-3119

[2]朱义,陈进,刘雨,等.基于SOA的设备智能维护系统架构设计及实现.计算机应用与软件,2009;26(6):10-13

[3]来兴华,张水平,尚文静.基于WCF的自助缴费系统的设计与实现.微计算机信息,

[4]程汤培.基于WCF的即时通信软件的设计与实现.电脑编程技巧与维护,2008;4:24-41

WCF的实现 篇7

WCF(Windows Communication Foundation)是微软提出的基于服务架构(SOA)的网络通信API。WCF是一款真正面向服务的产品,从功能上讲,完全可以看作是ASMX、.Net Remoting、Enterprise Service、WSE、MSMQ等技术的并集。WCF统一了多种微软的分布式技术,提供了对跨供应商互操作性支持,解决了各种分布式技术之间的互联互通问题,尤其是异构平台下构建分布式应用的整合问题。WCF具有良好的松耦合、平台无关性和互操作性,使其成为微软分布式开发核心技术。

WCF作为新一代通信基础,具有众多优势:继承SOA架构优点,迅速构建松耦合的分布式企业级应用;良好的兼容性和统一的开发模式,提供互操作支持,适合不同的应用环境;提供安全、可靠的服务级分布式事务。

本文结合高校户籍管理系统,将WCF技术应用于当前非常流行的多层架构设计,满足项目安全、互操作和跨平台网络通信需求,具有一定的理论与实践意义。

1 基于WCF的多层服务架构

基于WCF的多层架构分为:页面表示层、WCF服务层、基本逻辑层和数据访问层[1,2,3,4]。系统多层架构设计见图1。

页面表示层主要负责用户与系统的交互。WCF支持WS-*标准,其客户端可以运行在异构平台,通过WCF提供的接口与WCF服务交互。当业务逻辑改变时,页面表示层无需修改,只需保持客户端的服务不变即可,简化了客户端编程的复杂性,方便了系统维护。

WCF服务层处于基本逻辑层和页面表示层之间,对业务逻辑层进行封装和抽象。WCF服务层设计数据契约、错误契约、消息契约和服务契约及服务层接口,为页面表示层提供服务。

基本逻辑层实现WCF服务的具体内容,是系统的逻辑处理中心。基本逻辑层处于数据访问层和Web服务层之间,对上层提供逻辑处理服务,调用下层数据访问层接口连接数据库。

数据访问层为基本逻辑层提供数据库操作方法,结合ADO.NET技术,实现对数据库的链接及数据的存取操作。

2 WCF服务层设计

高校户籍管理系统主要包括户籍信息管理、信息查询管理、收费管理、操作日志管理和学院信息管理等模块,采用传统多层架构开发模式[5]。本文重点讨论WCF服务层的设计与实现。

WCF客户端在通信过程中,先生成本地代理,通过代理经过访问点与服务端对应访问点交互。访问点是实现消息交换的基础,使用地址(Address)指定提供服务位置,使用绑定(Binding)配置通讯协议,使用契约(Contract)发布服务,通过XML标准格式的WCF配置文件,对外暴露访问点,提供服务。

WCF服务层契约的设计及实现是非常重要的一步。WCF包含4种契约,分别是数据契约(Data Contract)、错误契约(Fault Contract)、消息契约(Message Contract)及服务契约(Service Contract)。

3 WCF服务层实现

以高校户籍管理系统的户籍信息管理为例,简要概述数据契约、服务契约的实现。

(1)RInfo(户籍信息)数据契约主要实现代码如下:

其中,[DataContract]指定自定义结构的数据契约RInfoRequest,WCF提供了序列化支持。RInfoResponse的定义类似,[DataMember]指定数据成员。

(2)WCF服务接口主要实现代码如下:

通常使用接口来定义服务契约。IRInfoService为定义的户籍信息服务契约名称,包含CreateRInfo()方法创建户籍信息,接收一个RInfoRequest类型参数。[Fault-Contract]指定错误和异常的错误契约。

(3)WCF服务契约主要实现代码如下:

WCF服务实现方法是在服务端继承实现IRInfoSer-vice接口。接口实现过程中,通过数据访问层Storage的InsertRInfo()方法调用Wrapper封装类,Wrapper封装对数据库存储过程调用,实现数据的增删改查。

4 访问点配置实现

通过WCF配置文件,设置访问点内容,对外提供服务。WCF配置文件采用标准的XML格式,在配置文件中对访问点属性进行设置,主要代码如下:

5 结语

架构设计是整个项目设计开发过程中非常重要的一环,WCF服务层接口的设计与实现是分布式应用的关键。本文结合高校户籍管理系统,给出WCF服务层数据契约和服务契约的具体实现方式以及访问点配置,提高了系统的互操作性,节省了后期维护费用。

下一步工作是提出一整套基于WCF的.NET多层架构解决方案并进行精简和优化,降低系统设计开发的复杂度,提高系统的可扩展性和可移植性,结合AJAX技术的使用,进一步提高用户体验。

参考文献

[1]王连泽,李希龙.利用WCF技术实现两层/三层的兼容架构[J].电脑编程技巧与维护,2015(7):10-12.

[2]赵晓鹏,卫耀伟,常晓冰.基于WCF的综合治税信息系统设计与实现[J].软件导刊,2015(5):129-130.

[3]王光琼,杜天行,未永庆,等.基于SOA构架的分布式租车公司管理系统设计与实现[J].软件导刊,2014(6):52-54.

[4]孙志中,魏嘉银,秦永彬.基于WCF和NHibernate的软件架构研究及应用[J].计算机与数字工程,2015(4):43-44.

WCF服务宿主迁移方案设计 篇8

1 WCF服务配置、启动

WCF服务有通过配置文件和通过程序配置两种配置方式。在配置文件方式下,可利用微软SDK提供的配置工具Svc Config Editor.exe实施WCF配置。需要配置的项目主要包括:

(1)WCF服务端

服务端需要配置的项目主要包括:服务配置名称(service name)、宿主基址(host base Address)、宿主开启/关闭超时设置(host openTimeout,host close Timeout)、终端配置名称(endpoint configuration name)、终端地址(endpoint address)、终端绑定类型(endpoint binding)、终端绑定配置关联(endpoint binding Configuration)、终端契约名称(endpoint contract)、服务行为配置关联(service behavior Configuration)等。

(2)WCF客户端

客户端需要配置的项目主要包括:客户端配置名称(client name)、服务地址关联(address)、绑定配置类型(binding)、绑定配置关联(binding Configuration)、服务契约名称(contract)、身份认证类型(identity:user Principal Name/service Principal Name/dns/certificate/rsa)等。

(3)绑定配置

需要考虑的项目主要包括:绑定名称(binding name)、宿主名比对模式(host Name Comparision Mode)、最大缓冲池大小(max Buffer Pool Size)、最大接收消息大小(max Receive Message Size)、消息编码(message Encode)、代理地址(proxy Address)、开启超时(open Timeout)、关闭超时(close Timeout)、发送超时(send Timeout)、接收超时(receive Timeout)、文本编码格式(text Encoding)、事务流(transaction Flow)、本地代理开启(bypass Proxy On Local)、读配额之最大数组长度(reader Quotas max Array Length)、读配额之最大每次读字节数(reader Quotas max Bytes Per Read)、读配额之最大深度(reader Quotas max Depth)、读配额之最大命名表字符数(reader Quotas max Name Table Char Count)、读配额之最大字符串长度(reader Quotas max String Content Length)、可靠会话的非活动超时(reliable Session inactive Timeout)、安全模式(security mode)、消息客户信用类型(message client Credential Type)、开启服务信用协商(negotiate Service Credential)、加密算法箱(algrithom Suite)等。

(4)其他配置

主要需要开启service Behavior Config-uration中的http Get Enabled功能。因为只有这样才能通过微软SDK中的svcutil.exe自动获取并生成WCF的客户端代理文件。

2 WCF客户端/服务器工作流程

以回调方法注册以及回调处理的执行过程为例,图1给出了WCF客户端/服务器的常用工作流程。这里,WCF客户端泛指其他进程空间的WCF客户代理,WCF服务器泛指依存于宿主进程的WCF服务。WCF客户端与WCF服务器之间通过相互传递WCF Instance Context对象实现双向数据通信。

3 WCF服务故障侦测及宿主迁移设计

为了解决因WCF宿主进程非正常死亡而引起的系统跨进程通信故障问题,我们必须考虑如何侦测WCF服务故障,以及如何实现既存WCF服务发生故障条件下的WCF宿主进程的自动迁移与数据恢复。图2给出了一个WCF服务故障侦测及宿主迁移解决方案。

在图2所示方案中,三个服务进程都通过共享相同的WCF客户端代码完成与WCF服务端代码的通信。因此,在功能上,三个服务进程都具有启动WCF服务、通过WCF信道与WCF服务交互、WCF静态信息的本地备份以及WCF服务定时侦测的功能。由于三个服务进程相互独立,因此在启动WCF服务的问题上三者之间必然存在一定的竞争关系。也就是说,三个服务进程成为WCF服务宿主进程的机会是随机的、对等的。对于普通Windows进程,WCF服务本身提供的异常机制就可以保证上述竞争问题的同步处理。但对于Windows服务进程而言,我们必须引入信号量等同步机制才能避免上述的竞争问题。

静态信息本地备份是指各个服务进程都会将自身需要在WCF服务中存档的静态信息在本进程内做个备份,这样就可以保证在原有WCF服务出现故障的情况下,能够重新竞争启动新的WCF服务,并将备份信息重新导入新的WCF服务存档。

WCF服务定时侦测是指引入定时器间歇性的查询WCF服务的状态(如图1中的定时侦测线程),如果发现WCF服务无法连通,则可判定原有的WCF服务已经发生故障,此时即可以重新触发WCF服务启动/注册流程,从而实现WCF宿主的迁移。定时侦测在实现上可以采用定时调用WCF服务接口的方式实现。也就是说,WCF服务端实现某个接口专门用于提供WCF客户端查询调用服务,如果WCF客户端不能在定时接口调用中获取WCF服务的服务响应,则可判定此WCF服务已经失效,此时就必须重新启动一个WCF服务,并提取本地备份的静态信息重新注册,从而完成WCF服务的宿主迁移。

需要指出的是,图2所示的方案可以通过宿主迁移设计来自动恢复WCF服务静态信息,但却无法找回因故丢失的动态处理数据。而事实上,这类动态数据的不可恢复问题是任何方案均不可规避的。对此,工程实践中我们只能试图寻找故障率最低的宿主服务进程,最大限度的降低WCF服务的故障率及损失,从而提升整个产品的系统性能。

4 实验结果分析

在表1所示系统环境下,对比常用的WCF Net Tcp Binding和WSDual Http Binding,我们分别从WCF服务启动、WCF接口调用、WCF回调操作几个方面对前文所述方案的系统原型进行了一些性能实测,实测结果如表2所示:

(均值±标准差,单位:ms)

表2中,本进程是指WCF服务宿主进程与WCF客户端进程为相同进程的情况,跨进程是指二者不是相同进程的情况。测试结果可以看出,Net Tcp Binding方式在WCF接口调用和WCF回调操作方面要低于WSDual Http Binding方式,这与常规的预期是相悖的。另外,从WCF接口调用和WCF回调操作方面的对比来看,本进程与跨进程操作之间的差异性并不明显,但WCF回调操作的系统用时在各种情况下都要远远高于WCF接口调用,这说明,WCF回调机制在方便了系统开发的同时,却增加了系统的运行时通信负担,是以牺牲小部分系统运行时的性能换取的敏捷系统开发时间。

5 结论

本文给出了一套WCF服务的宿主迁移解决方案。通过对WCF服务的配置、启动以及客户端/服务器工作方式的介绍与分析,给出了具体的WCF服务故障侦测和宿主迁移解决方法,有效解决了由于原宿主非正常死亡等所带来的整个系统无法工作的问题。最后通过对比两种WCF服务常用绑定协议的实测结果,颠覆了旧有的Net Tcp Binding方式一定在性能上优于WSDual Http Binding方式的学说。

摘要:文章给出了一套WCF服务的宿主迁移解决方案,介绍了WCF服务的配置、启动以及客户端/服务器工作方式,有效解决了由于原宿主非正常死亡等所带来的整个系统无法工作的问题。最后,通过此方案系统原型的实测结果验证了该方案的可行性,并颠覆了旧有的NetTcpBinding方式一定在性能上优于WSDualHttpBinding方式的学说。

关键词:WCF,宿主,进程

参考文献

[1]张卓彬,张璟,李军怀.一种面向消息的服务契约开发方法研究与实现[J].微电子学与计算机,2008,25(8):99-102.

[2]Lowy J,Vasters C.Programming WCF Services[M].机械工业出版社.2008.

[3]Windows Communication Foundation体系结构[EB/OL].http://msdn.microsoft.com/zh-cn/library/ms733128.aspx

[4]学习WCF(5)——学习Binding的使用[EB/OL].http://www.cnblogs.com/gaoweipeng/archive/2009/07/15/1522847.html

[5]WCF深度绑定[EB/OL].http://msdn.microsoft.com/zh-cn/magazine/cc163394.aspx

上一篇:语言输入输出下一篇:大型信息系统集成