有两个场景一般用作事务的参考。多步骤商业过程是典型跨度分,天,月的长时间运行过程。它们可以涉及多个组织和基于人的工作流。短期运行事务是那些在几秒钟完成并很少有外部依赖的商业操作。尽管它们都有定义的很好的接口和确定的工作流,它们是根本不同的事物。WCF支持短期运行的事务。它通过借助.NET和Windows基础结构来实现运行在只有微软环境平台的事务同时通过使用WS-*标准事务来支持跨平台。
多步骤商业过程一般需要同时连接自动化过程和手动工作流。它们可能需要不长时间(比如,处理一个订单)或者几个月(比如,获得一个回扣)。如果一个多步骤过程(比如,计划一次商业旅行)半途而费,前期步骤(比如,飞机票预订)可以通过取消步骤(取消机票预订)来补偿。这些事务由一个消息代理或者企业服务比如BizTalk Server 支持。
短期运行的事务离散业务功能封装。它们一般需要花费几秒钟完成。商业功能可以在一个高的层次暴露来聚合或者从多个源更新消息。商业功能也可以在一个低的层次(更新客户地址)暴露来更新仅仅一个数据源。在这些情况,所有的事务内的数据更新必须成功或者失败因为为了维护商业功能的完整它们是以原子提交的。如果一个事务内的组件更新失败,服务必须将之前成功的更新撤销为失败以便于数据得以保留到它们在操作开始前的状态。
这个行为通常被了解为一个ACID事务。在这个主题上有很多文章,但是简要说来ACID事务就是:
原子。 所有事务内的更新都是成功的,或者它们都被回滚了。任何部分更新都不允许。例如,在一个银行转账操作中,如果取钱操作成功了但是存钱失败了,那么取钱操作会回滚以便于总钱数不会多出也不是少。
一致性。 在操作结束以后,根据商业规则所有的数据都是合法的。例如,在一个银行转账事务中,接收方和发送方的账户必须是合法的账户否则事务将会终止。
隔离。 当操作执行时,在事务外不可以看见任何部分结果。例如,当一个银行转账操作正在执行时,其他用户在转账过程中不会看到账户余额。
持续。 当事务执行后,数据必须在一种不被系统失效影响的方式。