在我们这个春天(或相当于春天)的服务无处不在的世界中,我看到的Java代码似乎越来越过程化,没有太多强调面向对象建模的重点。
例如,一个有任务要完成的服务可能会在单例服务类的服务方法中内联这些任务 - 可能是几百行。另外,也可以创建本地方法,但由于服务是无状态的,因此这些方法通常会被调用并传入一堆参数(不是指栈)。这很混乱。
我猜这可能是我原来在Smalltalk中的面向对象背景在这里发挥作用,但对我来说,面向对象建模似乎一直是正确的方式。也就是说,使用具有状态和行为的对象进行建模。
另一种方法可能是创建一个有状态的原型委托,从服务中调用该委托,并将其连接或加载所需的实体、单例DAO/服务等。此外,还可以创建其他装饰器来包装实体(特别是集合),以提供一些模型列表行为(我有一份帐户清单,我有一些基于列表的行为 - 这必须是一个持有列表的类,它不能只是在服务中内联技术List类及其使用行为(但通常是))。
但是。
创建这种对象会使用内存,在高吞吐量环境中,这可能会导致创建数千个小策略/装饰器实例。那么这有什么真实的影响呢?额外的垃圾回收是否会影响性能,或者假设JVM实例大约为2GB,Java是否可以应对?
有人基于这些原则提供了基于Java的SOA吗?有关该主题的论文吗?
感谢您阅读到这里。
例如,一个有任务要完成的服务可能会在单例服务类的服务方法中内联这些任务 - 可能是几百行。另外,也可以创建本地方法,但由于服务是无状态的,因此这些方法通常会被调用并传入一堆参数(不是指栈)。这很混乱。
我猜这可能是我原来在Smalltalk中的面向对象背景在这里发挥作用,但对我来说,面向对象建模似乎一直是正确的方式。也就是说,使用具有状态和行为的对象进行建模。
另一种方法可能是创建一个有状态的原型委托,从服务中调用该委托,并将其连接或加载所需的实体、单例DAO/服务等。此外,还可以创建其他装饰器来包装实体(特别是集合),以提供一些模型列表行为(我有一份帐户清单,我有一些基于列表的行为 - 这必须是一个持有列表的类,它不能只是在服务中内联技术List类及其使用行为(但通常是))。
但是。
创建这种对象会使用内存,在高吞吐量环境中,这可能会导致创建数千个小策略/装饰器实例。那么这有什么真实的影响呢?额外的垃圾回收是否会影响性能,或者假设JVM实例大约为2GB,Java是否可以应对?
有人基于这些原则提供了基于Java的SOA吗?有关该主题的论文吗?
感谢您阅读到这里。