Delphi と Interbase のクライアント/サーバー アプリケーションがある場合、データベースのユーザー数に基づいてアプリケーションのライセンスを取得したいと考えています。これは、商用ライセンス ソフトウェアでどのように行うことができますか? これをカバーするように見えるこれらのリスト機能は見当たりません。すべてのユーザーは、最初にデータベースにログオンします。データベースは非常に利用可能であるように思われるため、すべてのユーザー (または少なくとも管理者) に公開されます。サーバー上で実行する Delphi exe または dll も作成する必要がありますか? おそらくデータベース内の関数として、それに接続されたライセンスを使用しますか? 続行方法がわからない。ところで、Interbase は同時ユーザーにライセンスを付与しますが、サーバーにその権利を書き込んだと思いますが、同様のものが必要です。
1 に答える
同時クライアント接続を制御するには、サーバー側のアプリケーションが絶対に必要です。サービスとしての単純な tcp/ip ソケット サーバー (Linux のデーモン) または別の (midas?) サーバー レイヤーにすることができます。
クライアント アプリが起動すると、Session.Connect などのサーバー メソッドが呼び出されます。ここでは、アクティブな接続をカウントし、上限に達した場合は false (コードなし) を返します。アプリケーションが閉じたら、Session.Disconnect でサーバーに通知します。接続数を減らします。
また、アプリケーションのハングアップ、制御されていない再起動を処理し、このイベントをサーバー側で OnSockedDisconnect などで処理して、接続数を減らしてたとえば、ログなどに書き込みます...
もちろん、不要なゲストを避けるために、通信は暗号化 (ハンドシェイク) する必要があります。SIMカードリーダーなどでも遊べます。
この方法では、産業用 (核) レベルのセキュリティは提供されませんが、正しくコーディングされていれば、専門のハッカーでも破るのに時間がかかる可能性があります。
または、SafeNet (HASP 保護) などの既製の保護ツールを検討することもできます。
また、Firebird (およびおそらく Interbase) には DB 接続/切断トリガーがあり、ユーザーが権限を持っている場合は接続数を読み取ることができます。ただし、DB がお客様のサーバーに格納されている場合、これらは簡単に変更できます。