我正在工作的地方正在尝试建立一些基本规则,而我们现在正在争论的是本地库与Web服务之间的代码重用。Web服务似乎是大多数公司中的热门选择,这就是大多数开发人员都倾向于的。
我只是看不到如何有效地将Web服务用于任何严肃的工作。如果无法使用事务,如何安全地执行多个服务调用?
假设我有一个Cron工作,它从我们的数据库中获取满足一定条件的客户,这些客户需要通知他们。将向他们发送传真,电子邮件并创建票证以在内部跟踪问题。在for循环中,每个客户将发生3个不同的服务调用。
如果那里的任何地方发生错误,则可能会例如将传真和电子邮件发送给客户,但不会创建故障单。或更糟糕的是,此Cron作业可能包含一个错误,导致每次都在同一时间失败,并反复向同一位客户发送电子邮件。如果所有库都是本地的,则所有内容都可以包装在事务中,而不会发生任何事情。但是在此示例中,我们使用的是Web服务。
请注意,电子邮件和传真方法实际上将数据插入到数据库支持的队列表中,而这些表又由单独的cron作业进程处理。因此,如果需要,可以免费中止对“发送电子邮件”和“发送传真”服务方法的调用。
一种选择是将整个代码块放在Web服务本身中,以便Web服务本身将在事务中调用电子邮件,传真和票证创建方法。但是随后我们创建了一个仅用于事务处理的Web服务方法。没有确凿的理由,我们实际上需要从该cron脚本之外的任何地方调用此方法。
您通常将如何处理此方法?