Нет проблем с использованием пространства имен, которое является строкой. Пусто. Весь смысл использования пространства имен вообще состоит в том, чтобы отличать его от других контрактов данных, которые имеют то же имя DataContract, но другое пространство имен DataContract. Это особенно важно, поскольку имена / пространства имен DataContract никоим образом не обязательно связаны с именами / пространствами имен, полученными из их представления типа CLR.
Другими словами, если вы уверены, что у вас НЕ будет других типов с тем же именем DataContract в другом пространстве имен в вашем приложении - и , если вы считаете, что в будущем их не будет. из-за соображений управления версиями - вы можете продолжать использовать string.Empty в качестве пространства имен контракта данных.
Помимо только атрибута операции (WebGet / WebInvoke), вам также необходимо учитывать, какую привязку и поведение вы используете сейчас и что вы будете использовать в будущем. Например, прямо сейчас вы можете использовать WebHttpBinding и WebHttpBehavior. Вы можете контролировать, какие форматы данных также поддерживаются на уровне WebHttpBinding - XML, JSON, Binary и т. Д. Вы также можете контролировать, какой ТИП XML возвращается из WebHttpBehavior - XML может быть «пустым» или «может быть» завернутый », который имеет дополнительную вложенность. Наконец, вы можете даже подключить свой собственный DataContractSerializerOperationBehavior в какой-то момент, чтобы подключить совершенно новый сериализатор или собственный формат данных, если вы захотите (хотя, если вы сделаете это, вам потребуется реализовать свой собственный сериализатор, форматтер, поведение , связывание, кодирование и т. д., как это было сделано для SOAP и JSON.)
Надеюсь, это поможет!