我正在开发一个小项目,涉及创建一个控制台程序,该程序旨在由更大的产品在后台运行.
该程序一方面可以与主要产品(IP21)通信,另一方面可以作为服务器,处理多个客户端.
我已经开始研究架构,并提出了一些基于反应堆处理事件的东西,例如主产品生成的连接或事件.客户端处理部分由单独的线程处理,每个客户端一个.
但我不同意我的同事关于这种架构.他说我应该把反应堆和少数其他组件放在主线程中,在一个单独的线程中.主线程应该尽可能简单.我这样做,以便程序不会崩溃,如果这部分.他说,拥有一个完全无功能的程序比暴力崩溃更好.
我说快失败最好.如果程序中的这个(关键)部分崩溃,则没有理由尝试保持它活着.而且我相信这会给用户带来麻烦; 他会注意到有些问题,但如果他查看任务列表(我们的产品作为某种任务管理器列出了应该运行的任务并允许轻松跟踪崩溃的任务),他将不会注意到该程序崩溃了!
我希望你可以通过向一方或另一方提出一些论据来帮助我们;)
编辑:感谢您的回答,但我们不同意的是将反应堆和其他一些组件放在一个单独的线程中,以防出现严重的编程相关问题(一个段错误/死锁/ <插入严重问题>).我认为让程序在没有这个线程的情况下运行既危险也没有意义.
取决于您需要做什么以及它的重要性。如果您可以处理某些步骤失败而其他步骤有效的情况,那么就失败这些步骤并继续前进。(想想像发送邮件这样的事情;如果一条消息发送失败,您不希望它阻止其余消息的发送。)只有当其中一个步骤的失败导致其余步骤无法可靠地完成时,才使整个过程失败。