Synchronization 是';同步';经典企业应用程序中的关键字可疑?

Synchronization 是';同步';经典企业应用程序中的关键字可疑?,synchronization,legacy,anti-patterns,legacy-code,Synchronization,Legacy,Anti Patterns,Legacy Code,我说的是经典的企业应用程序。通常托管在某种应用服务器或容器中。没什么特别的,只有实体、服务、表示/用户界面和关系存储 每当我在这样的应用程序中看到synchronized关键字(无论是在方法上还是在块上),我都会非常怀疑。 在我看来,这要么是因为不理解基本的体系结构概念(例如,一个域模型没有在多个客户端之间共享),要么更糟糕的是,这表明体系结构实际上非常糟糕 你同意我的想法吗?还是我完全偏离了轨道? 您是否有在经典企业应用程序中确实需要同步的用例?我同意您对业务逻辑代码的看法,但在企业应用程序中

我说的是经典的企业应用程序。通常托管在某种应用服务器或容器中。没什么特别的,只有实体、服务、表示/用户界面和关系存储

每当我在这样的应用程序中看到
synchronized
关键字(无论是在方法上还是在块上),我都会非常怀疑。 在我看来,这要么是因为不理解基本的体系结构概念(例如,一个域模型没有在多个客户端之间共享),要么更糟糕的是,这表明体系结构实际上非常糟糕

你同意我的想法吗?还是我完全偏离了轨道?
您是否有在经典企业应用程序中确实需要同步的用例?

我同意您对业务逻辑代码的看法,但在企业应用程序中,您也有技术代码,有时您需要一些共享“技术”状态的同步。synchronized关键字可用于此目的。(您也可以使用原子变量,或者使用应用程序之外的东西(如DB序列)来共享技术状态…)

如果您想创建连续的票据编号-序列中没有孔-您需要一种共享某些状态的方法,以及一种同步的方法…

我同意您的意见

我认为在设计线程安全组件时,同步很重要,但在“业务逻辑”代码中通常不需要同步

通过引入共享状态,可以提高性能,但会降低应用程序未来的可伸缩性


如果需要并行设计,可以对应用程序开发人员透明地进行处理,例如使用应用程序服务器。

我同意。我说的是“商业逻辑”。我的观点是,在现代平台上,我通常看不到任何编写“技术代码”的理由。对我来说,这种“技术代码”通常是另一种迹象,表明人们不了解技术,正在重新发明轮子。