解惑

解己之惑,解人之惑

标签:Thread

MAPI32的Impersonate的问题

这个其实是 用代码创建MAPI的Profile的后续问题,因为我们把这个东西封装在Web Service里面供远程的其他程序调用,而这个Web Service的运行身份很重要,结合到底是谁?讲的,我们期望是可以通过Impersonate创建在我们指定的用户下面,但是MAPI32是根据当前的Process的用户身份,也就是Application pool的运行用户来读取注册表创建Profile的,所以Impersonate基本上没有用,有一些方法:http://blogs.msdn.com/stephen_griffin/archive/2005/04/13/407925.aspx ,但是基本上对我们不适用。

不要使用轮询

公司产品要集成LDAP,可以支持5个LDAP服务器,我们要写代码定期和LDAP服务器的信息进行同步,但是每个LDAP服务器的同步周期是变化的,用户可以配置。最简单的方式就是每个LDAP起一个线程做这个工作,但是架构师不允许太多的线程,所以要用一个主线程来控制。本来负责这个功能的人要使用轮询的方式,因为他觉得用户什么时候修改那个周期是不确定的,所以要一直查。其实很简单,如果其它的地方修改了那个周期,它通知那个主线程哪个服务器的周期修改了就行,然后主线程中断休眠并重新计算应该休眠的时间。主线程大部分时间都处于休眠状态,每次都会重新计算下一次应该休眠多长时间,这样程序的性能就大大的提高了。

演示代码如下:
阅读全文

© 2024 解惑

本主题由Anders Noren提供向上 ↑