BizTalk 2010 学习笔记——第二章 BizTalk 2010 开发简述

这章简要介绍:

  • BizTalk的开发体验;
  • 解决方案架构的最佳实践;
  • BizTalk中的类型
  • 监控一个解决方案

 

 

2.1 开发BizTalk解决方案

BizTalk解决方案的开发很大程度上包含Visual Studiog的开发。

 

创建一个BizTalk解决方案通常包含下列操作:

  1. Creating schemas
  2. Creating maps
  3. Creating orchestrations
  4. Deploying locally
  5. Binding the solution
  6. Creating visibility and monitoring
  7. Testing the solution

 

前面4个步骤都是通过Visual Studio完成的。第5步通过BizTalk管理控制台完成,第6步通过在ExcelTracking Profile Editor完成。第7步可以需要在很多环境下完成,比如单元测试中。

 

开发流程中的主要组成部分:

BizTalk 2010 学习笔记——第二章 BizTalk 2010 开发简述

 

Schemas 用来描述内部和外部的数据类型。

映射(Maps)是用来桥接内部和外部消息格式的转换。

流程(Orchestrations)用来描述消息流。

绑定(Binding)用来连接流程、终结点(Ports)、映射和架构。

BAM用来提供可视化的监控。

所有我们在VS里创建的东西编译后会进入.NET assembliesBizTalk运行时会加载这些程序集,来执行BizTalk应用程序。

 

2.2 分解BizTalk解决方案

BizTalk解决方案的结构的好坏对于该应用开发、部署和后期维护都非常重要。

 

2.2.1 详述解决方案的结构

BizTalk的结构模式必需支持下面的几个要求:

  • 多人同时开发
  • 可以在任何开发者的机器上编译开发
  • 可以在任何开发者的机器上做测试
  • TDD支持
  • 自动化功能测试
  • 持续集成(CI
  • 自动性能测试

 

2.3 理解BizTalk解决方案的层次(layers

下图描述了BizTalk中各层的相互影响关系:

BizTalk 2010 学习笔记——第二章 BizTalk 2010 开发简述

这种组织方式也告知我们如何组织我们的解决方案项目。比如外部的schema不能影响我们的流程,流程的变化也对外部是不可见的,透明的。

 

这个理念也可以通过UML图描述,如下:

BizTalk 2010 学习笔记——第二章 BizTalk 2010 开发简述

 

 

2.4 Visual Studio 解决方案结构

首先启动一个空白VS解决方案,添加项目,一般会添加6个项目如下:

BizTalk 2010 学习笔记——第二章 BizTalk 2010 开发简述

 

2.4.1 项目

下面是典型的VSBizTalk项目

 

2.4.1.1 外部架构(.xsd files

2.4.1.2 内部架构(.xsd files

2.4.1.3 映射(.btm files

此项目引用上述2.4.1.12.4.1.2两个项目

上项目也防止BizTalk项目对外部的依赖。

2.4.1.4 管道(.btp files

引项目引用 2.4.1.1或者2.4.1.2.

 

2.4.1.4 管道组件(.cs files

并不是每个解决方案都需要这个项目,这个项目是一个.net 类库。

 

2.4.1.5 流程(.odx files

 

2.4.1.6 库(C#,resources,and so on

2.4.1.7 测试(.xml,.dtd,.cs files

 

2.4.1.8 非项目事物

还有一些解决方案层级的文件夹。

这些文件夹都是逻辑文件夹,不是物理文件夹,但是你也可以创建物理目录来匹配这些目录,用来保存对应的信息,这此目录包括:

  • 第三方程序集
  • 绑定
  • 编译
  • 策略
  • 跟踪

 

2.4.2 解决方案结构的动机

其实就是为了分离部署,什么模块有问题只有更新对应的程序集就行了。

 

2.5 理解BizTalk中的类型

所有BizTalk构件通过编译后都会变成 .net的类型。

 

在大多数编程语言中,类型是开发过程中用来组织代码的结构。BizTalk用来桥接消息传输。这就意味着BizTalk同有支持消息类型和.net 类型,XML消息是消息传输类型,但是任何东西都是一个.net类型。

VS项目中的每个BizTalk构件有一个命名空间和类型名称。

 

2.5.1 消息类型

XML消息有自己的消息类型,XML通常用ROOT元素来识别唯一性,包括命名空间和元素名。

Biztalk通过命名空间和根元素名来匹配指定的架构。比如:

此消息类型就是"http://somecompany.net#order"

 

 

对于非XML的消息,它们是非类型化的。这就意味着这些数据内容不能路由或者在映射模块中使用它们。但是仍然可以在上下文和BizTalk内部用.net 类型来使用它们。

 

2.5.2 上下文中的类型

BizTalk中,在不同的上下文背景下也有不同的类型。

 

所有BizTalk的消息引擎,包括管道组件,都把消息描述为下面接口的实例:

Microsoft.BizTalk.Message.Interop.IbaseMessage.

 

一旦进入流程,消息被呈现为:

Microsoft.XLANGs.BaseTypes.XLANMessage的实例。

 

但是这些类不能被互相转换,它们是各种组件专有的。

 

一个消息到达BizTalk,穿过管道(及其组件)和映射,到达消息数据库。这个过程中消息被呈现为IBaseMessage.

之后如果一个流程使用了这个消息,这会当作XLANGMessage类型的新的消息,与之前的完全没有关系。

这个过程其实是两个过程,但是在外部看来它是一个连续的过程。

 

再深入一点,一个消息在一个流程中也可以被声明为“System.Xml.XmlDocument”的一个实例。这两种类型同时存在本质上没有多大的联系,只是它们同时被使用,有历史上的原因。从历史来说,以前的BizTalk版本通过使用DOM扩展来传输XML文档,所以就用了XmlDocument类,这是.netDOM对象。另外一个原因是它允许用户在流程中通过一种简单的方式来操作非XML消息。

但是对于非XML类型消息,如果使用XmlDocument的成员去操作它,BizTalk会在运行时抛出异常。

XmlDocument在流程中使用是非常危险的,应该避免它在流程中使用。

 

2.5.3 类型解析

在一个只有消息传递,而没有流程的场景中,BizTalk做了一个双向的类型解析。

首先是确定消息的类型,这时通知命名空间和根元素也确定消息的类型。

BizTalk通过这个消息类型从.net程序集中去检索架构信息。

 

BizTalk中不能存在两个命名空间相同,同时根节点也相同的架构,系统会抛出异常:Multiple schemas match the message type.

 

另外,Pass Thru 管道不会检查和修改消息。

 

2.6 理解解决方案的运行时

 

之前我们已经讨论过BizTalk通过管理数据库和加载GAC中的程序集来运行应用程序。

本节涉及以下几个方面:

  • BizTalk runtime(.Net runtime)
  • Message Box
  • Management database
  • Global Assembly CacheGAC

 

这几个除了GAC其它都上面有说到,GAC.net程序集的数据库或者说是仓库,有了GAC我们可以不用关心COM DLLs版本带来的问题。

GAC中的程序集必需包含一些参数,最重要的就是强命名。

 

所以BizTalk的程序集也必需是强命名的。它带来的好处有很多。比如允许多版本存在,安全等等。

 

 

下面的图表描述了BizTalk加载解决方案时的步骤:

BizTalk 2010 学习笔记——第二章 BizTalk 2010 开发简述

 

  1. 当一个消息到达BizTalk时,宿主实例(BizTalk运行时)接收消息,检查消息是否能匹配到已知的消息类型。已知的类型列表存在管理数据库中。
  2. 找到匹配消息类型后,运行时从GAC中加载程序集。
  3. 运行时自由地加载.net类型,可能是一个schema,映射,管道或者是一个流程。

 

上图描述了BizTalk解析消息类型和从GAC中加载架构。重要的一点是,每种类型从GAC中加載在一个宿主实例的一个生命周期中只会发生一次。当重启实例时(Windows的服务),它们才会在第一次使用时再被加载。不过BizTalk中的有些程序集也会在某个空闲时间点被卸载。

 

每个.net应用使用GAC时,并不是真正地从GAC运行程序集,而是复制出来放在自己的工作区域。所以当程序运行时更新和修改GAC里的程序集是不需要被中断。当然新更新的GAC里的程序集也是不会马上被加载到正在运行的.net程序域中的,除非应用程序域被重新加载,也就是重启宿主进程,或者说BizTalk的运行时。

 

2.7 监控

 

如果一个解决方案没有监控部分是不完整的。

监控分为两部分:技术上的或者平台上的。

 

2.7.1 为什么需要BAM

BAM是一个强大的工具集,通过它我们可以不需要写一行代码实现业务信息的收集,分析。包括复杂的统计和聚合。

 

BAM可以被用在非BizTalk的环境,比如WCF服务。

 

2.7.2 理解BAM的概念

 

….以后再看。

你可能感兴趣的:(学习笔记)