[英]Effect of Singleton classes in Webservices
我正在实现一个Web应用程序,并提供了一些其他的API。
以下是我的Web应用程序的结构。
服务层
服务类包含不同的API。
它调用DAO ,它是一个单例类 (我想说这是一个Enum,并且只为Enum定义了实例),并且它没有任何状态。 我的意思是DAO图层类中没有实例变量。
DAO层
DAO类获取数据库连接 (通过Enum类提供数据库连接,而我在实例化Enum时创建了连接),并在数据库上执行相应的查询。
所以应用程序架构就是这样。
ServiceClass {
Dao.operation()
}
DaoEnum {
instance;
operation() {
DBConnectionEnum.instance.connection.preparedStmt.respective operation
}
}
DBConnectionEnum {
DBConnectionEnum() {
grabDBConnection()
}
}
我知道我必须使用connectionpool来获取数据库连接,但是我无法理解由Dao层(即单例)引起的影响。
您能否建议我这是一个正确的设计,还是会耗尽应用程序? 可以进行哪些改进以使应用程序更健壮,快速且高性能?
我正在与同事讨论此问题,根据讨论,我感到我的单例DAO层一定不会对我造成任何问题。
由于DAO层在DB和Service类之间充当中介者,因此DAO层不维护任何状态。 因此,当同时调用2个类似的请求时,两个请求将在2个不同的线程中得到服务,并且每个线程将维护自己的堆栈。 当两个请求都调用DAO层时,这些请求将简单地调用DAO层的方法,该方法将与相应线程的堆栈关联。
因此,如果我在应用程序中创建Singleton DAO层以服务多个Web请求,它将不会耗尽吞吐量,因此必须为客户端提供服务而不会出现任何问题。
希望我没有任何意义。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.