分布式和动态路由接口之间的差异
分布式路由接口在多个重要方面与动态路由接口不同。
如果您先前已编写动态路由程序,并且即将编写分布式路由程序,请记住:
- 如果资源 (事务或程序) 定义为 DYNAMIC (YES) ,那么将调用动态路由程序和分布式路由程序。 异常用于异步运行的 BTS 活动,对于这些活动,将调用分布式路由程序,即使关联的事务定义为 DYNAMIC (NO) 也是如此。 在此情况下,分布式路由程序无法路由请求,但是可以监视对工作负载的请求的影响,或执行其他活动。 这意味着分布式路由程序能够更好地监视静态路由请求对目标区域的相对工作负载的影响。
- 由于动态路由程序使用分层 "中心" 路由模型-一个路由程序控制对多个目标区域上的资源的访问-在路由请求终止时调用的路由程序与为路由选择调用的程序相同。
分布式路由程序则使用分布式模型,它是对等系统; 路由程序本身是分布式的。 在路由事务启动,终止或异常结束时调用的路由程序与为路由选择调用的程序不同-它是目标区域上的路由程序。
因为仅在路由区域上调用动态路由程序,所以严格定义其调用顺序:- 路由选择或通知
- 路由选择错误 (如果适用,并且可能重复)
- 事务终止或异常终止 (如果请求)。
对于单个请求,传递到动态路由程序的每个调用的用户区域是同一块存储器; 在一次调用时对用户区域进行的任何修改都将保留并传递到下一次调用。
另一方面,可以在目标区域以及路由区域上调用分布式路由程序; 因此,对其调用的顺序定义不太严格。 例如,对路由区域的最终调用 (对于 "路由尝试完成") 可能发生在对目标区域的第一次调用之前或之后 (对于 "事务启动")。 为了应对此不确定性,在目标区域上第一次调用时传递到分布式路由程序的用户区域是路由区域上用户区域的 副本 。 这意味着在目标区域上对用户区域进行的任何修改都不会对路由区域中的用户区域产生影响。 有关更多详细信息,请参阅 传递到分布式路由程序的参数中 DYRUSER 字段的描述。
- 在比动态路由程序更多的点调用分布式路由程序。 调用分布式路由程序时 说明了调用分布式路由程序的点以及每次调用的区域。
- 与动态路由程序不同,分布式路由程序 不能:
- 通过提供网络名来选择目标区域 (将忽略通信区域的 DYRNETNM 字段中设置的任何值)。 目标必须由其 CICS 系统标识 (sysid) 指定。
- 更改传递到目标区域的远程事务名称。 (将忽略通信区域的 DYRTRAN 字段中设置的任何值。)
- 更改与路由请求关联的初始程序。 (将忽略通信区域的 DYRLPROG 字段中设置的任何值)。
- 如果没有到目标区域的 MRO 会话,请选择该请求不排队。 (通信区域的 DYRQUEUE 字段始终设置为 "Y"。)
- 修改路由应用程序的通信区域。 (未向路由程序传递字段 DYRACMAA 中路由应用程序的通信区域的地址。)
- 将事务的分派优先级传递到目标区域。 (通信区的 DYRRTPRI 字段始终设置为 "N"。)
在 DFHDYPDS 通信区域中相关字段的描述中更全面地记录了这些限制。