問題タブ [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.
database - dbExpressとDelphi(おそらくDataSnapも)を使用してビジネスモデルを抽象化するにはどうすればよいですか?
私の質問が明確でない場合は、コメントで改善するのを手伝ってください。
私はDelphiとdbExpressを初めて使用し、TSQLDataset、TDataSetProvider、TClientDataSet、およびTDataSourceクラスに精通しています。
私が取り組んでいるプロジェクトでは、このコンポーネントを不思議な方法で使用しています。前に説明したクラスのカルテットがたくさん含まれている巨大なデータモジュールユニットがあります。これを行うには、より良い(そしてよりモジュール化された)方法があると思います。DataSnapは、このデータモジュールをサーバーアプリケーションに配置するためにのみ使用されるため、クライアントはそれを介してデータにアクセスします。
それで、私の疑問のいくつかを説明しようと思います:
- このクラスのそれぞれの役割は何ですか?ドキュメントを読みましたが、このテーマに関する実用的な洞察を得ることができません(特にTDataSetProviderについて)。
- どのクラスをデータモジュールに含める必要があり、どのクラスをフォームに含める必要がありますか?
- データベース設定からビジネスモデルを抽象化するための中間層を作成することは可能ですか(不変のデータセットを返す関数を作成する可能性がありますか?)?
- もしそうなら、DataSnapを使用してそうするのが賢明ですか?
よくわからなくてごめんなさい。前もって感謝します。
sql-server - Datasnap を使用して REAL データベース アプリケーションを構築する
ADO と devexpress を使用して、D2010 で大規模な 2 層アプリケーションを構築しました。これを、脆弱な SQL サーバーへの TCP/IP だけでなく、主に HTTPS 通信を提供するために Datasnap を使用するようにアップグレードしたいと考えています。見つけたすべての Datasnap チュートリアルに従いました。Cary Jensen の Delphi In Depth: ClientDatasets があります。すべてうまくいっていますが、例はほとんど役に立ちません。なぜなら、REAL データベース アプリケーションでは、グリッドは複数のテーブルを結合することによって生成され、単一のテーブルから生成されることはほとんどないからです。これにより、すぐに clientdatasets の「自動解決」機能が不要になります。DB は datasnap サーバーにしかアクセスできないため、提案された beforeupdateevent ハンドラーでさえ datasnap アプリケーションでは機能しません。したがって、必要な挿入/更新ごとにdatasnapサーバーでメソッドを作成し、それらのメソッドをクライアントに公開し、必要に応じてクライアントから呼び出して、datasnapサーバーに必要な実行を要求する必要があるようです更新/挿入。これは大変な作業のようです!
https 通信を SQL Server に実装する簡単な方法はありますか?
ご参考までに、グリッドが TdxMemData に接続されており、直接 TADOQueries に接続されていないという点で、アプリケーションはすでに疑似 3 層になっています。TClientdatasets を使用した場合と同じ方法で、すべての挿入/更新を自分で処理します。
delphi - ある種の DataSnap XE TServerMethods セットアップがありますか?
私はいくつかの TServerMethods を試していますが、それらはすべて Firebird DB とやり取りします。
作成するすべてのメソッドで SQLConnection.DBXConnection を取得したくありませんが、継承された Create 内で ServerMethod が呼び出されるたびに、保護された DBXConnection をセットアップするスーパークラスからその動作を継承したいと考えています。それ。
プロシージャ SetupDBXConnection を毎回呼び出す以外に、それを行う方法を見つけることができました。それを行う方法はありますか?
ありがとう。
windows - Windows Web Server 2008 R2 上の Datasnap/DCOM
Windows 7 / 64 ビットおよび Windows Server 2008 / 64 ビットでも同じセットアップが機能します。
- Datasnap サーバー アプリケーションは、マウントされたネットワーク ドライブ上にあります。
- tregsvr に登録済み
<drive>:\path\to\server.exe
(管理者として) - GUID は dcomcnfg に表示されます
- Socketserver および DCOM サービスが実行されている
クライアントが失敗し、「クラスが登録されていません」というエラー メッセージが表示される
サーバー アプリをローカル ディレクトリに移動し、tregsvr の登録を繰り返すと、クライアントは問題なく接続できます。
他に何を確認できますか?
delphi - スレッドでdatasnapServerMethodによって返されるDataSetを使用しますか?
Omnithreadlibraryを使用してスレッド内からservermethodを呼び出していますが、データは正常に返されますが、返されたデータの使用に問題があります。私が試したすべてのことはAccessViolationで行われるか、アプリケーションのクラッシュでさえあり、データセットを設定しようとしました。 ClientDataSetにリンクされたDataSetProviderですが、ここでも機能しません。最後に、OleVariantを返すようにサーバーメソッドを設定し、ClientDataSetのDataプロパティに直接設定しましたが、エラーも発生しました。
私の目的は、リクエストをスレッドで実行し、データをメインスレッドの関数に返して、グリッドを作成することです。
助言がありますか?
delphi - REST Datasnap オーバーライド URI マッピング
Delphi XE2 で REST データスナップを使用して小さな REST サーバーを作成しました。HTTP メソッド (POST、PUT など) と Delphi で定義された関数の間にはデフォルトのマッピングがあり、これは Delphi コンポーネントによって行われます。
この wiki エントリでは、URI マッピングについて説明していますが、プログラマがデフォルトのマッピングをオーバーライドできることも示しています。
マッピング パターンはオーバーライドできます。ユーザーは、クラス名とメソッド名のパラメーターに基づいて、各型のマッピングをオーバーライドできます。
しかし、マッピングをオーバーライドする方法についての説明は見つかりませんでした。
デフォルトのマッピングを変更するにはどうすればよいですか?
delphi - DataSnapとAdvantageDatabaseServerの使用
Advantage DatabaseでDataSnapを使用しようとしましたが、データを更新できません。datasnapサーバーでTAdsQueryを使用し、クエリをクライアントに返し、TDataSetProviderとリンクします。トレースして、Delphiがサーバー側にあるTAdsConnectionではなくTSQLConnectionを使用して更新を適用することを確認しました。何か案が?
sql-server - ブリーフケース モデルを使用したローカル TClientDataSet の主キー
DataSnap クライアント アプリが DataSnap サーバーのリモート データ モジュールに接続してTDataSetProvider
+を使用するTClientDataSet
と、クライアント アプリのローカルに db テーブル (またはビュー) がキャッシュされます。ユーザーは、TClientDataSet 内のデータをローカルでApplyUpdates(0)
変更し、その変更をサーバーと同期できます。これはすべて理にかなっています。
SQL Server 2008 データベースを使用すると、主キーはフィールドidentity
またはGUID
フィールドのいずれかになります。local に新しいレコードを追加している間、ユーザーがオフラインになると仮定すると、ユーザーが新しいレコードを作成するときに、 localおよびは主キー フィールドの割り当てをTClientDataSet
どのように処理するのでしょうか? ローカルで作成されたレコードはマスター/詳細関係の一部である可能性があるため、新しい主キーをローカルで作成する必要があるのは当然のことです。ユーザーが「ApplyUpdates(0)」を実行すると、どのように解決されますか?TDataSetProvider
TClientDataSet
複数のユーザーがオフラインモードでレコードを作成する場合、それぞれがApplyUpdates(0)
?
フィールドはidentity
フィールドよりも優れていGUID
ますか、それともその逆ですか? なんで?
delphi - DataSnap は、既存の Windows アプリのデータとビジネス ロジックをモバイル/Web クライアントにもたらす適切なソリューションですか?
巨大な Delphi XE アプリケーション (プロプライエタリな SQL サーバー NexusDB を利用) を使用して、クライアントが新しい方法でシステムにアクセスできるようにする必要があります。
- 低速/VPN 接続用のシンナー Windows クライアント
- モバイル/タブレット
- ウェブ
DataSnap はこれに適していますか、それともリモート/モバイル アクセスの提供に関して中間層を間違った方法で導入していますか? 他のソリューション/アイデアを歓迎します。
(私は XE2 Enterprise を持っていますが、しばらくの間 XE Enterprise に行き詰まっています。)
delphi - ISS764ビットWSdll
サーバーアプリケーションDCOM/datasnap(delphi 7)、クライアントアプリケーション(httpsrvr.dllによってサーバーを呼び出す)、およびWebサービスDLL(delphi 7)があります。このdllは、asp.netWebアプリケーションで呼び出されます。すべてがIIS6Webサーバーで正常に動作しますが、IIS 7環境64(Windows Server 2008RC2またはSeven64ビット)にインストールするときに問題が発生しました:1。http呼び出しが機能しない(httpsrvr.dllはISS7サイトのWebで定義されています)2。asp.net(2.0)でのWS呼び出しが機能しない
Apache 2.2ソリューションをテストしましたが、リンククライアント(exe delphi)サーバーは動作します(cgi bin apacheディレクトリのhttpsrvr.dll)。oleVariantサイズの制限(タイムアウト)がありますが、dllWebサービスをセットアップできません。URLは'http://127.0.0.1/cgi-bin/WABridge.dll/soap/IWABridgeのようなものです(このURLはasp.netアプリケーションのURLプロキシです)。このURLはIE(またはFF)->内部エラーでは機能しません。FFで'http://127.0.0.1/cgi-bin/WABridge.dll/IWABridgeを設定すると、wsdl定義ページが表示されますが、asp.netWebページにエラー404ファイルが見つかりません...TIA、よろしく