問題タブ [datacontract]
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 - WCF サービスで使用できる DataContract の数に制限はありますか?
WCF3.5SP1、VS2008 を使用。約 10 個のサービス メソッドを公開する WCF サービスを構築します。サービスで使用される約 40 の [DataContract] タイプを定義しました。[DataContract] 型をプロジェクトに (他の既存の型と同じ名前空間で) 追加すると、適切に公開されないことがわかりました。新しいタイプは、WSDL で生成された XSD スキーマにはありません。既存の (そして機能する) タイプをコピーして名前を変更するところまで行ってきましたが、生成された WSDL/XSD にも存在しません。
2 つの異なる開発者マシンでこれを試しましたが、同じ問題です。
サービスの [DataContract] として公開できる型の数に制限はありますか? 名前空間ごと?
c# - C# で JSON を使用する方法について混乱している
JSONでのC# の使用に関するほぼすべての質問に対する答えは、「JSON.NET を使用する」であるように思われますが、それは私が探している答えではありません。
私がそう言う理由は、私がドキュメントで読むことができたすべてのものから、JSON.NET は基本的に、.NET フレームワークに組み込まれた DataContractSerializer のより優れたパフォーマンスのバージョンであるということです...
つまり、JSON 文字列をデシリアライズしたい場合は、すべてのリクエストに対して厳密に型指定された完全なクラスを定義する必要があります。したがって、カテゴリ、投稿、作成者、タグなどを取得する必要がある場合は、これらすべてに対して新しいクラスを定義する必要があります。
クライアントを構築し、フィールドが何であるかを正確に知っている場合、これは問題ありませんが、他の誰かの API を使用しているため、サンプルの応答文字列をダウンロードして JSON 文字列から手動でクラスを作成しない限り、コントラクトが何であるかわかりません。 .
それが唯一の方法ですか?json["propertyname"] で読み取ることができる一種のハッシュテーブルを作成する方法はありませんか?
最後に、自分でクラスを作成しなければならない場合、API が変更され、変更が通知されない場合はどうなりますか (Twitter では悪名高いようです)。入ってオブジェクトのプロパティを更新するまで、プロジェクト全体が壊れると思います...
では、JSON を扱うときの一般的なワークフローとは正確にはどのようなものでしょうか? そして、一般的には、ライブラリに依存しないことを意味します。特にターゲットライブラリに対してではなく、一般的にどのように行われるかを知りたい...
wcf - WCF-インターフェイスから継承するDataContract
IIdentityから継承するWCFインターフェイスの一部としてデータコントラクトがあります。
このサービスは、AuthenticationIdentityオブジェクトを正常に返します。ただし、クライアントで明らかなキャストを実行しようとすると、次のようになります。
AuthenticationIdentityをIIdentityにキャストできないという苦情があります。私はServiceKnownTypesをインターフェースに追加しようとしました:
しかし、それでも運はありません。何か案は?
c# - WCF では、複数の操作コントラクトを持つ方が良いですか、それともポリモーフィック データ コントラクトを使用する操作を 1 つだけ持つ方が良いですか?
WCF では、複数の操作コントラクトを使用する方が良いのか、ポリモーフィック データ コントラクトを使用する操作コントラクトを 1 つだけ持つ方が良いのか疑問に思っていました。
ちょっとした例を挙げましょう:
また
アクション コントラクトは、action1Contract と action2Contract の両方が継承する抽象クラスになります。アクション コントラクトはdo()
、そのインターフェイスでメンバー関数を指定し、子クラスでオーバーロードする必要があります。
個人的には、派生した actionContract でデータとアクションを適切にカプセル化でき、新しいアクションを簡単に追加できるため、2 番目のアプローチの方が興味深いと思います。しかし、私が WCF を使用するのは初めてなので、おそらくよく知っているでしょう!
json - Asp.Net MVC 2: クライアント側の JavaScript とデータ コントラクトを共有する方法はありますか?
次のものがある場合:
- ビュー モデルを定義するオブジェクト クラスを持つ Asp.Net MVC 2 プロジェクト。
- JSON を使用して、これらのモデルを Web ブラウザー クライアントにシリアル化します。
- クライアントは、請求書の注文明細などの情報をオブジェクトに追加します。
- クライアントは処理のためにオブジェクトをサーバーに送り返します。
JSON オブジェクトのデータ コントラクトをクライアントと共有する方法はありますか? サーバーが Order ファクトリを使用して Order を作成し、それをクライアントに送信することを本当に望んでいます。クライアントは、データ コントラクトを使用して注文明細行を追加し、完全に入力されたオブジェクトを JSON として送り返します。
私は本当にクライアントでJavaScriptで次のことをしたいと思っています:
Asp.Net MVC 2 への例や Web ページへのリンクは非常に役立ちます。
linq-to-sql - LINQ To SQL オブジェクト拡張メソッドのクローンを作成すると、オブジェクト破棄例外がスローされる
LINQ To SQL オブジェクトを複製するための拡張メソッドがあります。
しかし、すべての参照がロードされていないオブジェクトを運ぶ間、DataLoadOptions でクエリを実行しているときに、オブジェクトが破棄された例外がスローされることがありますが、ロードされていない参照 (null) は要求しません。
たとえば、多くの参照を持つ Customer があり、Address 参照 EntityRef<> をメモリに保持する必要があるだけで、他には何もロードしません。しかし、オブジェクトのクローンを作成している間、この例外により、すべての EntitySet<> 参照を Customer オブジェクトでロードする必要があり、負荷が大きすぎてアプリケーションの速度が低下する可能性があります。
助言がありますか?
.net - 抽象クラスでのWCFの使用
WCFで抽象クラスのDataContractを定義するにはどうすればよいですか?
WCFを使用して正常に通信するクラス「Person」があります。次に、Personから参照される新しいクラス「Foo」を追加します。すべてまだ良いです。しかし、Fooを抽象化し、代わりにサブクラスを定義すると、失敗します。サーバー側ではCommunicationExceptionで失敗しますが、それはあまりわかりません。
テスト用に作成された簡略化されたクラス:
c# - WCF コントラクトの設計 (操作/データ)
私は現在、いくつかの WCF サービスの設計を検討しており、操作/データ コントラクトを処理する最善の方法についてコミュニティの意見を得たいと考えていました。
私は 2 つの基本的な操作契約を持っています。1 つ目は見積もりを作成し、2 つ目はアイテムを見積もりに追加します(そして、舞台裏で合計を計算します)。
1 つ目は、顧客情報と店舗情報を受け取り、 quoteを返します。
2 つ目は、見積もりとアイテム オブジェクトを受け取り、合計を計算して、アイテムを含む見積もりを返します。
私の質問は、このシナリオでデータ コントラクトを設計する方法についてです。
CreateQuoteの場合、顧客プロパティと店舗プロパティを設定して見積もりオブジェクトを渡す必要がありますか、それとも顧客と店舗オブジェクトを含むが見積もりオブジェクトを渡さない何らかの種類の QuoteRequest オブジェクトが必要ですか?
AddQuoteItemの場合、Quote オブジェクトを含む必要なプロパティ セットを使用して QuoteItem オブジェクトを渡す必要があります。または、Quote オブジェクトとアイテム オブジェクト (関係なし) を持つ QuoteItemRequest オブジェクトが存在し、QuoteItem オブジェクトを使用して再計算された Quote が存在する必要があります。戻ってきた?
言い換えれば、彼らはこのように見えるべきですか?
それとも、彼らはこのように見えるべきですか?
rest - WCF Rest 複数の DataContract がラップされる
そこで、Rest WebHttp を使用して wcf Web サービスを呼び出しています。また、テスト用に 2 番目のバインド mex をセットアップしました。私の方法は機能していますが、フィドラーまたはクライアント アプリを介して直接 httppost でテストしようとすると、400 Bad request エラーが発生します。複数のデータ契約をメソッドに渡しています。ラップされた BodyStyle を使用する必要がありますが、テスト用に xml をフォーマットする方法がわかりません。これと同じエラーを試すためのテストメソッドを作成しました。ここに私のコードがあります:私の他のすべてのメソッドは1つのデータコントラクトで機能しますが、2つあるこのメソッドは機能しません。問題はこの投稿の下部にある xml にあると思います。ラップする必要がありますが、ラップする方法がわかりません。
私が使用している私のxml
wcf - サロゲートを使用してWCFでデリゲートをシリアル化しますか?
私にはアイデアがありますが、それを実装するための支援が必要です。
WCFは、契約でデリゲートをサポートしていません。代わりに、面倒なコールバックコントラクトメカニズムがあり、この制限を克服する方法を探しています。
IDataContractSurrogate
コントラクト内の各デリゲートを、リモートエンドポイントにシリアル化されるトークンに置き換えるためにを使用することを考えました。そこで、トークンは生成されたデリゲートに逆シリアル化されます。この生成されたデリゲートは、(デリゲートが呼び出された)すべての引数をカプセル化する汎用コールバックメッセージを送信します。
ジェネリックコールバックメッセージは最初のエンドポイントに到達し、そこで元のデリゲートが引数を使用して呼び出されます。
目的の(簡略化された)シーケンスは次のとおりです。
- AはB-proxy.Foo(callback)を呼び出します
- コールバックはDelegateSurrogateを介してシリアル化されます。
- DelegateSurrogateは、デリゲートを専用のデリゲートストレージに格納し、トークンに置き換えます
- メッセージはBのエンドポイントに到着します
- トークンはDelegateSurrogateを介して逆シリアル化されます
- DelegateSurrogateは、生成されたデリゲートを構築します
- B.Foo(generatedCallback)が呼び出されます
- 後で、BはgeneratedCallback(args)を呼び出しています
- generateCallback(args)は、Aのエンドポイントで専用のジェネリックコントラクトを呼び出します:CallbackContract-proxy.GenericCallback(args)
- CallbackContract.GenericCallback(args)がAのエンドポイントで呼び出されます
- 元のコールバックがストレージから取得され、呼び出されます:callback(args)
以前にサービスバス(NServiceBus
)を使用してこれを実装しましたが、このアイデアをWCFに適合させたいので、苦労しています。手順3、6、9、および11を実装する方法を知っています。WCFのすべて(特に代理部分)を配線する方法はまだわかりません。
それだけです-私の質問が理にかなっていて、ここでの集合的な知恵が私がこれを構築するのを助けることができることを願っています。
これが私の希望するソリューションの使用例です。