Если Вы идете для простого, можно избежать "нового" ключевого слова полностью и просто использовать методы фабрики. Я предпочитаю это, иногда, потому что мне нравится использовать 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");
я не уверен, что хит производительности для больших объектов, все же.
Для ASMX это правильно и в значительной степени хорошо. Службы должны быть как можно более безгражданскими, и если вам действительно нужно что-то хранить между вызовами, вы можете использовать синглтон. Я не думаю, что сохранение соединения с базой данных было бы правомерным, потому что они кэшируются, и вы все равно хотите ограничить свое использование.
Если вы хотите, чтобы один объект оставался активным между вызовами, WCF действительно предлагает этот вариант . Учитывая, что ASMX устарел, вы можете перейти на WCF.
Это действительно правильно.
Веб-службы (в сервис-ориентированной архитектуре) предназначены для того, чтобы не иметь состояния (они ничего не запоминают между вызовами ... все данные сохраняются до вы).
Если вы достаточно долго будете искать в Интернете, вы обнаружите попытки создания веб-сервисов с отслеживанием состояния (которые имеют свое место, но идут вразрез с основными принципами SOA). Однако вы обнаружите, что они не снимают вашего беспокойства. Вы будете получать новый экземпляр класса при каждом вызове, и любые соединения с БД придется создавать заново.
Да, это на 100% верно. Каждый раз, когда сервер получает запрос, создается новый объект для обработки запроса в отдельном потоке.
То же самое происходит с базовой веб-формой ASP.NET.