私はhttp://blogs.msdn.com/b/donsmith/archive/2006/10/06/handcrafting-wcf_2d00_friendly-wsdls.aspxのガイダンスに従って、WCF svcutil が信じる WSDL を作成しようとしました。ドキュメント/リテラルのラップ形式。その際、svcutil は、データ コントラクト シリアライザーを使用するサービス インターフェイスとプロキシ コードを C# で生成し、ラッパー操作で OperationContractAttributes を生成する必要があります。代わりに、BlahResponse クラスにネストされた BlahResponse1 クラスで奇妙な二重ラップが発生し、svcutil は WSDL がラップされておらず、OperationContract ではなく MessageContract を作成することを通知します。
サービス利用者がコードを読みやすくするために、BlahResponse1 クラスを取り除き、WSDL がラップされていることを svcutil に納得させたいと考えています。どうやってそれを行うのですか?多分また、どうやってそれをしないのですか?
データ コントラクトになるスキーマのすべての要素ではなく一部の要素に nillable="true" を設定するという提案を見てきました。どちらが nillable であるべきで、その理由は? nillable="true" の設定が悪い場合、nillable ではない要素が必要になることはありますか?
上記のリンクが示唆するように、スキーマを 2 つの名前空間に分割しようとしましたが、うまくいかないようでした (または、別の問題によってマスクされていました)。スキーマの名前空間、インポートとインクルード、および宣言の順序について重要なことはありますか?
スキーマ/WSDL を含めますが、これらは一種の独自仕様です。また、非常に大きく、多くのファイルに分散しています。