Веб-сервис.NET инстанцирует с каждым вызовом метода?

Если Вы идете для простого, можно избежать "нового" ключевого слова полностью и просто использовать методы фабрики. Я предпочитаю это, иногда, потому что мне нравится использовать JSON для создания объектов.

function getSomeObj(var1, var2){
  var obj = {
     instancevar1: var1,
     instancevar2: var2,
     someMethod: function(param)
     {  
          //stuff; 
     }
  };
  return obj;
}

var myobj = getSomeObj("var1", "var2");
myobj.someMethod("bla");

я не уверен, что хит производительности для больших объектов, все же.

7
задан Richard210363 17 July 2009 в 16:04
поделиться

3 ответа

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

Если вы хотите, чтобы один объект оставался активным между вызовами, WCF действительно предлагает этот вариант . Учитывая, что ASMX устарел, вы можете перейти на WCF.

3
ответ дан 7 December 2019 в 01:25
поделиться

Это действительно правильно.

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

Если вы достаточно долго будете искать в Интернете, вы обнаружите попытки создания веб-сервисов с отслеживанием состояния (которые имеют свое место, но идут вразрез с основными принципами SOA). Однако вы обнаружите, что они не снимают вашего беспокойства. Вы будете получать новый экземпляр класса при каждом вызове, и любые соединения с БД придется создавать заново.

5
ответ дан 7 December 2019 в 01:25
поделиться

Да, это на 100% верно. Каждый раз, когда сервер получает запрос, создается новый объект для обработки запроса в отдельном потоке.

То же самое происходит с базовой веб-формой ASP.NET.

2
ответ дан 7 December 2019 в 01:25
поделиться
Другие вопросы по тегам:

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