用户连接到服务器,并使用提供的凭据使用集中的AuthorizationDatabase(Oracle数据库)验证它们.如果它们实际上是一个有效的用户,那么我希望根据授权存储库所说的内容(可能是另一个主机,数据库,用户名,密码)为它们提供与数据实际所在位置的连接.
我在自己的服务器类中有AuthorizationDatabase,这是服务器生命周期,因为没有在那里验证没有人可以进入.这是否会产生并发问题? 10个用户登录同时验证,这项工作可以吗?
我有一个基本服务器模块,所有会话级数据模块都派生自该模块,它具有应用程序连接.应用程序连接参数可以根据用户登录进行更改.
我遇到的问题是放置授权/验证/新数据库参数分配过程的位置.
这种两步数据库方法最适合哪种方式?这似乎相当普遍,用户在一个地方得到验证,但他们最终将要访问的数据在另一个地方.
在回顾这些例子的时候,我看不到一个明显的地方.
解决方法 跨多个会话共享一个连接是不安全的,当两个会话尝试同时读取数据库时,您将收到“读取错误”或其他一些错误.但是您可以拥有一个集中的登录位置,只需使其线程安全,这样做:
TMonitor.Enter(LoginDM);Try valID := LoginDM.Login(username,password);finally TMonitor.Exit(LoginDM);end;
关于用户访问数据,因为每个用户将拥有自己在线程上运行的会话,您可以为每个ServerClass实例创建一个连接并将生命周期定义为“Session”,因此每个新会话将生成一个新的ServerMethod的类实例并具有它自己的连接,这样你就不必担心编写服务器方法的方式,因为它们总是拥有自己的“独占”连接.
总结以上是内存溢出为你收集整理的delphi – 单个用户的多个连接全部内容,希望文章能够帮你解决delphi – 单个用户的多个连接所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)