разница между server.createObject и createobject в asp classic

в соответствии с

http://msdn.microsoft.com/en-us/library/ms524620.aspx

вы должны использовать server.createObject

Если вы уже знакомы с VBScript или JScript, обратите внимание, что вы не используете функцию языка сценариев для создания нового экземпляра объекта (CreateObject в VBScript или New в JScript). Вы должны использовать метод ASP Server.CreateObject; в противном случае ASP не сможет отслеживать использование вами объекта в сценариях.

но некоторые другие люди думают, что server.createObject подразумевает накладные расходы, которых в большинстве случаев можно было бы избежать

http://classicasp.aspfaq.com/components/should-i-use-createobject-or-server-createobject.html

CreateObject имеет меньше накладных расходов, чем Server.CreateObject, потому что последний использует MTS, что вызывает значительные накладные расходы.

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

or

http://www.4guysfromrolla.com/webtech/043099-1.shtml

Это может стать важным, если вы пишете компонент, который имеет дело с транзакциями, поскольку было бы хорошей подстраховкой передать его через MTS, потому что вы будете использовать команды MTS. Однако, если вы не используете MTS, вы можете создать процессор и память, передавая их через Server.CreateObject. Поэтому лучше использовать CreateObject, потому что он проходит напрямую.

так что, если я не использую mts и не нуждаюсь в доступе к встроенным объектам asp (например, set d = createObject ("scripting.dictionary")), можно ли просто забыть о server.createObject и перейти к createobject) ???

большое спасибо...


person opensas    schedule 29.09.2009    source источник


Ответы (3)


Те статьи, которые вы цитируете, несколько устарели. Поскольку IIS 5 и COM + в Windows 2000 и выше, использование прямого CreateObject во многом аналогично использованию Server.CreateObject.

Поведение MTS / COM + для CreateObject или Server.CreateObject теперь такое же, отчасти из-за того, что сам ASP работает как приложение COM +. Вы можете указать, что страница ASP запускает транзакцию, а затем с помощью CreateObject любому объекту, реализующему IObjectContext, будет предложено присоединиться к транзакции и т. Д.

Единственное известное мне отличие - это устаревшая вещь, в которой создаваемый COM-объект может иметь OnStartPage и метод OnEndPage. При использовании Server.CreateObject эти методы вызываются при создании объекта и непосредственно перед его освобождением. Этого не происходит с CreateObject.

person AnthonyWJones    schedule 30.09.2009
comment
Энтони, ты обладаешь обширными знаниями в области ASP, откуда ты все это берешь? Как всегда впечатляюще :) - person Pete Duncanson; 06.10.2009
comment
Интересный; Я этого не знал. Вы порекомендуете какие-либо ссылки в поддержку этого описания и для получения дополнительной информации? Я никогда не видел актуальной информации по этому поводу. - person Euro Micelli; 12.06.2014

Короче говоря, да, все в порядке. Как говорит Рина С., если вы прочитаете всю последнюю статью:

"Надеюсь, теперь вы понимаете разницу и когда их использовать".

Ситуация, которую вы описываете, было бы хорошим временем, просто используйте CreateObject, а не Server.CreateObject.

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

person Pete Duncanson    schedule 29.09.2009

Преимущество использования createobject заключается в том, что можно тестировать или повторно использовать библиотеки при использовании простого cscript.exe. Просто удалите теги ‹%%>.

person Joost Moesker    schedule 01.10.2009