版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向服务的计算和web数据管理第6章面向服务软件的可信性面向服务的软件是分布式的并且通过网络传送数据。和传统软件相比,可信性,包括外部安全性、可获得性以及可靠性对这类软件提出了巨大挑战。本章简要介绍了面向服务的软件的可信性,重点讨论了外部安全性问题。
6.1.1可信性
系统的可信性是由JeanClaudeLaprie在1985年提出的,它指的是系统为终端用户提供特定服务的能力,根据这种能力用户可以放心的信任系统提供的服务。可信性包括系统三个方面的特征:属性、方式以及缺陷。每一方面都包含几个元素,如图6.1所示。可信属性中的外部安全性(security)包括内部安全性(safety)、易受攻击性、保密性以及数据完整性。6.1基本概念
图6.1可信性定义可靠性:是在一段时间内服务的可持续性。更精确地,系统的可靠性就是一个函数R(t),它是在时间段[0,t],系统成功运行的概率。可靠性相关的另一个函数F(t)是一个失效概率函数,它指的是在时间段[0,t],系统第一次失效的概率,这里R(t)=1-F(t)。对于一个非冗余的计算机系统,可靠性函数经常用一个指数函数R(t)=e-λt,这里λ指系统的故障率。可维护性:是对系统是否容易维护或失效后返回正常操作的能力的度量。可维护性经常用系统的修复率μ表示。
可获得性:是对系统在给定时间点t是否可用的度量。系统的可获得性函数A(t)是系统在时间点t正常工作的概率。对于一个非冗余的计算机系统,系统的可获得性可用下式计算:
易受攻击性:是指系统的问题或弱点,例如程序错误或一个通用的错误配置,会使系统受到攻击或使系统崩溃。
保密性:是指信息只能被授权的用户访问。
数据完整性或信息完整性:是指数据或信息的有效性和一致性。
内部安全性(safety):是指在运行环境中灾难性的后果不会出现,例如生命危险或重大经济损失。
外部安全性(security):包括易受攻击性、保密性、完整性以及安全性,主要处理恶意攻击,而可靠性和可获得性主要处理由不完善的开发和操作环境引起的缺陷、错误、以及系统失效。另外一个相关的概念是ISO8402[1986]定义的服务质量。根据ISO8402[1986],质量被定义为“为满足规定的和隐含的需求,产品或服务应具有特征或特性的集合”。这是一个高级或通用性的定义,不同的领域对服务的质量有不同的解释。例如:
(1)网络质量:指的是能够被度量和提高,并且在某种程度上能提前保证的传输率、错误率以及其他特征。
(2)软件质量:软件和质量标准相符合的程度。质量标准包括:经济性、正确性、适应性、完整性、可靠性
可用性、文档化,可修改性、清晰性
可理解性、有效性、可维护性、灵活性
通用性、可移植性、互操作性、可测试性
有效性、模块化、可重用性6.1.2服务的可信属性和质量
可信属性和服务质量经常被交换使用,站在用户角度,更多的使用服务质量,而系统设计者更多的使用可信属性。因为可信性包含了会影响可信属性的缺陷的概念,以及提高可信属性的方式。图6.2表示了支持功能性开发的技术标准以及工业界和标准组织给面向服务的软件开发定义的与可信性相关的标准。
图6.2面向服务软件开发的可信属性可信性不是一个可以添加到已存在的系统中的特征,可信性必须内在地和功能结合在一起,在设计的早期阶段就作为一项基本需求考虑进去。和中心化的软件相比较,分布式面向服务的软件开发需要更强更广泛的外部安全性。参与的各方必须能够互相识别并且限制对方的作为,各部分之间的通信应该被保护,防止各种恶意攻击。6.1.3SOA软件的安全问题
恶意软件(malware),是指没有经过主人同意就入侵或破坏计算机系统的软件。有许多种有敌意的、入侵的、匿名的恶意软件。因特网上的许多攻击都嵌入在恶意软件中。根据VirusBulletin的最新报告(/),恶意代码事故的数量持续增长。根据Symantec的报告(/enterprise/threatreport/),2006年第三季度,SQLslammer蠕虫病毒是最常见的攻击,有45%的攻击来自于SQLslammer蠕虫病毒。通常,信息外部安全性处理完整性、保密性、内部安全性以及可获得性(服务崩溃)。有些攻击会损害信息的完整性,有些会暴露保密性信息,另外一些攻击会影响系统的可获得性。例如,拒绝服务攻击会降低系统可获得性。但恶意代码攻击会引起综合后果。一个人可用特定类型的恶意软件(例如,特洛伊木马)损害系统,破坏文件系统(完整性方面),同时窃取用户帐号信息,并从中获取口令(保密性方面)。数据库的slammer蠕虫病毒通常采用植入SQL查询命令实现,它能窃取信息,并且使数据库立即瘫痪。Rootkit主要用于系统管理或者保护得到许可的系统,但它也威胁着有价值的信息的保密性。黑客使用Rootkit隐藏或保护恶意代码。索尼公司BMG娱乐部门臭名昭著的Rootkit软件原本目的是抵制非法复制CD,在Windows专家发现了包含在一些索尼标题中的复制控制软件后,索尼被迫召回数百万张CD,原因是该软件使用了有争议性的Rootkit伪装技术,可在计算机中隐藏自己。在黑客开始分发利用了索尼的伪装技术的恶意软件后,索尼采取了召回的办法。根据Symantec的早期报道,Klez.A和KamaSutra蠕虫病毒会破坏抵抗力差的系统的文件。Klez.A采用ElKern病毒感染系统,执行大规模的邮件分发,并且把文件的大小改为0字节。KamaSutra蠕虫病毒会删除文件。很明显,这两种蠕虫病毒都进行了文件完整性破坏。
通常,术语蠕虫和病毒都指这些恶意代码。这里,蠕虫、病毒以及恶意代码可以互换使用。
但是,并非所有的蠕虫都有负面作用,predator蠕虫,也叫做counter蠕虫或killer蠕虫,用于抵制恶意代码。这一良好动机的代码也是蠕虫,它通过另一个蠕虫的后门繁殖。为了抗击攻击,可以主动运行这类蠕虫。蠕虫通过蠕虫携带的各种机制传播。有些蠕虫在完成初始配置后,能够复制自身并通过易受攻击的节点自动传播。但是,有些类型的恶意软件不能自我复制。有些蠕虫,作为恶意软件的子集,能够自我复制恶意代码,而有些是恶意的但不能自我复制。蠕虫,从某种意义上讲,的确是能自我复制并自我繁殖的恶意软件,这些恶意软件通过相互连接的易受攻击系统自动传播。
恶意软件的另一子集,一般称为病毒,它们类似于蠕虫,也能够自我繁殖。因为病毒和蠕虫的移动性(能够自发移动),它们会引起大量事故。病毒和蠕虫并没有特定目标,它们随机地扫描目标,甚至和受损害的节点合作。表6.1列出了恶意软件的攻击。表6.1恶意软件的一般攻击鉴定和授权是用来确保基本安全的通用技术。鉴定要求一个实体(一个人或计算机)必须给出身份证据,用来验证:“你是否就是你?”。
授权确认一个实体在通过鉴定后能够访问资源,它回答了这样的问题:“在确认你就是你之后,允许你做什么?”。
加密是用来阻止偷听会话的主要技术。有两种主要的加密技术:密钥系统和公钥系统。
密钥系统:在这种安全系统中,一个密钥被用来加密数据或信息。例如,加密方法是对每一个字符增加一个整数。密钥系统的问题是如何安全的把码传给接收者。公钥系统:在这种安全系统中,发送者或接收者创建两个码,一个码是公共的(公有的),而另一个是保密的(私有的)。公钥系统用于两个目标:加密和数字签名。在公钥加密系统中,任何想发送加密文档给接收者的人,使用公有码加密文档。只有掌握私有码的接收者才能解密文档。考虑类似的情况,一个银行想让它的客户发送加密文档到银行,客户不用考虑它的安全性。银行委托邮局分发无锁的安全箱,只有银行有码打开这种箱子。任何人可购买安全箱,把加密文档放在箱里,锁住箱子,并把箱子寄给银行。另外一个公钥系统是数字签名,在这个系统中,加密是私有的,而解密的码是公有的。除了发送者,没有人能够创建加密的文档,但任何人都可解密文档。
6.2.1IIS和基于Windows的安全机制
大多数Web站点需要提供公有部分,受保护的部分以及受限制的部分。有些部分允许所有人访问,有些部分只允许员工访问,而有些部分只允许管理者访问。例如,当一个Web站点在数据库中存储它的客户的信用卡信息,则对数据库的访问必须受到限制。ASP.Net的安全特性帮助你解决这一问题以及其他安全问题。6.2Web应用的安全设计部署在IIS和Windows上的ASP.NetWeb应用和服务的安全性由IIS的安全性和Windows的安全系统管理,如图6.3所示。运行在IIS根目录,或运行在IIS目录创建的虚拟目录上的任何Web服务都由IIS安全机制管理。对Web应用和Web服务的所有访问都必须通过IIS,它分配给每个请求一个访问标记。访问标记使Windows操作系统执行访问控制表ACL(AccessControlList)以检查被请求的资源。每个文件有一个访问组(匿名的或需要凭证的)。IIS也支持IP地址及域名限制,通过请求者的IP地址或域名来决定响应或拒绝请求。IIS通过协议的安全套接层SSL(SecureSocketsLayer)系列产品支持加密的HTTP连接。SSL不保护服务器上的资源。相反的,它禁止窃听Web服务和远程客户间的会话。
图6.3IIS和基于Windows的ASP.Net结构IIS支持访问控制的多个层次,可在Windows计算机的控制面板的管理工具中选择层次。
(1)匿名:无访问控制。
(2)简单鉴定:由IIS管理,用用户名和口令鉴定用户。口令用不加密的文本发送。
(3)深度鉴定:类似于简单鉴定,除了口令以加密的文本形式发送。
(4)在NTLM或Kerberos安全方法中集成的Windows鉴定:它用Windows注册凭证鉴定用户。为了访问IIS中的服务,服务请求者必须创建一个Windows账号。(5)表格鉴定:开发者可在IIS之外设计他们自己的安全机制。如果部署了表格鉴定,所有未鉴定的请求通过HTTP客户端的再定向被定向到一个HTML表格。客户提供凭证并提交表格。
(6)护照鉴定:由微软提供的中心化的鉴定服务。该服务为成员节点提供单次登陆和主要摘要(profile)服务。6.2.2基于表单的安全
基于表单的安全用Web.config文件定义安全策略。Web.config文件中的第二个元素<system.Web>用来定义许多功能,包括对Web应用程序的鉴定和授权。表6.2列出了Web.config文件中的元素<system.Web>的部分子元素。下面的代码模板展示了表6.2中部分元素的应用。
<authenticationmode="[Windows|Forms|Passport|None]">
</authentication>
<identityimpersonate="[true|false]"
userName="[domain/user_name]"password="[user_password]"/>
</system.Web>
<system.Web>
<authorization>
<allowusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
<denyusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
</authorization>
</system.Web>
<system.Web><trustlevel="[Full|High|Medium|Low|Minimal]"originUrl=""/>
<securityPolicy>
<trustLevelname="Full"policyFile="internal"/>
<trustLevelname="High"policyFile="Web_hightrust.config"/>
<trustLevelname="Medium"policyFile="Web_mediumtrust.config"/>
<trustLevelname="Low"policyFile="Web_lowtrust.config"/><trustLevelname="Minimal"policyFile="Web_minimaltrust.config"/>
</securityPolicy>
</system.Web>
例如,下面的设置允许你用访问Windows时的注册名和口令访问Web应用:
<system.Web>
<authenticationmode="Windows"/>
<identityimpersonate="true"/></system.Web>
如果你指定了不同的注册名和口令,将根据提供的用户名和口令进行鉴定。例如:
<identityimpersonate="true"userName="admin"password="admPassWord"/>
这种选择允许用户用不同Windows账号执行不同的操作。表6.2Web.config中<system.Web>的子元素基于Windows的安全性要求Web页面的客户必须在运行Web应用或Web服务的服务器上有一个Windows账号。也可以创建一个Web应用,它有一个和Windows分离的安全系统,这个应用维护一个分离的凭证列表(用户名和口令)。下面的模板显示了使用基于表格安全的Web.config的格式。
<configuration>
<system.Web>
<authenticationmode="Forms">
<formsname="[name]"loginUrl="[url]"protection="[All|None|Encryption|Validation]"
path="[path]"timeout="[minutes]"
requireSSL="[true|false]"
slidingExpiration="[true|false]">
<credentialspasswordFormat="[Clear|MD5|SHA1]">
<username="[UserName]"password="[password]"/>
</credentials></forms>
</authentication>
</system.Web>
<system.Web>
<authorization>
<allowusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
<denyusers="[commaseparatedlistofusers]"
roles="[commaseparatedlistofroles]"/>
</authorization></system.Web>
</configuration>
模板的上部分(第一个system.Web元素)定义了通过用户名和口令进行鉴定,模板的下部分(第二个system.Web元素)定义了鉴定通过的用户的授权。
让我们考虑图6.4的例子,一个应用组织在三个目录下。目录“home”是根目录,它有两个子目录,分别是manager和admin,home目录包含了三个文件:home.aspx、LoginForm以及Web.config。下面的代码显示了如何在home.aspx页面添加访问控制。
<html>
<body>
<h1>HomePage</h1>
<hr>
Ifyouhaveamanagecredential,pleaseclickthebuttonbelow:
<formrunat="server"><asp:ButtonText="ForManagersOnly"OnClick="ViewManagerPage"
RunAt="server"/>
</form>
Ifyouhaveadmincredential,pleaseclickthebuttonbelow:
<formrunat="server">
<asp:ButtonText="AdministratorOnly"OnClick="ViewAdminPage"
RunAt="server"/>
</form></body>
</html>
<scriptlanguage="C#"runat="server">
voidViewManagerPage(Objectsender,EventArgse){
Response.Redirect("manager/managerPage.aspx");
}
voidViewAdminPage(Objectsender,EventArgse){
Response.Redirect("admin/adminPage.aspx");
}
</script>
图6.4鉴定和授权的文件和目录的组织示例当点击home.aspx页面的按钮ViewManagerPage时,就会调用相应的C#函数,该函数通过方法:
Response.Redirect("manager/managerPage.aspx");
访问managerPage.aspx。函数首先检查目录下用于鉴定的Web.config文件。home目录下的Web.config文件包含的鉴定设置如下:
<configuration>
<system.Web><authenticationmode="Forms">
<formsname="LoginForm"loginUrl="LoginForm.aspx">
<credentialspasswordFormat="Clear">
<username="mmj"password="dragonBall"/>
<username="Jones"password="jjdan"/>
<username="jJane"password="PairsPairs"/><username="Al"password="NeverBreak"/>
<username="Nelson"password="Orbit2Orb"/>
</credentials>
</forms>
</authentication>
</system.Web>
<configuration>当访问被Web.config文件保护的页面时,如果没有通过鉴定,访问被重定向到“forms”元素的loginURL属性给出的页面地址。如果通过鉴定,继续访问被保护的页面时,注册页面不再被激活。图6.5说明了访问的流程,包括鉴定和授权过程。
定义授权的Web.config文件分别放在目录manager和admin下,例如,假设下面两个Web.config文件分别放在目录manager和admin下:
<configuration><system.Web>
<authorization>
<denyusers="?"/>
<allowusers="Jones"/>
<allowusers="Nelson"/>
<denyusers="mmj"/>
<allowusers="Al"/>
</authorization>
</system.Web>
</configuration><configuration>
<system.Web>
<authorization>
<denyusers="?"/>
<allowusers="mmj"/>
</authorization>
</system.Web>
</configuration>三个用户:Jones,Nelson和Al,授权访问manager页面,而mml被明确拒绝访问managerPage.aspx,只有一个用户mmj被授权访问admin目录下的adminPage。
Web.config中的访问控制列表通过两个子标签<allow>和<deny>实现。对于<allow>元素,?表示允许匿名用户,*表示允许所有用户。对于<deny>元素,?表示拒绝匿名用户访问,而*表示拒绝所有用户访问。
图6.5授权过程为了测试如图6.5所示的目录和文件的组织,在IIS中创建一个虚拟目录并把这个虚拟目录和home目录链接。然后以下面的步骤测试页面:
(1)在你的浏览器中使用URL:http://localhost/home/home.aspx访问home.aspx。
(2)点击ViewManagerPage按钮。
(3)C#函数Response.Redirect将显示loginForm.aspx。
(4)输入有效的用户名和口令,例如分别把“Jones”和“jjdan”作为用户名和口令。(5)显示被保护的页面managerPage.aspx。现在你是一个鉴定通过的用户,被授权可以进行其他请求,并把这些请求记录在一个信息记录程序中。
(6)返回到home.aspx页面。
(7)再次点击ViewManagerPage按钮。
(8)这次不再询问用户名和口令,managerPage.aspx出现。因为随着请求一起被传送的鉴定信息记录程序根据ASP.Net表格鉴定模块(它对每一个请求进行监听)识别出你已是一个鉴定通过的用户,甚至识别你为Jones。(9)关闭你的浏览器,重新开始新会话,打开home.aspx。
(10)再次点击ViewManagerPage按钮,你被要求再次注册,因为包含你鉴定信息的信息记录程序是一个会话信息记录程序,这就意味着当你关闭你的浏览器时,它就被破坏。
(11)使用无效的用户名和口令重复上述步骤,例如用mmj和dragonBall,访问将被拒绝。
(12)点击ViewAdminPage按钮重复上述步骤。上面给出的例子有几个问题。口令以简单的文本形式存储。在credentialspasswordFormat="[Clear|MD5|SHA1]">的另外一个选项能够保护口令。
①MD5:使用MD5哈西算法对口令进行加密;
②SHA1:使用SHA1哈西算法对口令进行加密。
鉴定和授权按给定的顺序进行检查。如果列表很长,这个过程会较慢。进一步,如果列表需要随时改变,维护过程将会很困难而且易于出错。解决方案是用数据库存储用户名和口令。因为在数据库领域,数据库的读写问题已被很好的解决,访问和控制过程变得相对容易。6.2.3使用安全套接层
安全套接层(SSL)定义了加密协议,它对在HTTP和TCP/IP网络上的通信提供数据保密性和数据完整性(数字化签名)。IIS在它的SSL协议中用X.509码系统提供对Web应用的HTTPS安全访问。为了在Web服务器中使用HTTPS,需要一个由公码和私码组成的安全证书,在服务器上装了这个证书之后,客户就可以使用HTTPS连接访问服务器。
一个服务的安全证书类似于一个人的驾驶执照,它说明了这个服务在提供服务方面有一定的可信性。但它并不能保证服务的质量。证书由独立的组织或公司提供,例如,GeoTrust,GlobalSign,Thawte和VeriSign。在Windows2008服务器下安装SSL证书的步骤如下:
①打开Internet信息服务管理器;
②右键点击缺省Web站点并选择编辑绑定;
③从类型下拉列表中选择HTTPS;
④从SSL证书下拉列表中选择证书并点击OK。
为了测试证书是否安装成功,可以在浏览器中输入HTTPS地址访问一个服务,例如:https://localhost/secureConnectionServices/service1.svc
Windows通信基础(WCF)是最新的面向服务计算的部署环境。它扩展了ASP.Net以更好的支持面向服务的软件开发,特别是在可靠性和安全性方面有了很大提高。WCF是WinFx的一部分,WinFx是WindowsVista和7,Windows7,Wingdows2008以及Windows2010的一个新的编程环境。我们将在下一章使用WCF开发服务。在本章,我们将讨论WCF提供的安全性、可靠性以及事务性质。6.3Windows通信基础的可信计算6.3.1WS安全性
WCF在多个层次支持多种安全方法。安全方法包括鉴定、授权、加密以及完整性。部署了安全机制的层包括信息层和传输层。
鉴定:WCF支持在ASP.Net中讨论的所有的鉴定方法,包括IIS安全性、集成的Windows安全性以及基于表格的安全性。另外,它支持X.509证书,它使用公钥机制加密信息并以产生的数字签名作为凭证。X.509说明了公有码证书的标准格式以及鉴定路径有效的算法。授权:WCF支持在ASP.Net中讨论的所有授权方法,包括访问控制列表以及基于角色的授权。另外,它支持XSI标准,那是一个基于声明的授权方法。
传输安全:保护在网络中传输的数据。SSL(SecureSocketLayer)是一种在HTTPS协议中为数据加密的通用机制。传输安全性依赖于用户选择的绑定机制。例如,如果使用wsHttpBinding,安全机制是SecureSocketsLayer(SSL)。表6.3列出了WCF支持的绑定选项。表6.3WCF支持的绑定消息安全:不管传输层是否会对传送的数据加密,消息安全通过在消息发送到传输层之前,给消息加密并签名以确保消息的保密性。它意味着每个消息包含保持消息安全的必要的数据和消息头。因为消息头的组合有很多种,所以可以包含任意多种凭证。如果和其他服务交互,而该服务需要传输机制并不支持的特定凭证类型时,或者这个消息必须用于多个服务,而每个服务都需要不同的凭证类型时,这就变成了一个必要的要素。传输和消息安全性可在Web.config文件中定义,代码如下,这里wsHttpBinding用于说明传输安全,Windowscredential用于说明消息。
<system.serviceModel>
<bindings>
<wsHttpBinding>
<bindingname="myBinding">
<securitymode="Message"/>
<messageclientCredentialType="Windows"/>
</binding></wsHttpBinding>
</bindings>
</system.serviceModel>
下面来自“WCF在线指南”的代码演示了如何创建一个wsHttpBinding对象并初始化对象的域。
//Createthebindingforanendpoint.
NetTcpBindingb=newNetTcpBinding();
b.Security.Mode=SecurityMode.Message;
//CreatetheServiceHostforrunningacalculatorservice.UribaseUri=newUri("net.tcp://MachineName/tcpBase");
Uri[]baseAddresses=newUri[]{baseUri};
ServiceHostsh=newServiceHost(typeof(Calculator),baseAddresses);
//Addanendpointusingthebindingandanewaddress.
Typec=typeof(myService);
sh.AddServiceEndpoint(c,b,"MyEndpoint");
//Setacertificateasthecredentialfortheservice.sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine,
StoreName.My,
X509FindType.FindBySubjectName,
"");
try
{sh.Open();
Console.WriteLine("Listening");
Console.ReadLine();//PressEntertoterminate
sh.Close();}
catch(CommunicationExceptionce)
{Console.WriteLine("Commmunicationerror:{0}",ce.Message);
Console.WriteLine();
}
catch(System.Exceptionexc)
{Console.WriteLine("Anunforseenerroroccurred:{0}",exc.Message);
Console.ReadLine();}6.3.2WS可靠性
Web服务和Soc应用大都是基于Web及因特网的,不仅安全性,而且可靠性也是一个关注点。
OASIS(OASIS,2004)定义的WS可靠性是一个基于SOAP的规格说明,能满足对Web服务和SOC应用来说,至关重要的可靠消息的要求。当应用层的消息协议也必须保证某种程度的安全性和可靠性时,HTTP之上的SOAP就显得有些不足。这个规格说明定义了当前Web服务标准环境下的可靠性,它被设计成和其他的补充协议联合使用,并建立在以前的经验之上,例如ebXML消息服务(ebMS)。WS可靠性说明定义了以下可靠性特征:
①保证消息传送,或至少一次的传送语义。
②保证消息不被复制,或最多一次的传送语义。
③保证消息传送和不被复制,或者仅一次的传输语义。
④保证一组消息中消息传送的顺序。
WS可靠性支持可靠消息,这种可靠性与传输无关,基于SOAP协议提供的服务质量包括消息的可靠传送。可靠消息有下列特征:①可靠会话适用于通信双方都在线的场景。他们处理消息级的故障,包括丢失消息、复制消息和接收的消息不符合顺序。
②消息队列,例如MSMQ,主要处理当发送消息时,消息的接收者不在线的情况。它确保了发送者和接收者之间的可靠通信。
可靠性会话通过消息的标识,队列号,接收前得到消息的通知来实现。下面由(OASIS,2004)给出的例子说明了包含上述信息的请求以保证可靠性会话。<Request
xmlns="http://docs.oasis/wsrm/2004/06/wsreliability1.1.xsd"
xmlns:soap12="/2003/05/soapenvelope"
soap12:mustUnderstand="1">
<MessageIdgroupId="mid://20040202.103832@wsr"><SequenceNumnumber="0"groupExpiryTime="2005-02-02T03:00:33-31:00"/>
</MessageId>
<ExpiryTime>2004-09-07T03:01:03-03:50</ExpiryTime>
<ReplyPattern><Value>Response</Value></ReplyPattern>
<AckRequested/>
<DuplicateElimination/>
<MessageOrder/>
</Request>WCF可靠性会话是WS可靠消息协议定义的SOAP可靠消息的实现。
WCFSOAP可靠消息在两个端点间提供了可靠性会话,这里提供的可靠性是端到端的,不用考虑消息两端之间中介的数量和类型。这种端到端通道包含没有使用SOAP的任何传输中介,例如HTTP代理,或者使用了SOAP的中介(因为端点间传输的消息要求SOAP协议)。可靠性会话通道通过“交互”通信实现,因此通道连接的服务在流延迟的情况下,即在相对短的时间内,可并行运行并交换和处理消息。这种耦合意味着这些组件共同推进或共同失败,因此在它们之间不提供隔离。下面的配置文件显示了客户和服务之间通信时使用了reliableSessionOverHttps设置。
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<system.serviceModel>
<client>
<!thisendpointhasanhttps:address>
<endpointname=""
address=https://localhost/servicemodelsamples/service.svcbinding="customBinding"
bindingConfiguration="reliableSessionOverHttps"
contract="Microsoft.ServiceModelSamples.myService"/>
</client>
<bindings>
<customBinding>
<bindingname="reliableSessionOverHttps">
<reliableSession/><httpsTransport/></binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>6.3.3事务
事务是一系列动作的集合,包含信息交换和状态修改。为了满足请求或数据完整性目标,动作集合必须被看成一个单位或一个原子操作。一个事务中的动作必须全部完成,才是一个已完成的事务,并且是长期的数据库改变。事务的一个典型例子是电子账单的在线支付。至少有两个动作你的请求才会被激活:一个是从你的账户取款,另一个是对公司的账户存款。很显然,如果仅从你的账户取钱而没有存款是不可接受的,反之亦然。在计算机硬件设计中,我们有类似的情况叫做不可见操作。我们需要设计硬件指令在一步中执行两个操作:检查标记,如果标记未加锁,为标记加锁。这种不可见操作允许程序对资源执行互斥操作。
事务是应用级的,经常由较长的操作序列组成。采用硬件解决方案确保事务全部完成或全部不做是不可能的。因此执行事务的软件解决方案必须满足下列要求:
原子性:包含在事务中的原子动作必须全做或全部不做。也就是说,动作要么100%完成,要么一点也不做。即使硬件、软件发生失效,或断电,也必须保证原子性。一致性:事务的结果必须是一致的并能保持所有相关系统的数据的完整性。例如,在转账的情况下,如果从一个账户中提取100美元,则存到另一账户中也必须是100美元。
隔离性:实现事务原子性和一致性的原则是定义一组确认前的动作,它是暂时性的并且对其他活动不可见。当动作中的所有参与方成功完成了它们的部分,仲裁者(独立机制)要求所有参与方同时确认。在确认结束时,仲裁者检查结果的一致性,并只有当结果一致时,才确保结果对其他活动可见。如果任何一方没有执行它的动作,或者动作集合的结果不一致,仲裁者将要求所有方停止或者回滚到执行事务之前的状态,这样就好像没有执行过动作一样。在事务完成之前事务的所有操作必须是隔离的。持久性:一旦事务被仲裁者标记为全部完成,结果将会放在最终目标中,例如数据库,并将是长久的。参与的任何一方不能取消已经被确认的动作。如果需要进行变更,则会启动一个新的事务。
WCF实现了WS原子事务(WSAT),它是一个由BEA,IBM以及Microsoft开发的并得到许多公司和组织支持的互操作事务协议,目前已成为OASIS标准(http://docs.oasis/wstx/wsat/2006/06)。WS原子事务的WCF实现是基于微软分布式事务仲裁者(MSDTC)的事务管理器。WSAT采用Web服务消息完成分布式事务,在异质事务结构中以互操作方式做协调。WSAT用两阶段确认协议保证分布式应用、事物管理者和资源管理者之间事务的原子性。WCF支持多种事物标准,包括WSAT,OleTrasaction以及TransactionNego。当完成客户应用和服务应用间的事务时,所使用的事务协议由绑定决定,绑定是由客户选择的端点上的服务暴露的。有些WCF系统提供的默认绑定是OleTransactions协议,并以此作为事务的传播格式,而其他系统的默认绑定是WSAT。在一个给定的绑定中,事务协议的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会体育指导员工作技能知识考核试卷含答案
- 抽纱挑编工操作知识模拟考核试卷含答案
- 2025-2026学年大班社会安全标志说课稿
- 漆器制胎工安全宣传水平考核试卷含答案
- 高炉运转工岗中认知考核试卷含答案
- 宝剑工安全培训考核试卷含答案
- 2025-2026学年保护生命说课稿
- 2025-2026学年大班动作领域说课稿
- 2025-2026学年变色大象故事说课稿
- 2026年防水建筑材料制造行业市场现状分析报告及未来五至十年碳中和与循环经济
- 2026秋人教版(新教材)一年级数学(上)第四单元学情测试卷含参考答案
- 中国慢性肾脏病筛查、诊断及治疗临床实践指南(2026版)
- 室内装修改造工程安全风险评估报告
- 【沪教版必修第一册】高一数学第4章幂函数、指数函数与对数函数(单元复习课件)
- 2026年小学生心理健康教育课件
- 《JBT 15061-2025提耙式刮泥机》专题研究报告
- 2025年高考数学试题评价及高三复习备考策略讲座
- 《Premiere视频剪辑技术》全套教学课件
- 08S305-小型潜水泵选用及安装图集
- 电气控制作业.docx
- preps拼版详细教程
评论
0/150
提交评论