いずれにせよ、WCFは、サービスのデータコントラクトの要素をクライアントのプロキシクラスにバインドできる必要があります。通常、プロキシクラスとそのメンバーを難読化する価値はほとんどありませんが、それらを難読化する場合は、または属性のName
パラメーターを使用して、型とそのメンバーの名前を明示的に設定できます(例)。これを行ったら、[名前の変更]-> [組み込みルール]タブから[シリアル化可能としてマークされたタイプとフィールド]組み込みルールを無効にし、[名前変更]->[オプション]で[XMLシリアライザーとの互換性]がオンになっていることを確認できます。タブ。このアプローチの注意点は、シリアル化されたプロパティの名前が(属性の)コードに引き続き含まれ、ネットワークを介して送信されることです。[DataContract]
[DataMember]
[DataMember Name="ID"]
より多くの保護が必要で、サービスとクライアントの両方を制御できる場合は、サービスコントラクトを独自のアセンブリに入れて、Dotfuscatorで処理することをお勧めします。ここでも、[名前の変更]-> [組み込みルール]タブから[シリアル化可能としてマークされたタイプとフィールド]組み込みルールを無効にし、[名前変更]->[オプション]タブで[XMLシリアライザーとの互換性]がオンになっていることを確認します。次に、サービスとクライアントアプリケーションの両方から結果のサービスコントラクトDLLを参照します。このアプローチとのトレードオフは、契約メンバー全員が難読化された名前(たとえば、「a」)を持ち、サービスおよびクライアントアプリケーションコードでそれらを参照する必要があることです。名前が変更された名前を理解するために、Dotfuscatorが作成するマップファイルを調べることができます。