BizTalk开发系列(二十六) 使用Web Service
Web Service是在构建SOA平台中广泛使用的技术。在BizTalk开发过程中使用SOAP适配器接收和发送 Web Services 请求。业务流程可以发布为 Web Services 并使用外部 Web Services。由于Web Service是基于Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等内容比较丰富。这里仅探讨在 BizTalk中如何使用Web Service。
如下图所示,我们构造了这样一个场景:数据库中存储Addressbook表。我们通过BizTalk将发布Web Service接收添加数据到数据库表中。如果在数据库操作成功的话则返回受影响的行数。如是失败的话则返回异常信息。
在设计流程过程中,需要添加异常捕获形状接收在数据库操作过程中产生的异常信息。将错误信息借助双向端口的Fault Port将异常信息返回给请求系统。注意在异常处理模块中结束流程,否则会产生错误:
must receive before sending a message whose messagetype corresponds to a requestreponse operation on an implemented port
发布架构为Web Services
BizTalk设计器通过使用BizTalk Web Services发布向导将流程或架构发布为Web Service. MSDN推荐仅将架构发布为Web Service。“如果您想要更详细的解释,那就是松散耦合! 这样做使您在更改业务流程时具有更大的自由性,无需中断调用方。”。 虽然不是很赞成松散耦合这个观点,因为通过比较两种方式发布出来的Web Servcie最终都是通过注入的方式调用全局缓存的流程类库。
但是还是建议仅将架构发布为Web Service。因为如果仅将架构发布为Web Service的话生成的Web Service项目仅在需要使用的Schema.但如果将流程发布为Web Services的话可能一些其他的架构也会暴露在Web Services的项目中。比如上图所示的流程(Schema和流程在一个同项目文件中)中如果使用发布流程的话则在流程中使用的添加数据的架构也会暴露 在Web Service中。这样是不太安全的因为数据库操作的架构包含存储过程名称,参数及类型之类的信息。
[通过发布架构产生的Web Service] [通过发布流程产生的Web Service]
当然直接选择发布流程的话就不需要设置方法和参数名等信息简化了发布的过程。选择哪种方式可以看实际情况而定。
讨论了两种发布方式的区别下面提示Step by Step的方式发布架构为Web Service。
1.在Visual Studio开发环境的工具栏下找到BizTalk Web Service发布向导,或者可以在开始-程序-Microsoft BizTalk Server 2006目录下找到BizTalk Web Service发布向导。
2.在创建 Web Service 页面下选择发布架构为向导。发布流程的方式比较简单将在之后讨论。
3.在Web Service定义页面。可以分别对这些节点命名。当然还可以根据实际需要对其项目进行添加、删除、修改等操作。注意方法名称应该与Orchestration设计过程中使用的端口的操作名称一致。
4.输入目标命名空间,这个命名空间是在SOAP请求消息中使用的。所以可以不跟架构中使用的消息一致。
5.选择发布位置,这里的名称是虚拟目录的名称。如果有旧版本的相同名称的话需要选择覆盖安装。另外选择访问方式和为BizTalk程序创建接收位置。
6. 至此将架构发布成了Web Service.窗口中提示的路径是Web Service项目保存的路径。可以直接打开项目源码,(但最好不要做改动,如果不是很熟悉的话。)
同时可以在IIS里查看到新添加的虚拟目录
发布流程为Web Service
1.发布流程为Web Service的过程比较简单,接上面第2步开始选择发布流程为Web Service。
2. 建议在Visual Studio中使用工具菜单下的Web Services发布向导,这样这一步就可以直接定义到项目中的动态库。
3.选择需要发布的流程和端口。
4.后续的部署跟上面是一致的。可以从第4步开始设置。
BizTalk Application绑定相应的Web Service。
这一过程比较简单,如果在发布向导的时候已经选择了为应用程序产生接口的话直接在应用程序配置窗口选择相应的接收位置即可。
BizTalk消费Web Service.
在BizTalk的应用程序中引用Web Service的方法跟一般的.NET应用程序类似。
1.在BizTalk应用程序中添加Web引用
2.选择本地计算机上的Web服务,在列表中选择相应的服务。添加相应的名称之后可以在类型窗口查看到相应的端口类型和消息类型。
3.在流程中创建消息时选择对应的Web Message Types。创建端口时也同样使用已经存在的端口类型,即引用Web Services创建的端口类型。
4.项目部署之后,在配置端口时选择类型为SOAP,在配置页面输入Web Service路径。
Web Services的测试
在.NET开发 Web Services的过程中常常会采用页面输入的方式对Web Service进行测试。但是BizTalk生成的Web Service项目已经在Web.Config配置文件中禁止HTTP GET和HTTP POST方法。因此需要通过使用XMLSpy或SoapUI等工具对Web Service进行测试。
我们来测试本次Sample的场景,在SOAPUI中新建一个Project。在请求参数中将“?”更改为相应的数值。发送请求,则返回受影响的行数。测试结果跟预期的一致。
另外,由于我们需要测试返回错误消息的情况因此在数据库中将名称字段设为主键。然后根据发送相同的请求参数返回错误信息。请注意,红线部分是在异常处理模块里通过字符串构造的方法添加的。
总结
经过以上的探讨基本上涵盖了SOAP Adapter的基本应用。本Sample的代码可以已经上传可供下载:BTSSOAP[www.cbcye.com].zip
BizTalk开发系列(二十六) 使用Web Service的更多相关文章
- BizTalk开发系列(二十八) MSMQ 适配器
MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...
- BizTalk开发系列(二十二) 开发自定义Map Functoid
尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...
- BizTalk开发系列(二十五) SQL Adapter
SQL Server 是.NET开发的首选数据库.当然开发BizTalk应用程序很多也离不了SQL Server.针对SQL Server的数据操作BizTalk 提供了SQL Adapter作为与数 ...
- BizTalk开发系列(二十四) BizTalk项目框架建议
Asp.NET有MVC框架,大部份的开发都是按照MVC进行的.BizTalk是面向消息的开发,不能完全采用分层的开发模式.而微软只提供了 BizTalk项目开发的基本策略,通过分析相关的Complex ...
- BizTalk开发系列(二十) 类型作用域
Orchestration中的Type概念跟.NET 里的Class一样,可以在Orchestration开过过程中将多个实例绑定到一种类型.Orchestration 视图里包括的类型有Port T ...
- BizTalk开发系列(三十六) Orchestration单实例执行
BizTalk 是高效的消息处理引擎,采用多线程并发的方式来处理消息.也就是说当有消息被接收的时候就会产生一个新的消息处理实例.但有时目标系统可能并没有并发处理 的能力, 这时就需要在BizTalk中 ...
- BizTalk开发系列(二十九) 宏的使用
在BizTalk中可以使用宏集合动态的让BizTalk发送处理程序使用单独的值来替换宏.常用的使用宏的发送程序有:文件发送适配器和SMTP发送适 配器.在表达式中可以使用同时使用多个宏.例如:在文件发 ...
- Web 前端开发人员和设计师必读精华文章【系列二十六】
<Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Java开发学习(二十六)----SpringMVC返回响应结果
SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户. 比如:根据用户ID查 ...
随机推荐
- PHP入门 - - 05-->编写HTML页面的常用标签
一.文字版面的编辑 1.格式标签 格式标签用于定义网页中文本的布局.缩进.位置.换行.列表等 <br> 换行 <p> ...
- Python与Hack之Zip文件口令破解
1.需要的库: **import zipfile**import optparse**from threading import Thread(1)zipfile:1.1 zipfile.ZipFil ...
- canvas 3D运动球效果 多球
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- http://www.roncoo.com/article/detail/124661
http://www.roncoo.com/article/detail/124661
- JSP基础——创建、启动、浏览项目
创建的项目类型为WEB PROJECT. 新建的.JSP文件,可直接访问的放到WebRoot目录下,不可直接访问的就放到WEB-INF里. 要添加的.jar文件,复制到项目目录内,再右键Build P ...
- css初始化样例代码
/* css reset www.admin10000.com */ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fields ...
- 安装配置hive中遇到的问题
1. mysql中添加用户名时总出现如下问题:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables ...
- oracle查看表实际物理空间使用大小
http://www.2cto.com/database/201107/95313.html 一种是分配给一个表的物理空间数量,而不管空间是否被使用.可以这样查询获得字节数:select segmen ...
- 限制Boltzmann机(Restricted Boltzmann Machine)
起源:Boltzmann神经网络 Boltzmann神经网络的结构是由Hopfield递归神经网络改良过来的,Hopfield中引入了统计物理学的能量函数的概念. 即,cost函数由统计物理学的能量函 ...
- ACM 心急的C小加
心急的C小加 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...