现在的位置: 首页 > 综合 > 正文

Oracle Dependency 使用要注意的一些问题。

2012年12月11日 ⁄ 综合 ⁄ 共 1001字 ⁄ 字号 评论关闭

最近项目中要用到wcf 服务器,客户端构架。客户端会向服务器发出一个请求,查询一个表。wcf服务器再去访问服务器数据库,得到结果后,wcf服务器再将结果返回给客户端。
这样做有一个问题,就是客户端数据更新的问题。刷新太频繁,性能受影响。OracleDependency就是用来解决这个问题的。当你注册一个OracleDependency时,如果你关心的数据库状态发生改变,就会由数据库发送一个消息到注册端。这样,就不用不停的去刷新了。只要安心等待数据库发送的通知就可以了。
在我的项目中,我的wcf服务器和客户端是双工通信,当客户端连到wcf服务器时,就注册一个回调函数给wcf服务器。客户端发出对一个表的查询,wcf服务器就利用OracleDependency去数据库服务器订阅这个查询,如果关心的数据库的状态发生改变,数据库通知wcf服务器,wcf服务器再通过客户端的回调函数通知客户端。关于wcf的知识我就不多说了。我想说的只是OracleDependency的问题。因为这方面网上资料比较少。
在使用OracleDependency时要注意以下几个问题。
0.OracleDependency能检测什么?
数据或者数据库状态。
1。为什么有时候能收到服务器的通知,有时候就不能了呢?
这是因为你生成一个OracleDependency的对象时,没有保存它。如果它只是一个局部变量,就会被垃圾回收,而回收的时间是不固定的。一旦被垃圾回收就不能接收到通知了。
2.注册了一个OracleDependency,一定要取消注册吗?
是的,要是你不取消,就会一直发消息过来,即使你的OracleDependency对象析构了,也不能取消在数据库服务器端的注册。这个对数据库服务器的影响很大。
3.怎样取消OracleDependency注册?
当你初始化时,就有几个参数,一个是是否只监听一次改变,如果这个值你设的是true,那么在收到一个事件通知时,数据库端就会自动取消这个注册。还有一个初始化的参数是设置注册有效的时间。当时间到了,数据库服务器也会取消注册。如果你在初始化时,选择监听多次,并且把时间设置为0(永久有效)那么你就必须在你的程序里显式调用RemoveDependency()这个函数来取消注册。
4.什么时候用OracleDependency?
关心的数据库状态的变化不太频繁时。

去当当网买书,价格更低,送货上门。

抱歉!评论已关闭.