Windows DNA 之二 业务逻辑层

来源:互联网 发布:h5建站 编辑:程序博客网 时间:2024/05/07 09:50

Windows DNA中最核心也是最基础的就是对于业务逻辑层设计提供的框架性指导,而COM则是框架性指导的核心概念。COM技术由来已久,它是基于组件的设计思想在Microsoft的技术产物。它促进基于组件的开发和面向对象的程序设计,它促进代码在二进制层面上的重用,它也为COM组件之间的相互通信提供了必要的机制。如果你希望对COM技术有一个全面的了解,有很多书可供参考,如COM本质论、COM技术内幕、ATL技术内幕等。

Windows DNA的目标是为网络应用系统提供框架性的指导。提到网络我们必然会想到分布式处理。如何让本地运行的进程内或进程外COM组件能够被远程调用,这是Windows DNA所要解决的问题。Microsoft的解决之道就是DCOM,即分布式的COM。DCOM是基于RPC的,它的作用就是将客户端的方法调用序列化然后传递到服务端,如果有返回值服务端将调用结果序列化返回给客户端。但是我们知道网络应用系统的一般问题包括并发、事务、安全等,Microsoft的工作就是让他们的开发者更加地关注业务而不是技术。显而易见DCOM无法做到这一点,它做的只是模仿本地调用来实现远程调用,仅此而已,而且最初的DCOM只有进程外的COM组件(.exe)才可以实现远程调用。

那么Microsoft需要一种机制来实现他们的目标。这就是COM+。我们可以认为COM+是一组服务,它不但实现了进程内组件的远程调用,而且附加了并发、事务、安全、异步调用等服务。如果你编写过COM+组件你就能体会到Microsoft在这个方面做了很多工作,这样你才可能在你编写的COM+对象中访问到事务上下文、安全上下文、构建参数,同时你无需为程序的并发做太多的工作。你所要做的就是考虑清楚你的COM+对象需要什么的事务支持,需要什么样的安全策略,需要什么可配置性的参数等等,还需要注意的一点是你的COM+组件最好要是无状态的,因为windows DNA要求你的体系结构是可伸缩的,而可伸缩的体系结构的一个最大特点就是无状态,这样才可能在实现系统的横向可伸缩。对于COM+组件的安装和部署,Microsoft也做了很多工作。

上面有提到COM+是一组服务的集合,这其中就包括队列服务和分布式事务处理。如果将你的COM+对象标记为可队列化的,那么对于COM+对象的每次调用都会放到一个特定的windows队列中,通过MSMQ服务实现可靠的远程方法调用。如果将你的的COM+对象标记为支持事务或请求新事务等,则在你的COM+对象中你可以获得事务上下文,并实现事务的操作,如放弃事务、提交事务等,底层的COM+则通过MTS、资源处理器等部件来实现两阶段事务处理,从而保障的你的业务得到有效而正确地处理。

总而言之,当考虑业务逻辑层设计的时候,优先考虑COM+技术,考虑业务逻辑需要什么样的事务支持,需要什么样的安全策略,而且还要让你的COM+对象可配置,并通过无状态逻辑来实现业务层的横向可伸缩。

原创粉丝点击