- 浏览: 2162754 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
BizTalk 开发系列(四十) BizTalk WCF-SQL Adapter读取SQL Service Broker消息
- 博客分类:
- [网站分类]ASP.NET
SQL Service Broker 是在SQL Server 2005中新增的功能。Service Broker 为 SQL Server 提供队列和可靠的消息传递,可以可用来建立以异步消息为基础的应用。当然从题目大家可能也看出来了。我们本文主要不是为了讲SQL Service Broker(SSB),而是讲一下如何使用BizTalk WCF-SQL Adapter来访问SSB的数据。
SQL Service Broker(SSB)
为要便于大家更好的接下来的示例,我们还是概况的讲一下SSB的相关知识。更详细的背景信息大家可以在Service Broker开发人员信息中心中了解到。
SQL Service Broker实现的功能有点类似于咱们已经很熟悉的MSMQ,但它是在数据库实现消息队列这样的功能。Service Broker 可以帮助开发人员生成可伸缩的、安全的数据库应用程序。此项技术是数据库引擎的一部分,它提供一个基于消息的通信平台,使独立的应用程序组件可以作为一个整体来运行。Service Broker 包含用于异步编程的基础结构,可用于单个数据库或单个实例中的应用程序,也可用于分布式应用程序。
Service Broker 提供了生成分布式应用程序所需的大部分基础结构,从而减少了应用程序的开发时间。利用 Service Broker 还可以轻松缩放应用程序,以容纳应用程序接收的通信流量。
WCF-SQL Adapter
WCF-SQL Adapter是BizTalk Server 2009中新增的用于替换之前使用的SQL Adapter。WCF-SQL中新增了对于SQL Server新的数据类型、事件通知等的运行。以下是WCF-SQL中相对于之前SQL Adapter的功能比较:
功能 |
SQL Adapter |
WCF SQL Adapter |
在表和视图上执行创建、读取、更新和删除语句 ;执行存储过程和生成T-SQL语句 Execute create-read-update-delete statements on tables and views; execute stored procedures and generic T-SQL statements |
部分支持(发送部分仅支持存储过程和updategrams |
Yes |
通过FOR XML实现数据轮询 Database polling via FOR XML |
Yes |
Yes |
通过表格实现数据轮询(不添加 FOR XML) Database polling via traditional tabular results |
No |
Yes |
通过SQL查询通知实现数据库推送 Proactive database push via SQL Query Notification |
No |
Yes |
通过扩展适配器配置去更改连接机制和行为 Expansive adapter configuration which impacts connection management and transaction behavior |
No |
Yes |
支持多个事务,即允许将多个表和存储过程的操作放到一个原子事务中。 Support for composite transactions which allow aggregation of operations across tables or procedures into a single atomic transaction |
No |
Yes |
丰富的数据浏览和检索找到并选择数据库操作 Rich metadata browsing and retrieval for finding and selecting database operations |
No |
Yes |
支持最新的数据类型如XML和SQL Server 2008平台 Support for the latest data types (e.g. XML) and SQL Server 2008 platform |
No |
Yes |
可以被BizTalk 应用程序之外的WCF或HTTP客户端重用。 Reusable outside of BizTalk applications by WCF or basic HTTP clients |
No |
Yes |
通过WCF特有的组件和自定义WCF行为扩展适配器和配置 Adapter extension and configuration through out of the box WCF components or custom WCF behaviors |
No |
Yes |
动态生成WSDL,实时反映当前系统状态替代固定的契约需要明确的更新。 Dynamic WSDL generation which always reflects current state of the system instead of fixed contract which always requires explicit updates |
No |
Yes |
BizTalk WCF-SQL Adapter读取SQL Service Broker消息
OK, 上面讲的都是微软自家的东西。当然自家的东西兼容性要好一点。那么本节的标题其实我是故意加了一个“BizTalk”的,因为微软自从看到Adapter的价值之后就开始将Adapter Pack拆分出来卖。也就是说你也可以不购买BizTalk而是单独购买Adapter Pack通过自已开发的应用程序来访问SAP、Oracle、SQL Server等业务系统。
转到正题,以下我们将来具体讲一下演示的步骤,为了简化BizTalk程序我们将不使用Orchestration。
1.创建SSB应用
在以下操作中我们将创建数据库,创建Service Broker的消息、队列、服务、契约等。
GO
CREATE DATABASE CBCYE_SSB
ALTER DATABASE CBCYE_SSB
SET ENABLE_BROKER;
GO
USE CBCYE_SSB;
GO
CREATE MESSAGE TYPE
[//CBCYE_SSBSample/RequestMessage]
VALIDATION = WELL_FORMED_XML;
CREATE CONTRACT [//CBCYE_SSBSample/SampleContract]
([//CBCYE_SSBSample/RequestMessage]
SENT BY INITIATOR
);
CREATE QUEUE InitiatorQueue1DB;
CREATE SERVICE
[//CBCYE_SSBSample/InitiatorService]
ON QUEUE InitiatorQueue1DB;
CREATE QUEUE TargetQueue1DB;
CREATE SERVICE
[//CBCYE_SSBSample/TargetService]
ON QUEUE TargetQueue1DB
([//CBCYE_SSBSample/SampleContract]);
2.BizTalk接收端口和位置
新建一个BizTalk应用程序的端口和位置。在端口类型中选择WCF-SQL,如果未针对WCF-SQL创建独立的适配器可以选择WCF-Customer,接收管道全部选择PassThruReceive。然后在Binding中选择sqlbinding。在端口地址中输入:mssql://localhost//CBCYE_SSB
打开Binding配置页,Inbound轮询的配置项中:
如上图所示,设置PooledDataAvailableStatement的值为:SELECT COUNT(*) FROM TargetQueue1DB WITH (NOLOCK) //设置晌应条件
设置PoolingIntervallnSeconds的值为:2 //设置轮询间隔时间
设置PollingStatement的值为: //设置执行脚本
DECLARE @RecvMsg XML;
RECEIVE TOP (1)
@DlgHandle=conversation_handle,
@RecvMsg = CAST(message_body as XML)
FROM TargetQueue1DB;
IF NOT (@DlgHandle IS NULL)
BEGIN
END CONVERSATION @DlgHandle;
SELECT @RecvMsg AS ReceivedMessage;
END
设置完之后,需要创建一个发送端口用于订阅来自接收端口的消息。并将消息的内容以文件的形式发往文件夹。
3.发送消息到目标队列
在SQL Management Studio的查询中输入以下脚本,将消息发往目标队列
SELECT @RequestMsg = N'<CBCYEMsg>Hello, World</CBCYEMsg>';
DECLARE @DlgHandle UNIQUEIDENTIFIER;
BEGIN DIALOG @DlgHandle
FROM SERVICE
[//CBCYE_SSBSample/InitiatorService]
TO SERVICE
N'//CBCYE_SSBSample/TargetService'
ON CONTRACT
[//CBCYE_SSBSample/SampleContract]
WITH ENCRYPTION = OFF;
SEND ON CONVERSATION @DlgHandle
MESSAGE TYPE
[//CBCYE_SSBSample/RequestMessage]
(@RequestMsg);
4.修改配置以接收到实际发送的消息
打开目标文件夹,你可能会发现接收到的消息并不是之前发送的消息内容,而是一个完整的DataSet的XML消息。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><Polling xmlns="http://schemas.microsoft.com/Sql/2008/05/Polling/%22><PolledData><DataSet xmlns="http://schemas.datacontract.org/2004/07/System.Data%22><xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema%22 xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element msdata:IsDataSet="true" name="NewDataSet"><xs:complexType><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="ReceivedMessage" type="xs:string"/></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><NewDataSet xmlns=""><NewTable><ReceivedMessage><![CDATA[<CBCYEMsg>Hello, World</CBCYEMsg>]]></ReceivedMessage></NewTable></NewDataSet></diffgr:diffgram></DataSet></PolledData></Polling>
那么我们需要告诉WCF-SQL适配器,消息内容的路径。打开WCF-SQL的配置,
在Messaging项中选择path,在表达式中输入:/*[local-name()='Polling']/*[local-name()='PolledData']/*[local-name()='DataSet']/*[local-name()='diffgram']/*[local-name()='NewDataSet']/*[local-name()='NewTable']/*[local-name()='ReceivedMessage']
在编码中选择String。
最后,再次发送消息到目标队列中。我们就可以在输出文件夹中查看到我们发送的消息:
总结
SQL Service Broker作为在SQL Server实现的异步消息应用基础。BizTalk提供了比较好的支持,对于这两种技术的更多、更价值的应用,可能还需要业务人员和开发人员在不断的尝试中才能知道。
发表评论
-
where T:new() 是什么意思
2014-04-18 09:26 1450where T:new() 是什么意思 经常看到方法后面 ... -
好久没写blog了
2012-05-21 18:43 2好久没写blog了 -
test
2011-03-19 09:48 815testddddddddddd -
QQ自动发日志分析
2011-03-10 18:15 1261首先列举比较重要的问 ... -
test
2011-02-23 18:03 803test -
test
2011-02-23 17:53 873test -
为啥cnblogs的数据不能导了
2011-02-23 11:03 908为啥cnblogs的数据不能导了内容 -
如何保护.net中的dll文件(防破解、反编译)
2010-07-30 00:28 1486.net是一种建立在虚拟机上执行的语言,它直接生成 MSIL ... -
提搞网站访问速度可做哪些优化
2010-08-08 15:30 1116一、 服务器优化 ... -
ASP.NET(c#)如何判断浏览器是否支持cookies
2010-07-29 09:33 1711实例代码: 下面是写cookie ... -
N点虚拟主机管理系统(For Windows2003/2008)功能及介绍
2010-04-09 11:23 2258N点虚拟主机管理系统是 ... -
使用c#+(datagrid控件)编辑xml文件
2010-04-06 09:13 1163对xml文件的记录进行删除,修改,或增加新记录。 利用了d ... -
HTTP代理模块(HTTP Proxy)
2010-04-04 10:19 3045HTTP代理模块(HTTP Proxy ... -
Error 80040154 retreiving COM Class factory
2010-03-29 09:23 22481.ask: Greetings, I have ... -
petshop4.0 详解之二(数据访问层之数据库访问设计)
2010-03-27 11:08 1066在系列一中,我从整体上分析了PetShop的架构设计,并提及了 ... -
分享十五个最佳jQuery幻灯插件和教程
2010-03-25 09:17 2005<p>在网站前端中使用jQuery库已经变得越来越 ... -
20个软件开发常用设计文档大全下载
2009-08-27 10:22 965搜集了一些软件开发的常用文档,分享给大家 总下载地址: h ... -
asp.net 在线 mp3,wma, avi
2009-09-04 13:58 9291.前台js<script type="tex ... -
sql db link string
2009-09-06 21:52 978SQL Server ODBC Standar ... -
ASP.Net2.0小技巧 保持滚动条的位置 焦点移动到某个控件 $符号轻松的使用FindControl
2009-09-11 11:05 1293您可能不知道的ASP.Net2.0 ...
相关推荐
WCF-SQL Adapter, as well as how to expose WCF services from BizTalk. The user will learn both polling and query approaches to working with the WCF-SQL Adapter and how to expose different services in ...
本主题将深入探讨BizTalk Server 2009中的WCF SQL适配器以及如何利用它来实现SQL Server查询通知。这些功能极大地增强了 BizTalk 与数据库交互的能力,使得实时数据更新成为可能。 WCF SQL适配器是BizTalk Server中...
BizTalk是微软推出的一款企业服务总线(Enterprise Service Bus,简称ESB)产品,用于帮助实现企业内部或跨企业的应用程序集成。本文将围绕BizTalk的基础入门操作,以“HelloWorld”为示例进行讲解。 首先,BizTalk...
这个开发系列的文档很可能是逐步介绍如何使用 BizTalk Server 进行开发和配置的一系列教程。在这个“Hello World”入门教程中,我们将探讨BizTalk Server的基础知识,以及如何通过管理控制台创建一个简单的应用程序...
7. **BizTalk Adapter Framework**:BizTalk Server包含一组适配器,可以与各种系统集成,如SQL Server、FTP服务器、SMTP服务器等。这使得 BizTalk 发布的Web服务能够轻松地与这些系统交互。 总之,BizTalk Server ...
SQL适配器是BizTalk Server提供的一个关键组件,它使得BizTalk能够与SQL Server数据库进行交互,包括读取、写入和更新数据。在 BizTalk 2010 中,我们可以通过配置接收位置和发送端口来设置SQL适配器,从而实现对SQL...
BizTalk Server 2006 是一款由微软开发的企业级业务集成服务器,它允许组织通过标准化的消息传递机制来连接不同的应用程序、系统和服务。BizTalk Server 2006 提供了多种组件,包括: - **消息传递引擎**:用于接收...
1. **BizTalk Server概述**:了解BizTalk Server的基本架构,包括BizTalk Server如何处理消息、Orchestrations(工作流)、Adapters(适配器)以及Enterprise Service Bus (ESB)工具包的作用。 2. **BizTalk Server...
- **业务流程集成**:通过示例展示如何将WCF服务与BizTalk Server等其他企业服务集成。 - **性能优化**:提供技巧和最佳实践,帮助提高WCF服务的性能和效率。 - **跨平台通信**:探索WCF支持的不同通信协议,如HTTP...
《BizTalk应用开发指南》 BizTalk Server是由微软提供的一个强大的业务流程管理和企业应用集成平台,它充分利用了面向服务的架构(SOA)模式,将复杂的业务流程、应用程序接口和贸易伙伴交互转化为有序的消息传递、...
四、BizTalk Adapter Pack BizTalk Adapter Pack提供了与多种第三方系统的接口,使得BizTalk可以无缝集成到现有的IT环境中。例如,你可以使用SQL Server适配器进行数据库交互,使用WCF适配器与Web服务进行通信。 五...
根据给定文件中的标题、描述、标签以及部分内容,本文将详细介绍如何配置Windows Server 2016集群结合SQL Server 2016 AlwaysOn功能,并集成BizTalk Server 2013来构建一个高可用性与容错性的企业级集成解决方案。...
- **Console application开发**:使用.NET Data Provider for SAP执行表选择操作,或者利用WCF LOB Adapter执行RFC/BAPI调用。 - **ASP .NET Web application开发**:同样支持表选择和RFC/BAPI调用,但适用于Web...
企业应用程序集成、工作流程自动化、架构、面向服务的架构、SOA、.NET、Visual Studio .NET、 BizTalk Server、 XML、XML Schema、Web服务、人员工作流服务、HWS、工作流
例如,你可以学习如何使用 FTP 适配器接收外部系统的文件,通过BizTalk 解析文件内容,再将数据插入到SQL Server数据库中,或者如何使用WCF适配器与SOAP Web服务进行交互。 通过这个“01_BizTalk_入门”教程,你...
《BizTalk 2006(r2)与Oracle适配器的应用实例解析》 BizTalk Server 2006 R2是一款由微软推出的强大的企业级集成平台,它提供了丰富的工具和功能,使得企业系统间的通信变得更为高效和便捷。在众多的适配器中,...
在ESB架构中,BizTalk Server充当着服务的中心枢纽,通过提供一系列的服务集成能力,帮助实现企业的业务流程自动化和服务交互。 1. **EAI与ESB的区别**:BizTalk Server作为一种ESB解决方案,与传统的企业应用集成...
- **BizTalk Adapter Framework**:提供一系列适配器,支持与多种系统(如数据库、ERP、Web 服务等)的连接。 - **Business Activity Monitoring (BAM)**:实时监控业务流程性能,提供关键业务指标的可视化分析。 ...
2. **适配器技术**:BizTalk Server 包含一系列预建的适配器,用于与各种系统和协议进行通信,例如SQL Server、FTP、SMTP、HTTP、WCF等。这使得BizTalk能轻松集成内部和外部系统。 3. **消息引擎**:BizTalk 的消息...