問題タブ [wcf-data-services-client]
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.
wcf-data-services - WCF データ サービスで .NET クライアント データ コンテキストのパフォーマンスを向上させるためのヒントはありますか?
次のスタックを使用して新しいアプリを開発しています。
SQL Server 2008 R2 -> Entity Framework 4.2 -> WCF データ サービス -> WCF データ サービス クライアント ライブラリ
これはすべて.NET 4.0です
現在、WCF Data Services クライアント ライブラリは、少量のデータや単純なスキーマ/オブジェクト グラフには非常に便利ですが、より複雑なモデルには向いていません。特に、DataServiceContext.Links コレクションは O(n^2) のようにスケーリングすることがわかりました。ロードする関連オブジェクトが多いほど、グラフがネストされているほど遅くなり、データのロードに時間がかかります。ネットワークから読み取るよりもコンテキストに入れます。
たとえば、2000 メンバーのコレクションがあり、各メンバーに 4 つのナビゲーション プロパティがあるとします。ナビゲーション プロパティを展開せずにコレクション全体をプルするには、約 1 秒かかります。4 つのナビゲーション プロパティをすべて展開するには 5 秒かかります。スタックのさまざまなポイントでパフォーマンスを測定しましたが、余分な時間の大部分はクライアントで費やされ、データが照合されました。
大規模なデータセットでこれを回避するために、さまざまな手法を採用しています。
- 非正規化。これは、常に展開するグラフに適しています。グラフの一部の読み込みを遅らせたい場合は、うまく機能しません。
- 関連するオブジェクトを個別にロードし、データ コンテキストの外でそれらをつなぎ合わせます。これは面倒ですが、context.Links の問題を解決します。
- 複数のデータ コンテキストを使用して、Links コレクションへの負荷を最小限に抑えます。
- (1) & (2) に接続して MergeOption.NoTracking を使用する
他のテクニックを知っている人はいますか?関連オブジェクトをロードするときに不要なオーバーヘッドを引き起こしている可能性のある設定はありますか?
独自のカスタム コンテキストを作成する途中のように見える場合があり、これ以上複雑になる前にサニティ チェックを行いたいと思います。
[はい、WCF Data Services がこの仕事には不適切なツールである可能性があることは認識しています。残念ながら、私たちはすでにその道を進んでいます]
c# - WCFデータサービスは多くのものをサポートしていません
WCFDataServicesの2011年3月のCTP2とEntityFramework4 Code Firstを使用していますが、多くの問題が発生しています。私が抱えている問題は、サポートされていない「内部クエリ」に関連しています。
たとえば、サービス側にAuctionオブジェクトがあり、Auctionオブジェクトに0以上の入札を添付できます。ここで、クライアント側でこのクエリを実行して、現在の最高入札額(オークションオブジェクト)を見つけたいと思いました。
入札がない場合、これが失敗するという事実を無視してください。このクエリを実行すると、このエラーが発生します
だから私はこのロジックをサービス側に置くと思いました。クライアントからこのようにこのメソッドを呼び出します(これもオークションです)
再びエラーが発生します
私の質問は、なぜこれが起こっているのかということです。使用しているWCFデータサービスのバージョンが原因ですか?これらの問題は最新リリースで解決されていますか?
ありがとう
サチン
編集
wcf-data-services - WCF Dataservices 応答から ETAG を抽出するにはどうすればよいですか?
私はかなり長い間、この質問に対する答えを得ようとしてきました。WCF Dataservice はスレッド セーフではなく、再作成する必要がある場合が多いため、データストアにレコードをクエリしたら、その応答から ETAG を抽出して、データ コンテキストを再構築するときに使用できるようにするにはどうすればよいですか?
wcf - WCF ディスカバリーと DataService V3
Data Services v3 の検出エンドポイント (TCP と UDP の両方) を公開し、クライアントからサービスを検出できるようにして、別のアプリケーションでそれらを検出できるようにしたいと考えています。検出の主なポイントは、クライアントでサービス エンドポイント アドレスを取得することです。
Microsoft がWCF Discoveryに提供したサンプルを適応させようとしましたが、これまでのところ目標を達成できませんでした。サーバー側でカスタムData Service Host Factoryを作成しました。
クライアント側では、次のコードを試しました。
残念ながら、これは機能しません。InvalidOperationExceptionを取得します:
DataModel のコントラクト タイプを取得しようとしましたが、そのタイプは ServiceContract ではなく、ServiceContract を継承していません。
正しい方向に向かっているのであれば、発見のためのサービス コントラクトのタイプを表現する方法が必要です。残念ながら、通常の WCF Discovery のように機能するかどうかはわかりません...
あなたのアイデアを共有してください。または、より良い解決策を共有してください。
entity-framework - DbContext.Set(type) に相当する DataServiceContext.Set(type) はありますか
私は最近、Entity Framework の DbContext を中心に構築された非常に堅牢な API を作成しました。私は多くのメタデータ プログラミングを使用しており、DbContext.Set(typeof(Customer)) のような呼び出しでデータを取得できるという事実を利用しています。ただ、私の API では、コンパイル時にどの型を Set メソッドに渡すかわかりません。これは EntityFramework で非常にうまく機能しており、レイヤーの抽象化をもう 1 つ追加して、EntityFramework または DataServiceContext の両方で機能させたいと考えています。それで、私は本当に2つの質問があります。
まず、より具体的には、DbContext.Set(type) メソッドに相当する DataServiceContext (つまり odata/wcf) はありますか?
次に、より一般的には、DbContext によって提供される API と DataServiceContext を比較する優れたリソースはありますか?
wcf - Mono for Android の OData の品質
いくつかのクロスプラットフォーム ライブラリを作成しようとしています。モバイル プラットフォームに関して私にとって最も重要なことの 1 つは、Web サービスにアクセスすることです。かなりの量の読み取りを行った後、最良の解決策は DataServiceContext (wcf-data-services-client) に対して書き込むことであると思われます。
クロス プラットフォーム ライブラリを作成し、mono for Android のトライアルを開始する前に、Android でこのライブラリを使用した経験がある人がいるかどうかを知りたいと思いました。Mono for Android で WCF クライアント ライブラリを使用した経験のある人はいますか? この件に関する情報や個人的な経験は役に立ちます。
ありがとうございました。
delphi - Delphi XE3は、Soapと同じようにWCFデータサービスにアクセスできますか?(XMLを手動で解析する必要はありません)
Delphi XE3を購入しようとしていますが、デモをインストールしてから、WCFデータサービスにサービス参照を追加できないことに気付きました。サービスのメタデータURLとサービスのベースURLを使用してみましたが、うまくいきませんでした。
Atomフィードからクライアント側のオブジェクトへのシリアル化/逆シリアル化を処理するこの機能のネイティブサポートが必要です。
Delphiのマーケティング資料は、WCFデータサービスのネイティブサポートを提案しています。httpリクエストを作成してから、返されたXMLを手動で解析する必要がある場合は、Delphi2010からアップグレードしない方がよいでしょう。
誰かがこれを経験したことがありますか?jsonのみを出力する必要がありますか?DelphiでのWSDLインポートの代わりに、これを処理するために使用する必要のある特定のコンポーネントはありますか?
ありがとう
asp.net-web-api - WebApi Odata Windows ストア アプリの EndSaveChanges 例外
WebApi Odata コントローラーを使用して Windows ストア アプリを作成しようとしています。いくつかの努力の後、すべての Get リクエストが機能するようになりました。現在、CRUD メソッドに移行しており、データ サービス コンテキストの EndSaveChanges で次の例外を取得しています。
これは、このhttp://aspnetwebstack.codeplex.com/workitem/822からの WebApi のバグであり、実際のエラーを隠していると思います。それが私の Odata エンドポイントではないことを確認するために、エントリを取得して更新し、パッチを適用して元に戻すクイック コンソール アプリを作成しました。これはすべて正常に機能しました。My WebApi Odata Controller は、
public HttpResponseMessage Patch([FromODataUri] Guid key, Delta<ESFClient> patch)
As メソッドを使用して ODataController から派生します。私の Windows アプリケーションでは、変更を保存するための DataServiceContext に拡張メソッドがあります。
そして、空白の Windows ストア XAML ページからそのように更新を呼び出します。
誰かが同じ問題に遭遇したり、実際のエラーを見つける方法を知っていますか. 興味深い点の 1 つは、Windows アプリの実行中にコントローラーをデバッグすると、パッチ メソッドが呼び出されないことです。
c# - WCF DataService クライアントから単一のレコードを取得するためのベスト プラクティス
T が EntityFramework DbContext クラスである DataService があります
私のクライアント アプリは、サービス参照を持つ Windows フォーム アプリです。
サービスから単一のエンティティを取得するための最良の方法は何ですか?
このコードは機能します:
しかし、製品が存在するため、機能します。それは、実行して結果を見ることができるからです
ブラウザで。データベースに存在しない製品 123456 を照会したい場合
エラーテキスト ` セグメント 'Products' のリソースが見つかりません' が表示される
問題は、クライアント側で例外が発生することですが、FirstOrDefault()
代わりに null になると予想されます。確かにいくつかの例外処理を使用できますが、私のアプローチが正しいかどうか、または単一のオブジェクトを取得するためのより良い方法があるかどうか疑問に思っています。