在用了WebService 的数据模块后发现,每向WebService请求一次数据(包括调用一个简单的接口)数据模块都会重新创建一次(我在构造函数中加了个计数器才发现的)。我的构造函数中每次都会连接一下数据库,所以效率低的要死!
不知道有什么办法可以让数据模块只创建一次?。
8 个解决方案
#1
另建一个DataModule,把数据库的实际操作放在DataModule里,第一个WebDataModule创建的时候保证只创建一个DataModule实例,以后再创建的WebDataModule只要引用就可以了,然后所有的和数据库有关的操作由DataModule完成,在最后一个WebDataModule销毁的时候记得要销毁DataModule。
这样做有一个问题,就是所有的请求都使用同一个数据库会话,在数据库的事务方面可能会造成冲突,而且由于是多个WebDataModule共享DataModule,所以你要保证DataModule的线程安全性。
这样做有一个问题,就是所有的请求都使用同一个数据库会话,在数据库的事务方面可能会造成冲突,而且由于是多个WebDataModule共享DataModule,所以你要保证DataModule的线程安全性。
#2
.
#3
在创建WebService的时候是有一个选项的,在Add New WebService对话中有一项是服务激活模式 Service Activation Model,选择Global就可以,它的默认值是Per Request
#4
学习
#5
不用Web数据模块使用 Interface 中是有 Global 选项,可数据模块中没有,
我现在是用数据模块进行操作的,另外我的WebService类型是ISAP
halibut(乡下人):
你的第一种方法我还不是很了解,主要是不白明 实例放在哪里才不会被清除
以及有客户访问时会执行哪个事件函数(没有事件我不能使用实例)
还有一个问题是,Dll 的生命周期是怎样的。
我现在是用数据模块进行操作的,另外我的WebService类型是ISAP
halibut(乡下人):
你的第一种方法我还不是很了解,主要是不白明 实例放在哪里才不会被清除
以及有客户访问时会执行哪个事件函数(没有事件我不能使用实例)
还有一个问题是,Dll 的生命周期是怎样的。
#6
用WebModule做接口,DataModule做商业逻辑处理,由WebModule调用相应的DataModule的接口函数,DataModule由手工创建,第一个WebModule创建的时候才创建DataModule,最后一个WebModule销毁的时候才销毁DataModule.
#7
问题时如何管理WebModule 的指针,比如,现在新建一个WebModule, 是不是要把WebModule的指针保存在一个全局的变量中呢(不然如何知道现在有几个WebModule被建立)?
我现在主要是没找到一个在能全局保存变量的位置。
我现在主要是没找到一个在能全局保存变量的位置。
#8
问题是这个全局的计数器放在哪里?
#1
另建一个DataModule,把数据库的实际操作放在DataModule里,第一个WebDataModule创建的时候保证只创建一个DataModule实例,以后再创建的WebDataModule只要引用就可以了,然后所有的和数据库有关的操作由DataModule完成,在最后一个WebDataModule销毁的时候记得要销毁DataModule。
这样做有一个问题,就是所有的请求都使用同一个数据库会话,在数据库的事务方面可能会造成冲突,而且由于是多个WebDataModule共享DataModule,所以你要保证DataModule的线程安全性。
这样做有一个问题,就是所有的请求都使用同一个数据库会话,在数据库的事务方面可能会造成冲突,而且由于是多个WebDataModule共享DataModule,所以你要保证DataModule的线程安全性。
#2
.
#3
在创建WebService的时候是有一个选项的,在Add New WebService对话中有一项是服务激活模式 Service Activation Model,选择Global就可以,它的默认值是Per Request
#4
学习
#5
不用Web数据模块使用 Interface 中是有 Global 选项,可数据模块中没有,
我现在是用数据模块进行操作的,另外我的WebService类型是ISAP
halibut(乡下人):
你的第一种方法我还不是很了解,主要是不白明 实例放在哪里才不会被清除
以及有客户访问时会执行哪个事件函数(没有事件我不能使用实例)
还有一个问题是,Dll 的生命周期是怎样的。
我现在是用数据模块进行操作的,另外我的WebService类型是ISAP
halibut(乡下人):
你的第一种方法我还不是很了解,主要是不白明 实例放在哪里才不会被清除
以及有客户访问时会执行哪个事件函数(没有事件我不能使用实例)
还有一个问题是,Dll 的生命周期是怎样的。
#6
用WebModule做接口,DataModule做商业逻辑处理,由WebModule调用相应的DataModule的接口函数,DataModule由手工创建,第一个WebModule创建的时候才创建DataModule,最后一个WebModule销毁的时候才销毁DataModule.
#7
问题时如何管理WebModule 的指针,比如,现在新建一个WebModule, 是不是要把WebModule的指针保存在一个全局的变量中呢(不然如何知道现在有几个WebModule被建立)?
我现在主要是没找到一个在能全局保存变量的位置。
我现在主要是没找到一个在能全局保存变量的位置。
#8
问题是这个全局的计数器放在哪里?