网站内容百度不收录,北京通州住房和城乡建设部网站,网站动态背景怎么做,东莞cms建站模板当我在为全球酒店在线预订系统做架构设计时#xff0c;我发现一个头疼的问题是如何保证系统与分布在全球各地的酒店之间完成消息的交互#xff1f; 一个妥协的办法是#xff0c;我们为酒店管理者提供管理功能入口#xff0c;管理人员可以将酒店的客房及客房类型的数据输入到… 当我在为全球酒店在线预订系统做架构设计时我发现一个头疼的问题是如何保证系统与分布在全球各地的酒店之间完成消息的交互 一个妥协的办法是我们为酒店管理者提供管理功能入口管理人员可以将酒店的客房及客房类型的数据输入到系统的数据库中。发布到在线预订系统中的客房数据必须是预留的如此方可以避免在线预订者与酒店本身顾客对于客房资源的争用。 客房资源虽然得到了妥善的安排但造成的问题是客房可能会被闲置从而造成资源的浪费。例如某酒店为在线预订系统预留了50间客房。为了保证在线 预订系统的顾客可以顺利地预订到合适的客房这50间客房不允许非在线预订者预订。假设整个酒店共有200间客房如果150间客房均已入住了顾客那么 即使酒店还空着这50间客房对于那些实际到酒店订房的客人而言酒店的大堂经理也只能抱歉地说客满了。 我们当然可以及时地更新这些数据然而这会给管理员带来工作上的负担。考虑全球时区不同的情况有可能每个酒店的管理员都需要24小时的值守。 最好的办法当然是让各个酒店的数据与在线预订系统的数据实现共享。然而这会带来三个问题 1、 全球的酒店系统需要定义统一的接口标准 2、 如何保障酒店数据访问的安全性 3、 全球的各个酒店可能会使用不同的系统如何保障它们与在线预订系统之间的互操作性 SOA可以使得这些问题迎刃而解。虽然我们很难要求全球的酒店系统都遵循统一的酒店接口标准但鉴于酒店的行业特征定义统一的服务契约Service Contract是完全可行的。当然我们首先需要解决消息的定义如此我们就可以定义如下的服务契约 C#语言: [ServiceContract] ReservationResponse Reserve(ReservationRequest request) ; 自从Web Service诞生以来对于Web Service安全性的讨论就没有停止过。例如Microsoft推出的WSE。.NET 3.0下的WCF则完全支持WS-Security、WS-Trust和WS-SecureConversation等安全策略。如果再考虑用户的权限控 制以及WAN和LAN的防火墙配置数据访问的安全性可以得到较好的保证。 SOA本身就是为互操作性interoperability而生的这也正是SOA的最大价值体现。只要提供了Web Service我们就可以通过WCF调用这些服务。如果有的系统无法提供Web Service例如RPG和COBOL我们可以通过Host Integration ServerHIS使得应用程序接口能够实现.NET Web Service。 全球酒店在线预订系统的体系架构图如图1所示 图1 全球酒店在线预订系统的体系架构图 用户可以通过PC、laptop或者PDA访问在防火墙保护下的酒店在线预订系统查询/预订/退订房间。系统通过WCF技术跨应用程序地访问各个酒店提供 的Web Service。这些酒店系统分布在世界各地它们实现Web Service的方式可能是WCF、WebSphere也可能通过Host Integration Server实现。这些Web Service都遵守一个共同的服务契约并被定义为统一的服务接口。 为了定义与管理酒店的业务流程与工作流系统还必须部署BizTalk Server。此外该服务器还要负责管理事务处理异常消息的传递。 没有SOA和Web Service要实现这样的全球酒店在线预订系统是很难想象的特别是新设计的在线预订系统还必须考虑兼容旧有的酒店系统。此外我们不能奢望酒店的预 订服务流程是一成不变的利用SOA可以很好地隔离服务的提供者与调用者之间的依赖实现系统的松散耦合。只要在设计中遵循了“服务是自治的”这一原 则并且能够较好地定义服务的边界即使服务的实现发生了变化对于整个系统而言也不会严重到伤筋动骨的地步。重要的是我们必须改变系统设计的思路与 精神利用面向服务而非面向对象的方式来考虑架构的整体设计。 转载于:https://blog.51cto.com/wayfarer/279916