远程数据库服务访问技术WCF是什么?一般状况下,手机客户端程序运行能够 立即联接、浏览数据库查询,而且能够 依据实际的要求完成对数据库查询不一样的实际操作。可是在具体运用中,下列几类状况不宜将数据库查询曝露给手机客户端实际操作:
1)数据库查询处于数据信息浏览的管理中心部位,而且数据库查询的数据信息出自于安全系数、一致性等规定必须限制手机客户端对数据库查询的各种各样姿势,即手机客户端只有做数据库查询特定的这些浏览实际操作。
2)出自于安全系数、安全性及其易操纵管理方法等层面的考虑到,不可以将数据库查询曝露于外网地址中让程序运行立即浏览,只是将数据库查询防护起来,放到独享网段,仅仅将浏览数据库查询的实际操作根据服务项目的方法公布出去。
远程数据库服务访问技术WCF是什么?在上述所说情况下就必须运用远程控制数据库查询浏览服务项目。数据库查询服务项目,既是将对数据库查询的增删等实际操作或是更为繁杂的多表实际操作等根据服务项目的方法公布出去。使用人(即客户端软件)不可以立即对数据库查询开展实际操作,只有根据浏览公布的服务项目开展数据库查询的实际操作。那样做为服务器端的数据库查询服务项目,能轻轻松松出示并限制各种各样浏览数据库操作,防止手机客户端对数据库查询的违反规定实际操作。手机客户端与数据库查询服务项目中间的耦合度十分疏松,促使体系结构更为灵便。
1WCF及有关技术性介绍
WindowsCommunicationFoundation(WCF)是Microsoft为搭建朝向服务项目的运用出示的分布式系统通讯程序编写架构。应用该架构,开发者能够 搭建混合开发、安全性、靠谱和适用事务管理的公司级互连运用解决方法。
WCF融合了.Net服务平台下全部的和分布式服务相关的技术性,比如.NetRemoting、ASMX、WSE和MSMQ。它能够 跨过程、跨设备、跨子网、企业网乃至于Internet;以寄主程序流程言则,能够 以ASP.NET,EXE,WPF,WindowsForms,NTService,COM+做为寄主(Host)。
WCF能够 适用的协议书包含TCP,HTTP,跨过程及其自定。在WCF架构下,开发设计根据SOA的分布式服务将越来越很容易,微软公司将全部与此相关的技术性因素都包括以内。
朝向服务项目的系统架构(Service-OrientedArchitecture,SOA)是一个部件实体模型,它将程序运行的不一样作用模块(称之为服务项目)根据这种服务项目中间界定优良的插口和契约书联络起來。插口是选用保持中立的方法开展界定的,它应当单独于完成服务项目的云操作系统、电脑操作系统和计算机语言。
远程数据库服务访问技术WCF是什么?这促使搭建在各种各样那样的系统软件中的服务项目能够 一种统一和通用性的方法开展互动。
1.1WCF系统架构
在手机客户端,程序运行根据一个代理商来分享对寄主端所出示服务项目的启用,而代理商有着和服务项目同样的实际操作插口,此外也有一些额外的代理商管理方案。这也就代表手机客户端从不会立即启用服务项目。当手机客户端代理商接受到来源于手机客户端的启用恳求后,它将信息根据无线信道链往下传送。
每一个无线信道都是实行相对的信息的启用前解决,比如对信息的编号、出示靠谱的对话、对信息开展数据加密等。手机客户端的最后一个无线信道则是传送无线信道,依据配备的传输技术推送信息给寄主。
在寄主端,信息一样根据无线信道链开展传送。与手机客户端无线信道相对性应,寄主端无线信道也会对信息实行相对的寄主端启用前解决,比如对信息的编解码、出示对话管理方法、对信息开展破译等。
寄主端最后一个无线信道则承担将信息发给信息派发器(Dispatcher),由派发器承担启用服务项目的案例。
1.2WCF技术性因素与优点
做为根据SOA的一个架构商品,WCF最重要的便是可以便捷的建立一个服务项目。
1)ServiceClass:一个标识了[ServiceContract]特性的类,在这其中将会包括好几个方式 。除开标识了一些WCF独有的Attribute外,这一类与一般的类没什么差别。
2)Host(寄主):能够 是程序运行,过程如WindowsService等,它是WCFService运作的自然环境。
3)Endpoints:能够 是一个,还可以是一组,它是WCF完成通讯的关键因素。
一个Endpoint由三一部分构成:Address,Binding,Contract。称之为Endpoint的ABCs:Address是Endpoint的网络地址,它标识了信息推送的到达站。包含节点的IP地址、服务器端口和节点名字。
Binding叙述的是怎样推送信息,比如信息推送的传输协议(如TCP,HTTP),安全性(如SSL,SOAP信息安全性)。
Contract则叙述的是信息所包括的內容,及其信息的机构和实际操作方法,比如是oneway,duplex和request/reply。
在WCF中,类ServiceEndpoint意味着了一个Endpoint,在类中包括的EndpointAddress,Binding,ContractDescription种类各自相匹配Endpoint的Address,Binding,Contract。
WCF有以下优点:
1)统一性:WCF是针对ASMX,.NetRemoting,EnterpriseService,WSE,MSMQ等技术性的融合。
2)互用:因为WCF最基础的通讯体制是SOAP(SimpleObjectAccessProtocol简单目标浏览协议书),这就确保了系统软件中间的互用,即便是运作不一样的前后文中。
3)安全系数:WS-Security,WS-Trust和WS-SecureConversation均被加上到SOAP信息中,以用以用户认证,数据库安全认证,数据信息隐私保护等多种多样安全性要素。
4)兼容模式:WCF充足的考虑到来到与中旧系统软件的兼容模式。
2设计方案实例分析
2.1系统方案设计
根据WCF服务项目的数据库查询浏览程序运行构架,针对B/S或C/S实体模型沒有严苛的限定,C/S能够 像B/S实体模型那般根据浏览WCF对外开放出示可启用插口获得数据库查询服务项目,这类插口根据服务项目契约书(ServiceContract)转化成URI详细地址,在WEBSERVER上或WindowService上开展启用,全部方式 都根据proxy的体制被引入进来。
针对必须出示的数据库查询服务项目,能够 依据实际的要求曝露数据库查询的浏览层:较细的颗粒物能够 对于每一个单表公布服务项目,如对一张表中数据的搜索、插进或删除记录等。还可以对多表出示服务项目,这类状况下,等于将DAL(数据信息浏览层)做为数据库查询服务项目公布出去,手机客户端浏览服务项目读取数据后,必须自行解决以获得合乎有关业务流程的数据信息,并与UI层关联。假如必须限定客户对数据库查询的实际操作或是必须出示一定业务流程,还可以将BLL(领域模型层)做为服务项目公布出去。在这类状况下手机客户端恳求数据库查询服务项目,能够 获得具备一定业务流程、早已清理过虑过的数据信息,并与UI层关联。
2.2框架图
手机客户端层面有UI(客户主要表现层)和(BLL)领域模型层构成。主要表现层用于将BLL造成的数据展示给客户,并立即与客户互动,将客户的实际操作及客户造成的数据信息回到给BLL层解决。领域模型层承担解决客户的恳求实际操作,解决客户造成的数据信息或是将客户恳求的数据信息回到到主要表现层展现给客户。服务器端是在虚拟服务器上,该网络服务器应用双网卡或别的技术性完成公与私网的超越。
2.3服务器端完成流程
1.界定服务项目契约书.在应用WCF服务项目实体模型时,最先界定服务项目契约书,契约书界定了结束点能够出示的实际操作。本例中服务器端关键放到数据信息浏览层完成。在本例中,服务器端出示了基础的数据库查询浏览实际操作,比如能够 依据键入表名字和ID查寻某纪录的方式 。该契约书插口以下图示:
[ServiceContract]
publicinterfaceIServerDAL{[OperationContract]
ArrayListFind(stringtype,stringid);}
该契约书放到IDAL层,界定与手机客户端互动的契约书。必须导入System.ServiceModel程序流程集出示的类,加上System.ServiceModel命名空间中的ServiceContract特点。
应用OperationContract特点将IServerDAL的三个数据库操作方式 界定为WCF的实际操作契约书。
实际完成了服务项目契约书的类放到DAL层,称之为服务项目,是一个承继了IServiceDAL插口并完成其方式 的实际类。以下图示:
publicsealedclassServerDAL:IServerDAL{publicArrayListFindAll(stringtype){//实际完成}
浏览数据库查询的实际操作能够 由一切数据库查询浏览技术性完成,例如.NET自然环境下的ADO.NET数据信息浏览技术性、.NetFramework3.5之后的LinQTOSQL、ODBC或是应用目前的开源系统数据信息浏览架构(如NHibrate)等完成对数据库查询的浏览。
针对回到种类,假如回到的是.Net中的基础种类,如int、string等种类,能够 立即回到,WCF承担对这种数据信息的实例化和反序列化;假如回到的是一个自定的数据库系统时,必须在ServiceContract的插口(即本例中的IServiceDAL)中添加一个[ServiceKnownType(typeof(MyClass))]特性标识,用于特定实例化或反序列化时服务项目要应用的己知种类,这种数据信息实体线放到Model层,手机客户端和服务器端都必须导入该dll。