Почему Статические методы не Применимы как Операции веб-сервиса в веб-сервисах ASMX?

Хотя были значительные продвижения в технологии GC Java, все еще необходимо помнить ссылки. Многочисленные случаи на вид тривиальных ссылочных шаблонов, которые являются на самом деле вложенными множествами крыс под капотом, приходят на ум.

Из Вашего сообщения это не кажется, что Вы пытаетесь реализовать метод сброса в целях объектного повторного использования (верный?). Ваши объекты содержат какой-либо другой тип ресурсов, которые должны быть очищены (т.е. потоки, которые должны быть закрыты, какие-либо объединенные или одолженные объекты, которые должны быть возвращены)? Если бы единственной вещью, по поводу которой Вы волнуетесь, является память dealloc тогда, я пересмотрел бы свою структуру объекта и попытался бы проверить, что мои объекты сам содержавшие структуры, которые будут очищены во время GC.

15
задан John Saunders 11 August 2009 в 22:46
поделиться

2 ответа

Ответ: потому что вы не можете.

Это не так. Дизайн состоит в том, что будет создан экземпляр класса веб-службы, а затем будет вызван метод экземпляра.

Я могу только догадываться, почему Microsoft разработала его таким образом. Чтобы знать наверняка, нужно спросить их. Подумайте:

  1. Нет особых преимуществ в разрешении статических методов. Все, что вы можете делать со статическим методом, вы также можете делать с помощью метода экземпляра.
  2. Класс [WebService] не предназначен для использования в качестве произвольного класса, который используется в качестве веб-службы. Это должен быть класс, созданный вами для демонстрации операций веб-службы. Таким образом, нет необходимости поддерживать классы, которые уже существуют и уже имеют статические методы.
  3. Реализация заголовка SOAP позволяет вашему классу содержать поле экземпляра типа, производного от класса SoapHeader . Это поле будет заполнено входящим заголовком SOAP и / или будет содержать заголовок SOAP, который будет возвращен. Вы не можете сделать это со статическим полем, так как оно будет перезаписываться при каждом запросе.

Как я сказал, это все предположения. Правильный ответ на вопрос: «Вы не можете, потому что Microsoft так спроектировала это. Если вы хотите знать, почему они так спроектировали, вам нужно спросить их».


FWIW, я только что проверил, и он не похоже, что WCF допускает использование статических методов в качестве операций.

Вы не можете сделать это со статическим полем, так как оно будет перезаписываться при каждом запросе.

Как я сказал, это все предположения. Правильный ответ на вопрос: «Вы не можете, потому что Microsoft так спроектировала это. Если вы хотите знать, почему они так спроектировали, вы должны спросить их».


FWIW, я только что проверил, и он не похоже, что WCF допускает использование статических методов в качестве операций.

Вы не можете сделать это со статическим полем, так как оно будет перезаписываться при каждом запросе.

Как я сказал, это все предположения. Правильный ответ на вопрос: «Вы не можете, потому что Microsoft так спроектировала это. Если вы хотите знать, почему они так спроектировали, вам нужно спросить их».


FWIW, я только что проверил, и он не похоже, что WCF допускает использование статических методов в качестве операций.

23
ответ дан 1 December 2019 в 02:46
поделиться

Когда клиент создает объект для вашей веб-службы, на самом деле они создают прокси-объект для этой веб-службы. Этот прокси-объект обрабатывает такие вещи, как открытие и закрытие ваших подключений, а также все накладные расходы, связанные с фактической работой с веб-службой. Вызовом статического метода будет сложно управлять. «Статический прокси» из-за отсутствия лучшего слова должен был бы делать все то, что экземпляр прокси-объекта делает каждый раз, когда клиент вызывает один из статических методов, что приводит к огромным накладным расходам.

3
ответ дан 1 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: