問題タブ [datasnap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1317 参照

c++ - midas ソースコードから midas.obj をビルドする方法

最近、私は midas の問題を発見し、それを修正しました。現在の問題は、midas.dll ではなく MidasLib を使用したいということであり、ソース コードでは DLL をビルドすることしかできません。

ソースは C++ で、私はそれに関する知識がほとんどありません。MidasLib.pas が内部で midas.obj を使用していることはわかっているので、これを作成して midas をアプリケーションに静的にリンクする必要があります。C++ Builder でそれを行う方法は? (XE)

0 投票する
0 に答える
3664 参照

delphi - Delphi XE2 datasnap コールバックの例

カルバックを使用してオブジェクトを交換する方法の小さな例を作成しようとしていますが、いくつかの問題が発生しています。

  1. サーバーがオブジェクトを作成してブロードキャストすると、一部のクライアントのコールバック接続が時間とともにランダムに閉じられます (サーバーが 100.000 個のオブジェクトを送信した後、場合によっては 100 個以下のオブジェクトを送信した後)。
  2. クライアントがオブジェクトをブロードキャストするためにサーバー メソッドを呼び出すと、サーバーへのクライアント接続が閉じられることがよくあります。これらすべてが、現在のプロジェクトを実際のクライアント サーバー プロジェクトに変換することを妨げています。これは、サーバーとクライアントの両方の実行可能ファイルを含む私のソースです: DataSnapExample.rar

PS Mat DeLong の監視デモを試してみました。ブロードキャスト メッセージ メニュー イベントを呼び出す ttimer をサーバーのメイン フォームに配置しましたが、結果は同じでした。メッセージをしばらく送信した後、一部のクライアントが切断されました。残念ながら、これは Delphi XE2 Datasnap のクライアント サーバーのバグが原因で発生します。デモは次のとおりです: DataSnap XE2 - 統合接続監視サンプル コンポーネント

それが私のせいかどうか誰かに教えてもらえますか?ありがとう...

0 投票する
1 に答える
1591 参照

delphi - Delphi XE2 DataSnap - サーバー メソッド モジュールの REST 接続プロパティにアクセスする

REST クライアントからの接続を提供する XE2 DataSnap サーバーを構築しています。私の DSServerClass LifeCycle プロパティは「Invocation」に設定されています。REST 接続プロパティには、DSAuthenticationManager UserAuthenticate() イベントを通じて処理されるユーザー名とパスワードが含まれます。私が知る必要があるのは、サーバー メソッド クラス内でユーザー名とパスワードにアクセスする方法です。サーバー クラスのオブジェクト インスタンスを起動した REST ユーザー名/パスワードを知りたいです。

0 投票する
2 に答える
11730 参照

delphi - Delphi XE2 DataSnap - プログレス バー付きの TStream 経由でファイルをダウンロード

ファイルを転送するために TStream オブジェクトを返す DataSnap サーバー メソッドを作成しました。クライアント アプリケーションはメソッドを呼び出し、ストリームを正常に読み取ります。私の問題は、TStream オブジェクトが読み取れるようになる前にメソッド呼び出しが完了するまでに時間がかかることですが、サーバー側では、メソッド呼び出しが返されるオブジェクトを作成するのに 1 秒しかかからないことがわかります。ストリームを読み取ってダウンロードの進行状況を示すプログレス バーを表示できるように、ストリーム オブジェクトがすぐに返されることを期待していました。これを行う別の方法はありますか?

サーバー メソッドは非常に単純です。

0 投票する
2 に答える
871 参照

delphi - dbxDataSnapユーザーセッションのメッセージループにフックする

dbxユーザーセッションのWndProcにフックする方法はありますか?

背景:dbx DataSnapは、TCP通信にIndyコンポーネントを使用します。最も単純な形式では、DataSnapサーバーは接続を受け入れるIndyTCPサーバーです。接続が確立されると、Indyはその接続のスレッドを作成し、その接続のすべての要求を処理します。

これらの各ユーザー接続はリソースを消費します。同時接続数が数百のサーバーの場合、これらのリソースは高額になる可能性があります。多くのリソースをプールすることができますが、必要になるたびにリソースを取得して解放する必要はありません。

代わりに、アイドルタイマーを実装したいと思います。スレッドがリソースで終了すると、タイマーが開始します。タイマーが経過する前にスレッドがリソースにアクセスした場合でも、リソースはそのスレッドに「割り当て」られます。ただし、次のアクセスの前にタイマーが経過すると、リソースは解放されてプールに戻されます。次回スレッドがリソースを必要とするとき、別のリソースがプールから取得されます。

私はこれを行う方法を見つけていません。SetTimerを使用してみましたが、タイマーコールバックが起動しません。これは、スレッドに対するIndyのWndProcがWM_TIMERをディスパッチしていないためだと思います。このスレッドの「実行ループ」を制御できないため、イベントが通知されたかどうかを簡単に確認できません。実際、スレッドがユーザーリクエストを処理していない限り、このスレッドのコードは実行されません。そして実際、私はコードをユーザーの要求の外で実行したいと思っています。

元の質問に対する解決策または代替アプローチの提案も同様に高く評価されます。

0 投票する
2 に答える
2831 参照

delphi - Delphi XE2 DataSnap サーバー - HTTPS 「証明書を読み込めませんでした」

HTTP で正常に動作する既存の DataSnap サーバー (Windows サービス) があり、追加のプロトコルとして HTTPS を追加したいと考えています。SSL 証明書を取得してインストールし、証明書ファイル (.crt) と秘密鍵ファイル (.key) を生成しました。テストとして、Delphi XE2 DataSnap サーバー ウィザードを使用し、「HTTPS」にチェックマークを付けて証明書ページを取得すると、2 つのファイルを参照して「テスト」ボタンをクリックすると成功します。TDSHTTPService コンポーネントを追加し、それを TDSCertFiles コンポーネントにリンクしました。私のサービス起動イベントでは、DSServer を起動する前に、DSCertFiles.CertFile および DSCertFiles.KeyFile プロパティで 2 つの証明書ファイルへのパスを設定しています。サービスを開始しようとすると、次のエラーが表示されます。

証明書を読み込めませんでした。エラー:140AD002:SSL ルーチン:SSL_CTX_use_certificate_file:システム ライブラリ

足りないものはありますか?

0 投票する
1 に答える
2657 参照

delphi - Delphi XE2 DataSnap - HTTPS 経由で REST を使用すると「接続が正常に閉じられました」

Delphi Win32 アプリと Android アプリの両方から、REST over HTTPS を使用して DataSnap サービスに接続しようとしています。私の Delphi クライアントでは、「正常に接続が閉じられました」というメッセージが表示され、Android アプリは「ピア証明書がありません」で失敗します。クライアント側に何かをインストールする必要があると思います。他の投稿で推奨されているように、Win32 アプリの EXE フォルダーに 2 つの OpenSSL DLL 'libeay32.dll' と 'ssleay32.dll' をインストールしましたが、問題は解決していません。

注意すべきことの 1 つは、TSQLConnection コンポーネントを使用して、DBXpress を使用して Win32 アプリから HTTPS 経由で正常に接続できることです。TDSRESTConnection を使用しても機能しません。Android では、REST のオプションしかありません。

うまくいけば、単純なものが欠けているだけですか?

0 投票する
2 に答える
1709 参照

delphi - プロパティ Required が false に設定されているフィールドから情報を取得する方法は?

ソフトウェアに次の DBX 構造があります。

TClientDataSet のフィールドの 1 つで、Required プロパティが false に設定されています。これは、このフィールドがデータベース (Firebird) のトリガーとジェネレーターに基づいて自動インクリメントするためです。

しかし、TSQLDataSet と TClientDataSet の両方をこのフィールドが必須でないように構成した後、TClientDataSet からこのフィールドを読み取ろうとすると、非常に奇妙な結果が得られます。この状態で TClientDataSet にこのフィールドの値を強制的に取得させるには、何か特別なことをする必要があるのではないかと思います。

ここで何が欠けていますか?

前もって感謝します。

編集

Required プロパティのヘルプ ファイルには、これについての記述がありますが、何をしたいのかよくわかりませんでした。

説明

フィールドに空白以外の値が必要かどうかを指定します。

Required を使用して、フィールドに値が必要かどうか、またはフィールドを空白にすることができるかどうかを調べます。

フィールド エディターでフィールドが作成された場合、このプロパティは基になるテーブルに基づいて設定されます。値が必要なフィールド (パスワードや部品番号など) に対して Required を true に設定するが、基になるテーブルでフィールドが必要とされないアプリケーションは、プロパティを適用するために OnValidate イベント ハンドラーを作成する必要があります。

Required プロパティが基になるデータベース テーブルのプロパティを反映している場合、null 値をポスト適用しようとすると、例外が発生します。基になるテーブルがフィールドを必要としない場合に Required プロパティを true に設定するアプリケーションは、同じ結果を得るために、OnValidate イベント ハンドラーで null 値に対して EDatabaseError 例外を発生させる必要があります。

編集2

言い忘れましたが、TDataSetProvider と TClientDataSet の間には DataSnap 層があります (TClientDataSet 接続は DataSnap ドライバで行われます)。

編集3

この DataSnap セットアップで小さなテスト ケースを作成したところ、完全に機能しました。このプロジェクトはレガシーで乱雑で、私を悩ませているどこかであいまいなオプションを構成しているか、DataSnap のバグに遭遇したかのいずれかだと思います。

0 投票する
2 に答える
863 参照

delphi - Delphi XE2、DataSnap、ルックアップ フィールドの問題

ここで少し問題があります。Delphi XE2 DataSnap テクノロジを使用して、アプリケーション サーバーにルックアップ フィールドを作成しました。クライアント側では、そのフィールドは TStringField になります。さて、問題は、クライアント側でルックアップ機能が失われていることです。その上、クライアント側で stringfield を変更することはできません。これは読み取り専用であるためです (読み取り専用プロパティを手動でオフにしても)。

ルックアップをサポートするためだけにすべてのデータをクライアント側にロードしたくないので、クライアント側でテーブルをルックアップしたくありません。

キー フィールドの値は変更できますが、更新を適用してデータをリロードしない限り、stringfield ルックアップ テキストは変更されません。

ユーザーは、テキストの変更を確認したいと考えています。

私は何をすべきか?

0 投票する
4 に答える
7192 参照

delphi - Delphi XE2 DataSnap - サーバーからクライアントへの TStream を介した JPEG ファイルのストリーミング

ファイルを転送するために TStream オブジェクトを返す DataSnap サーバー メソッドを作成しました。クライアント アプリケーションはメソッドを呼び出し、ストリームを読み取ってファイルをダウンロードします。サーバー メソッドは非常に単純です。

多くの種類のファイル (PDF、GIF、BMP、ZIP、EXE) のダウンロードには問題なく機能しますが、JPG ファイルのダウンロードには機能しません。クライアント側では、メソッド呼び出しから返されるストリーム オブジェクトのサイズは、JPG では常に 0 です。PC でローカルに JPG ファイルを正常にストリーミングできるので、DataSnap と関係があるに違いありません。DataSnap がバックグラウンドでストリームを JSON に変換することを示唆するいくつかの調査を行いましたが、JPG ファイルに関してはこれに問題がある可能性があります - 誰でもこれを確認できますか? クライアント側では、TDSRESTConnection を使用してサーバー メソッドを呼び出しています。ストリーミングの前に JPG ファイルを ZIP できることはわかっていますが、そうする必要はありません。