开发者

Best practices for managing limited client licenses/login [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.

Want to improve this question? Update the question so it focuses on one problem only by editing this post.

Closed 7 years ago.

Improve this question

I have a multi-user software solution (containing different applications, i.e. EXEs) that should allow only a limited number of concurrent users. It's designed to run in an intranet. I don't have a really good, satisfactory solution to the problem of counting the client licenses yet. The key requirements are:

  • When users start any application they get a login screen where they have to login with their user name and passw开发者_如何学Cord. So, when they start using the application it should count as a new license.
  • Multiple instances (starts) of the same application (= process) should count as only one client license
  • Starting different applications of the software solution should also count as only one (the same) client license
  • Application crash should not lead to orphaned used licenses
  • The above should work also for Terminal Server environments (all clients same IP, but different install folders)

I'm looking for established patterns, solutions, tips for managing used client licenses. Specific hints for the above situation are also welcome.


I believe the way that some applications (3ds Max, Adobe multi-use, etc) handle this is to have all of the applications installed access a single shared dll which manages the global user context. Thus when you login from any exe, it forwards your credentials to the dll, which saves those for other executables on the same machine. This shared dll is also responsible for communicating the current user context to a network or internet service which will track active licenses. I think microsoft distributes this service to enterprises, whereas other software vendors host a licensing service. Separating concerns this way should: allow the user context to remain active even when a single application ends unexpectedly, allow for a graceful exit and release of license when the shared dll is closed, and allow for a timeout or automatic release by the network service if it has not received any communication from the local machine. I don't know how terminal services might affect this. I know shared dlls can have limited scopes, thus each user might be able to run their own copy with a unique user context, but I'm really not sure. Hope this helps.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜