заменить типы свойств XmlQualifiedName [] на строку []? - PullRequest
0 голосов
/ 12 апреля 2011

Я сгенерировал прокси-класс, выполняющий svcutil на wsdl на основе этого wsdl .

Мне пришлось внести некоторые изменения, чтобы веб-служба работала.Например, мне пришлось заменить все типы данных свойств типа double [] на string [].

Теперь мой вопрос:

Можно ли (все еще допустимо) изменить сгенерированный мной прокси-файл и заменить типы свойств XmlQualifiedName [] на строку []?

Причины, по которым я хочу это сделать, состоят в том, что:

  • выглядит XML-ответ.намного лучше / чище, когда я использую строку
  • Ответ XML с использованием XMLQualifiedName делает некоторые нежелательные кодировки "x003A" на двоеточие.

Пример ответа с использованием XmlQualifiedName []:

...
    <Filter_Capabilities xmlns="http://www.opengis.net/ogc">
            <Spatial_Capabilities>
               <GeometryOperands>
                  <q1:GeometryOperand xmlns:q1="http://www.opengis.net/ogc" xmlns="">gml_x003A_Point</q1:GeometryOperand>
                  <q2:GeometryOperand xmlns:q2="http://www.opengis.net/ogc" xmlns="">gml_x003A_LineString</q2:GeometryOperand>
                  <q3:GeometryOperand xmlns:q3="http://www.opengis.net/ogc" xmlns="">gml_x003A_Polygon</q3:GeometryOperand>
               </GeometryOperands>
...

Пример ответа с использованием строки []:

...
 <Filter_Capabilities xmlns="http://www.opengis.net/ogc">
    <Spatial_Capabilities>
       <GeometryOperands>
          <GeometryOperand>gml:Point</GeometryOperand>
          <GeometryOperand>gml:LineString</GeometryOperand>
          <GeometryOperand>gml:Polygon</GeometryOperand>
       </GeometryOperands>
...

1 Ответ

0 голосов
/ 16 апреля 2011

В конечном итоге, вы можете сменить прокси-сервер на ваше усмотрение. Действительность ваших изменений в конечном итоге определяется тем, делают ли клиент и служба то, что вы хотите, чтобы он делал во всех случаях с модифицированным прокси.

Однако я вижу несколько возможных проблем с этим изменением:

  • Если вы используете эти типы не только для XML - например, если вы используете их для отправки JSON в службу - служба выдаст исключение. Это НЕ проблема для сценария XmlQualifiedName / string (поскольку десериализатор JSON в WCF ожидает обычные строки в стиле JSON в обоих случаях). Это, однако, проблема в сценарии с двумя строками (так как десериализатор JSON в WCF ожидает число JSON для двойных чисел, но строку JSON для строковых значений).

  • Если вы используете эти же типы для отправки обратно XML-запросов или ответов обратно в службу, они могут вызвать ошибки на стороне службы даже в сценариях XML / SOAP. Более опасно, что они могут заполнить сервисную сторону неверными или пустыми данными (например, пустыми строками, обнуленными числами, неполными именами, определенными в XML и т. Д.). Это будет особенно опасно в полиморфных сценариях, если вы начнете делать подобную магию с примитивами.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...