Так или иначе, WCF должен иметь возможность связывать элементы в контракте данных вашей службы с прокси-классами вашего клиента.Как правило, мало смысла скрывать прокси-классы и их члены, но если вы хотите скрыть их, вы можете явно указать имя типов и их членов, используя параметр Name
атрибутов [DataContract]
или [DataMember]
(например. [DataMember Name="ID"]
).Сделав это, вы можете отключить встроенное правило «Типы и поля, помеченные как сериализуемые» на вкладке «Переименовать -> Встроенные правила» и убедиться, что в «Переименовать -> Параметры» установлен флажок «Совместимость с сериализатором XML».вкладка.Предостережение в этом подходе состоит в том, что имена сериализованных свойств все еще включены в ваш код (в атрибутах) и все еще отправляются по проводам.
Если вам требуется дополнительная защита и вы можете контролировать обасервис и клиент, лучший, но более обременительный вариант может заключаться в том, чтобы заключить контракт на обслуживание в отдельной сборке и обработать его с помощью Dotfuscator.Снова отключите встроенное правило «Типы и поля, помеченные как сериализуемые» на вкладке «Переименовать -> Встроенные правила» и убедитесь, что на вкладке «Переименовать -> Параметры» установлен флажок «Совместимость с сериализатором XML».Теперь ссылайтесь на полученную DLL контракта на обслуживание из вашей службы и из вашего клиентского приложения.При таком подходе компромисс заключается в том, что все участники договора будут иметь запутанные имена (например, «a»), и вам придется ссылаться на них как таковые в коде вашей службы и клиентского приложения.Вы можете просмотреть файл карты, который создает Dotfuscator, чтобы разобраться с переименованными именами.