基于服务数据库间的消息传递

时间:2022-09-05 02:45:31

基于服务数据库间的消息传递

摘要:某公司的管理层想知道在一年的任何点的确切的年销售以帮助他们计划未来的策略。集合年销售数据是存储在TotalSalesDB数据库中。销售事务详情被存储在SalesDB数据库中。为了保持的销售数据更新,需要确保无论何时任何定单被处理和在SalesDB数据库中交货日期被更新的时候,定单的总钱数,应该被添加到TotalSalesDB数据库的总年销售中。为了解决上述问题,需要在数据库中实现服务。该文详细解释了如何通过服务完成上述任务。

关键词:服务;数据库;服务;消息;协议;队列

Message Passing between Databases Based on Service Broker

YOU Ying, ZHOU Wei

(Wuxi Institute of Technology,Wuxi 214121,China)

Abstract: A management of a company would like to know the exact year of any point of the annual sales to help them plan for the future strategy.Collection of annual sales data is stored in the TotalSalesDB database.Sales transaction details are stored in the SalesDB database.In order to maintain sales data updated whenever the need to ensure that any orders are processed and SalesDB database is updated when the delivery date,the total amount of money orders,should be added to the database TotalSalesDB total annual sales.In order to solve these problems,service agent is needed to achieve in the database.This article explains in detail how to accomplish these tasks through the service agent.

Key words: service broker;database;service;message;contract;queue

1 服务

服务提供了一个平台,在它之上,允许数据库开发人员创建服务,通过发送和接收消息相互通信。服务是为交流提供端点的数据库对象。一个服务发送请求消息到另一个服务以使用提供的功能。

2 创建服务架构

服务是基于服务架构的。这个架构应该由下面的数据库对象组成。

1)服务:是一个可为对话设置的地址端点。服务消息被从一个服务发送到另一个。参与对话的服务是两个类型是发起者和处理服务。发起者服务初始化服务并且发送消息给处理服务。

2)消息:是服务间交换的数据。

3)消息类型:定交对话中参与者之间的消息的内容。消息类型对象定义了消息类型的名称和消息可以包含的内容的类型。

4)协议:是参与程序间的约定,它定义他们之间将交换的消息。有些协议必须在参与对话的每个参与数据库上创建。

5)队列:是一个存储消息的容器。每个服务与一个队列关联。当消息被发送给服务的时候,服务在队列中放置消息。队列以表的形式表示,这里每个消息是一行。每个行包含消息和它的信息,例如消息类型,发起者和目标服务。

6)服务程序:是一个提供逻辑给服务的程序。当一个消息被服务收到的时候,服务自动初始化服务程序并且将消息发送给程序。

3 实现两个服务间的对话过程

在服务架构中,各种服务通过发送和接收消息互相对话。消息从一个服务发送到另一个以处理当服务接收消息的时候,它验证消息是否与协议中指定的类型一样。在验证之后,消息被添加到队列中。每个服务有与它关联的服务程序。服务程序接收队列中最上面的消息并且处理它。在处理完成之后,响应或确认也可以被发送到发起者服务。

两个服务间的对话过程,如图1所示。

服务程序通过服务发送和接收消息。消息从一个服务发送到另一个以处理。当服务接收消息的时候,就验证消息是否与协约中指定的类型一样。在验证之后,消息被添加到队列中。每个服务有与它关联的服务程序。服务程序接收队列中最上面的消息并处理。在处理完成后,响应或确认也可以被发送到发起者服务。

4 实现服务

为实现服务,首先创建服务对象例如消息,队列,协议,服务。接着,开始一个对话。在对话开始之后,对象可以通过发送和接收消息互相通信。

第1步:创建TotalSalesDB数据库和SalesDetails表,并添加数据。

执行后,如图2所示。看到的是2009年初始年销售记录情况,总额为25000.00元。

图22009年初始年销售记录情况

第2步:书写发送消息方的脚本。

第3步:书写接收消息方的脚本。

第4步:SalesOrderHeader表中创建触发子,启动会话,发送消息。

第5步:创建存储过程,接收消息。

第6步:修改队列,有消息进入,自动执行此存储过程。

第7步:验证。

在2009-07-20 16:43:54,有一笔新的定单1553.1035元发生在SalesDB数据库中。执行后,如图3所示。

图32009-07-20 16:43:54发生了一笔新的定单

执行后,会看到TotalSalesDB数据库中总的销售额TotalSales被更新,总额为26553.1035元,如图4所示。

图4总的销售额被更新

5 结束语

任务被完成。凡是在任何点只要有新定单在SalesDB数据库中产生,就会看到TotalSalesDB数据库中总的销售额TotalSales被更新。服务也可用于大型分布式程序,处理位于不同位置的多个数据库服务器的数据。例如信用卡服务的场景。当持卡的消费者通过信用卡进行了购买,信用卡详情被难证购买事务被完成。而且,消费者必须为事务支付的总数的实体被存储到发行信用卡的银行的数据库中。在这个周期结束的时候,一个统一的账单被发送给消费者以接收信用数。消费者也可以通过银行网点或电话服务随时查询自己的消费情况。而服务是基于消息的通信平台,它有助于维护可靠的查询处理和通信进行。

参考文献:

[1] 刘辉.零基础学SQL Server 2005[M].北京:机械工业出版社,2007.

[2] 钱雪忠.数据库与SQL Server 2005教程[M].北京:清华大学出版社,2007.

[3] 孙全党,张军,钟德源,等.SQL Server 2005数据库开发应用教程[M].北京:电子工业出版社,2008.

[4] 詹英.数据库技术与应用SQL Server 2005教程[M].北京:清华大学出版社,2008.

上一篇:计算机硬件资源管理系统中数据库的设计 下一篇:椭圆曲线在WSN的密钥管理中的应用