批处理:客户端/服务器交互的设计模式
1. 异常处理
在将客户端代码提交到服务器时,一个关键问题是调用失败时该如何处理。服务器程序员能够知晓服务器调用何时失败,此时可决定终止程序,这可通过在运行方法中调用程序类的终止方法来实现。然而,客户端可能希望即便调用失败也继续执行程序。为支持这一需求,模式实例中包含了两个命令: AbortOnError 和 DoNotAbortOnError ,用户可借此在两种模式间切换。调用 AbortOnError 后,调用终止方法会导致程序终止;否则,终止方法无效果,如此客户端就能控制失败调用的影响。
终止方法的实现取决于所实现的指令集类型和实现语言。基于字节码的程序易于停止,因为运行方法中有主控制循环,只需将终止标志设置为 true 即可。而停止结构化程序(如文件服务器示例中的程序)则稍复杂,这是由于递归解释机制,程序中的运行调用会传播到其组件的运行方法。要停止该程序,需完成所有嵌套的运行调用。不同实现语言有不同处理方式:
- 在支持异常的语言(如 C++、Java 或 Python)中,在终止代码中抛出并传播异常,在程序运行代码中捕获该异常即可。
- 在不支持异常的语言(如 C)中,可在顶级运行方法调用其他运行方法前使用 setjmp ,在终止代码体中使用 longjmp 实现相同目的。
2. 批处理模式的优缺点
2.1 优点
- 提供服务器的虚拟机视图
超级会员免费看
订阅专栏 解锁全文
34

被折叠的 条评论
为什么被折叠?



