Asp windows script components


Asp windows script components

Windows Script Components provide you with an easy way to create Component Object Model (COM) components using scripting languages such as Visual Basic Scripting Edition (VBScript) and other languages compatible with the ECMA 262 language specification (such as JScript 2.0 and JavaScript 1.1). You can use script components the same way you would use any COM component in an application such as ASP.

Script component technology is made up of the following:

The script component run-time (Scrobj.dll).

Interface handlers , which are components that extend the script component run-time. An interface handler is a compiled component (generally written in C++) that implements specific COM interfaces. When you install the script component run-time, you will receive the Automation interface handler, which makes it possible to call your script component from an .asp file.

Your script component file (a.sct file). In your script component, you specify which interface handler you want to use. Your script component also defines the methods that can be called from an .asp file to accomplish the intended functionality.

Script components are an excellent technology for developing prototypes of COM components. Script components, like any other COM component, can be registered with Component Services if you intend for them to participate in transactions, or if you want to take advantage of the Component Services run-time environment.

Sometimes components need to access the ASP built-in objects (Server, Request, Response) to get information about the client request or to build the response. Components can access the ASP built-in objects by using the ObjectContext object. For more information, see Accessing ASP Built-In Objects from Components.

Asp windows script components

Подскажите пожалуйста, возможно ли создание COM объекта не зарегистрированного на локальном компьютере посредством функции GetObject, которая обращается к файлу .wsc на сервере, который в свою очередь имеет публичный метод, который создает этот объект и вызывает какой-нибудь его метод?

Пытался сделать следующим образом :

1) На сервере зарегистрировал Com объект с Prog

2) Туда же положил на сайт файл component.wsc след. содержания:

3) С клиента обращаюсь к файлу след. образом:

SAPIEN Technologies

windows script component, type lib + registering

Forum rules
Do not post any licensing information in this forum.

Any code longer than three lines should be added as code using the ‘Select Code’ dropdown menu or attached as a file.

windows script component, type lib + registering

Post by Sascha.Kruening@mum.de » Tue Sep 16, 2008 7:59 am

Hello,
I tried to create a windows script component, using Primal Script.
My problems: Registration via regsvr32 failed, because of a line in the generated code
Function Register()
:
TypeLib.Write
Method Write does not exist.

Removing this line allows me to register the component, but I still have not got a type library.
Running the command «Generate Type Library» from inside the workspace browser always fails.

Has anybody got an example on how to create a script component?

WSH, часть 3: Windows Script Components

Компоненты WSC (Windows Script Component), известные ранее как «серверные скриптлеты», представляют собой компоненты COM (также известные как объекты Active X или объекты OLE-автоматизации), которые реализованы в языке разработки сценариев. Файлы WSC — это текстовые файлы формата XML, которые используют расширение .wsc. Одним из главных преимуществ WSC является возможность повторного использования кода. Объекты, реализованные посредством WSC, в дальнейшем могут быть использованы в любом сценарии Windows Script Host (WSH)

Для того чтобы разобраться в структуре файла формата WSC, необходимо иметь базовые представления о том, что такое компоненты COM. COM — это одна из тех основных технологий, благодаря которым сценарии WSH являются столь полезным инструментом. Сценарий WSH может использовать хост-компоненты COM для получения доступа к тем функциям, которые сам язык сценариев реализовать не может. Например, язык VBScript сам по себе не предоставляет каких-либо возможностей для доступа к файловой системе, однако для работы с файлами в VBScript можно использовать СОМ-компонент Scripting.FileSystemObject. Таким образом, при реализации практических задач администрирования, сценарии WSH в полной мере задействуют компоненты COM.

Вы можете сами создавать полнофункциональные компоненты COM непосредственно в тексте сценария. Разработка собственных компонентов — это очень удобный способ создания отдельных объектов, которые в дальнейшем могут свободно использоваться в других сценариях, а также в других языках программирования, поддерживающих технологию COM, таких как Visual Basic (VB).

Как было отмечено выше, файлы WSC — это текстовые файлы формата XML, которые описывают набор элементов и атрибутов, определяющих интерфейс объекта (в частности, свойства и методы, которые могут вызываться из сценариев), а также его реализацию на каком-либо языке сценариев.

Файлы WSC имеют несколько собственных элементов XML:

  • Внутри элемента реализуется полное определение компонента сценария. Все остальные элементы должны размещаться между тегами и .
  • С помощью элемента the в компоненте может быть реализована более углубленная проверка ошибок. Здесь используются два атрибута: error и debug. Если error=»true», то будут выводиться более подробные сообщения об ошибках, а если используется атрибут debug=»true», то это дает возможность пошагового выполнения кода сценария в отладчике сценариев (script debugger).
  • В элементе размещается информация, необходимая для регистрации данного компонента COM в системе. Он имеет четыре атрибута, которые приведены в Таблице 1. Корректный глобально уникальный идентификатор (GUID) можно сгенерировать либо с помощью мастера Windows Script Component Wizard (см. вкладку «Дополнительные ресурсы»), либо с помощью утилиты guidgen.exe из пакета Platform Software Development Kit (SDK). Когда вы регистрируете или удаляете (unregister) компонент (эту процедуру я далее кратко опишу), исполнительная среда WSC использует данные, размещенные в элементе для внесения соответствующих изменений в реестр.
  • Компонент


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

или должны размещаться внутри элемента

служит для объявления свойств компонента. В случае простого свойства read/write (чтение/запись) элемент

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

также может использовать элементы

и (они не имеют закрывающих тегов), когда необходимо вызвать код, реализующий установку и/или извлечение значения данного свойства, а также при создании свойств типа read-only или write-only. Если создается свойство write-only, то в этом случае в элемент

включается только элемент

. В сценарии, в свою очередь, должна быть определена функция с именем put_propertyname, где propertyname соответствует имени требуемого свойства. Соответственно, при создании свойства read-only используется только элемент , а соответствующая функция в сценарии должна иметь название get_propertyname. Для использования других имен функций, используемых для обращений к свойствам, в элементы

и может добавляться атрибут internalname.
Элемент используется при объявлении того или иного метода компонента. Имя метода должно совпадать с именем соответствующей функции в коде сценария. Как и в случае элемента

, если нужно использовать различающиеся имена, задействуйте атрибут internalname. При необходимости объявления параметров функции могут применяться один или несколько элементов

Поделитесь материалом с коллегами и друзьями

Скрипт отключения компонентов Windows

Продолжаю серию статей по администрированию операционной системы Windows. В предыдущей статье работа велась с пакетами обновлений, а в этой с компонентами системы. Дополнительные компоненты расширяют функциональные возможности ОС, но многие из них попросту бесполезны для большинства пользователей. Я предлагаю удобный скрипт отключающий «ненужные» компоненты. Команды скрипта обращаются к средствам DISM и могут быть применимы как к установленной системе, так и к автономному образу. Скрипт определяет версию утилиты dism.exe и подставляет нужные команды. Реализовано ветвление по версии целевой ОС, таким образом что в одном скрипте можно указать отключаемые компоненты для разных версий Windows.

Отключение компонентов данным скриптом обратимо. Я делаю это главным образом для того, чтобы убрать из меню Пуск ссылки на ненужные мне программы. Здесь для примера указано по два компонента для каждой версии Windows, которые будут отключены. Тем, кто будет использовать данный скрипт в своей работе, необходимо дополнить его. Определите компоненты, которые вам не понадобятся и добавьте их отключение в скрипт. Путём нехитрых изменений, можно наоборот — включать компоненты. Для своих нужд Я оставляю только Internet Explorer, Media Player, Windows Search и .NET Framework 3.5.1. Последний отключён производителем в новых версиях Windows, с удалением файлов, и чтобы его включить у меня есть отдельный скрипт, о котором Я напишу позже.

Скрипт

Использование

Данный скрипт может отключать компоненты как в онлайн системе так и в автономном образе. Если в папке запуска отсутствует файл образа — install.wim, то скрипт выполняет отключение компонентов в полностью автоматическом режиме. Если в папке запуска присутствует файл образа — install.wim, то скрипт выполняет считывание из него информацию об имеющихся «индексах» и предлагает ввести номер. После этого отображается расширенная информация о выбранном «индексе» выдаётся запрос на монтирование. Нажатие любой клавиши приводит к возврату, а нажатие клавиши [m] запускает следующую цепочку действий: монтирование образа, отключение компонентов, размонтирование образа, возврат в меню выбора «индеска». После чего можно выбрать другой «индекс» для отключения компонентов. Выбор «индекса» под номером 0 запускает отключение компонентов на «живой» ОС.

Разбор кода

Вначале командой set происходит установка переменных. Можно изменить предполагаемое имя файла образа install.wim (например, на install.esd). Можно изменить имя папки монтирования или задать путь, если папка монтирования должна находится за пределами папки запуска. От установки «уровня» логирования, как в предыдущем скрипте по пакетам обновления, решил отказаться и напрямую прописал во всех командах информирование только об ошибках — /LogLevel:1. Также во всех командах добавил ключ /English чтобы все сообщения отображались на английском языке.

Скрипт может быть запущен на разных версиях ОС, и таким образом обращаться к разным версиям системы DISM, которые отличаются набором команд. Так, в версиях после 6.1 во всех командах, слово Wim заменено на Image, хотя и оставлены старые «наименования» команд для обратной совместимости. В самом начале работы скрипта определяется версия утилиты dism.exe и в дальнейшем во все команды подставляется нужное слово. Без определения версии можно было бы и обойтись, но данный функционал Я использую в своём скрипте по получению информации из образа Windows, поэтому просто не стал переписывать код.

:pre_menu

Предварительное меню. Получение основной информации о wim-файле с контролем ошибок. Если отсутствует файл образа, то запуск в режиме Online. Не нашел информацию о максимальном количестве «индексов» в одном образе и установил значение 24.

:ind_menu

Индексное меню. Получение расширенной информации о выбранном «индексе» в wim-файле с контролем ошибок. Предложение смонтировать «индекс».

:version

Определение версии целевой системы. Если находится необходимая строка, то осуществляется переход к указанной метке. Если строка не обнаруживается, то происходит размонтирование.

:disable-7 :disable-9 :disable-A

Метки целевых систем обслуживания. Я называю Windows 8.1 — девяткой, а Windows 10 — Windows A (кто в теме тот поймёт), поэтому такие имена у меток. Вначале данного блока происходит запрос состояния всех компонентов с сохранением в файл features.txt. В дальнейшем, чтобы ускорить процесс отключения и не пытаться отключить то, что и так отключено, происходит предварительная проверка состояния каждого компонента. В конце блока — удаление временных файлов и размонтирование.

:state


Проверка состояния компонента. Псевдо-функция, возвращающая результат по коду ошибки в глобальную переменную %ERRORLEVEL%. Строка с именем компонента ищется в файле features.txt и если находится и также обнаруживается слово «Enable», то сигнал к отключению.

:mount

Монтирование образа. Предварительно создаётся папка монтирования. Контроль ошибок. Изменяется переменная определяющая спецификацию образа, теперь указывает на путь к автономному образу.

:unmount

Размонтирование образа. Если выполнялось интерактивное обслуживание (/Online), то размонтировать не нужно. Возвращение переменных к исходным значениям.

Возможные проблемы

При обслуживании образа вышестоящей версии на системе нижестоящей версии возможны зависания и ошибки. То есть, не нужно пытаться на Windows 7 обрабатывать файл образа Windows 8.1 или 10. Также для успешного выполнения всех команд требуется отключить Контроль учётных записей — параметр EnableLUA установить в значение 0.

Создание макета файла DateArc.wsc с помощью Windows Script Component Wizard (JScript)

Создание макета файла DateArc.wsc с помощью Windows Script Component Wizard (JScript)

Из листинга 10.1 можно понять, что создание компонента-сценария связано с написанием большого количества вспомогательного кода (нужно заполнить элементы ,

, и , написать функции для чтения и записи каждого из свойств объекта и т.д). Поэтому мы воспользуемся специальным мастером для создания компонентов-сценариев Windows Script Component Wizard (эту программу можно свободно получить с сайта Microsoft http://msdn.microsoft.com/scripting).

Первым шагом после запуска мастера является заполнение полей диалогового окна, представленного на рис. 10.1. Здесь нужно ввести имя создаваемого компонента («DateArc»), имя файла с его описанием («DateArc»), программный идентификатор («DateArc.WSC»), версию компонента («1.00») и каталог, в котором будет создан WSC-файл («C:WSC»).

Рис. 10.1. Общая информация о создаваемом компоненте-сценарии

На втором шаге работы мастера мы выберем, какой язык будет использоваться при написании сценария («JScript»), и укажем, что при регистрации и работе объекта нужно выполнять проверку ошибок («Error checking») (рис. 10.2).

Рис. 10.2. Определение характеристик компонента-сценария

Третий шаг работы мастера позволяет описать свойства создаваемого объекта. Здесь для каждого свойства мы указываем его имя (колонка «Name»), тип («Read» — только чтение, «Write» — только запись, «Read/Write» — чтение и запись) и значение по умолчанию (колонка «Default») (рис. 10.3).

Рис. 10.3. Задание свойств компонента-сценария

На четвертом шаге описываются методы объекта. В нашем случае объект DateArc.WSC имеет единственный метод FilesToArchiv() , вызываемый без параметров (рис. 10.4).

Рис. 10.4. Задание методов компонента-сценария

На пятом шаге нам предлагается указать, какие события могут возникать в объекте. Для нашего компонента-сценария мы не будем задавать никаких событий (рис. 10.5).

Рис. 10.5. Задание событий компонента-сценария

Шестой шаг является заключительным в работе мастера. Здесь нам выдается вся информация о создаваемом объекте (рис. 10.6). После нажатия кнопки Finish в каталоге C:WSC будет создан файл DateArc.wsc, приведенный в листинге 10.3.

Рис. 10.6. Итоговая информация о создаваемом компоненте-сценарии

WSH, Part 3: Windows Script Components

Downloads
49092.zip

A Windows Script Component (WSC), formerly known as a server scriptlet, is a COM component (also known as an ActiveX object or an OLE automation object) implemented in a script language. A WSC file is an XML-format text file that uses the .wsc file extension. One of the main advantages of WSCs is code reuse: The object implemented by the WSC is available for use in any Windows Script Host (WSH) script. Let’s look at the elements of WSC files and a real-life example of how to use them.

Understanding COM Components
To understand the WSC file format, it helps to have a basic understanding of COM components. COM is one of the core technologies that make WSH so useful. A WSH script can use a host of COM components to access functionality that the script language itself doesn’t provide. For example, VBScript doesn’t by itself provide any way to access the file system, but you can use the Scripting.FileSystemObject COM component in a VBScript script to open files. To get real administrative work done, WSH scripts rely heavily on COM components.

You can create your own COM components entirely in script code. Coding your own components provides a convenient way to create standalone objects that can be freely used by multiple scripts—or even by other programming languages that support COM components, such as Visual Basic (VB).

Understanding WSC Files
As I mentioned earlier, a WSC file is an XML-format text file that provides a set of elements and attributes that define an object’s interface (e.g., the properties and methods available to calling scripts) as well as its implementation in a script language. For those who aren’t familiar with XML, I provide a short list of its syntax rules in «WSH, Part 2: .wsf Files,» February 2006, InstantDoc ID 48692.

WSC files have their own list of XML elements:


  • The element. encloses the entire definition of a script component. All of the elements that follow must be between the and tags.
  • The element allows for more extensive error checking in the component. It uses two attributes: error and debug. Use error=»true» to display more detailed error messages, and use debug=»true» to be able to step through the component’s code in the script debugger.
  • The element provides the information needed to register the component as a COM component on the system. It has four required attributes, as shown in Table 1. You can generate a valid globally unique identifier (GUID) by using the Windows Script Component Wizard (see the Additional Resources box) or the guidgen.exe tool in the platform software development kit (SDK). When you register or unregister the component (a process I’ll describe shortly), the WSC runtime uses the information in the element to update the registry.
  • The

element specifies the component’s interface (e.g., the properties and methods it makes available). The

and elements are both enclosed within the

element declares a property for the component. For a simple read/write property, the element references a global variable in the script code. The global variable’s name should match the property’s name unless you include the internalname attribute to reference a different variable. The

element can also use the

and elements (they don’t have closing tags) when you want to call code when setting and/or retrieving the property’s value or when you want to create a write-only or read-only property. To create a write-only property, the

element should include only a

element. The script code should define a function named put_propertyname, where propertyname is the name of the property. Conversely, a read-only property should include only a element, and the script should have a function called get_propertyname. You can use different property function names by adding the internalname attribute to the

or element.
The element declares a method for the component. The method name should match the name of a function in the script code. (As with the

element, if you want to use a different function name, use the internalname attribute.) If needed, use one or more

elements to declare parameters for the function.
The

Asp windows script components

Im trying to use a windows script component to create a com object and I need to create a tlb file. If I register the wsc file it is successful and can be used from another script but i want to use it from other languages.

If I try right click «generate type library I get some usage guidance but no tlb file

Trying to generate it using script gives me an error when trying the write method of the scriplet.typelib object saying object doesnt support this action

and when trying t ouse a command line it comes back with «Missing Entry:TypeLib»

Does anyone have any thoughts about where im going wrong?

Ответы

Just to let you know the reason why my typelibrary wasnt being created. I used the windows scripting host wizard to create the wsc file and I didnt untick «special implements support».

This added an tag into the component and this was preventing the right click build typelibrary from working.

thanks for your help guys.. one to remember for the future..

  • Помечено в качестве ответа Richard Mueller MVP, Moderator 5 мая 2012 г. 15:09

Все ответы

Unfortunately yu question is not really a scripting question but is a developers question.

(I know — I am playing chicken and egg but its true)


You might be able to create one by hand but ther eis no eally automatic mthod for a script compoent as it is just a script wrapped by a component. The properies and methods are generated at run time. There is no DLL and not library code.

A script component willbe visible from all other languages that can use CoCreateObject. The interfaces will not be discoverable but, I believe they can be access via ‘Invoke’.

With the greatest of respect, msdn says that you can do this and even that it improves performance.. I know I am dumb but what is this article all about http://msdn.microsoft.com/en-us/library/sh9ete15(v=vs.85).aspx

It is possible to generate a type library for a script component. Why do you need to do it?

Sorry, I missed the part where you said you wanted to use the script component from other languages. You can register the script component using the command line as follows:

The above command should be all on one line. Note that the documentation is a little lacking; the scrobj.dll function is really called GenerateTypeLib, not TypeLib as listed in the documentation. The -doc option requires the backslashes if the doc string contains spaces. Use numbers for the major and minor version numbers (e.g., -major:1 -minor:0). The -guid option needs a custom GUID.

  • Изменено Bill_Stewart Moderator 26 апреля 2012 г. 16:37 Corrections
  • Предложено в качестве ответа Richard Mueller MVP, Moderator 29 апреля 2012 г. 2:29

With the greatest of respect, msdn says that you can do this and even that it improves performance.. I know I am dumb but what is this article all about http://msdn.microsoft.com/en-us/library/sh9ete15(v=vs.85).aspx

Yes I remember that article. That is what I call manually geneating a type library from a custom file.

Note the requirements for the component:

These things have to be put into the compoennt by you in order to generate a TLB. You also have to supply a GUID thatis unique using guidgen or other method of getting a guid.

Have you doe all of that?

Your WSC has to be designed correctly or it will choke. I can generate a tlb from a WSC built with PrimalScript. I can also build a much simpler WSC that cannot be used to generate a typelib.

I suspect your WSC is not correctly built. I have had problems in teh past with generating a tlb with hand made components especially ones built according to the MS samples frmo early WSC.

Here is a sample component I just vuit and generated a tlb for. It contains all of teh required sections.

Note the required CDATA section around the code to protect it from breakage in XML.

Here is the test script that I have run.

Set test = CreateObject(«TestComponent.WSC»)
test.Message=»updated message»
MsgBox test.NewMsg(«xxx»)
MsgBox test.NewMsg(«zzz»)

The components will not work under PowerShell with methods. Properties work fine but method signaturew seem to be incorrect for PowerShell.

Even if you create a type library you cannot use the component as an ‘early bound’ component. script components are only late bound even with a tlb.

  • Предложено в качестве ответа Richard Mueller MVP, Moderator 29 апреля 2012 г. 2:29

Sorry, I missed the part where you said you wanted to use the script component from other languages. You can register the script component using the command line as follows:

The above command should be all on one line. Note that the documentation is a little lacking; the scrobj.dll function is really called GenerateTypeLib, not TypeLib as listed in the documentation. The -doc option requires the backslashes if the doc string contains spaces. Use numbers for the major and minor version numbers (e.g., -major:1 -minor:0). The -guid option needs a custom GUID.

Bill — that really desn’t work because we need to use the GUID inside of the component and the spec in the component. Once that is inserted you can just register thr component and it will generate the tlb.

The following goes into the component:


Function Register ()
Dim TypeLib
Set TypeLib = CreateObject ( «Scriptlet.TypeLib» )
TypeLib . AddURL «TestComponent.WSC»
TypeLib . Path = «TestComponentWSC.tlb»
TypeLib . Doc = «TestComponent»
TypeLib . Name = «TestComponentWSC.tlb»
TypeLib . MajorVersion = 1
TypeLib . MinorVersion = 0
TypeLib . Write
End Function

Now the rundll callyou have specified is called automatically when the component is regsitered and teh TLB is created in teh same folder as teh component using those answers. You methof is sueful fo r old components that were not buit with this spec avaialble. I beleive it is a big pain in the neck to rebuild them just to use this so we can use the commandline call to GenerateTypeLib.

This is the perferred method as long as you are using the XML foll package declaration.

Windows Scripting (выпуск 7)

Приношу свои извинения за то, что рассылка долго не выходила — у ведущего были некоторые проблемы, которые наконец начинают разрешаться. Надеюсь, что отныне рассылка будет выходить более регулярно.

Из приятного: Ваш покорный слуга недавно пересдал на Brainbench экзамен VBScript 5.5 с результатом 4.6 балла и оказался на 15 месте в мире :) — из 3370 уже сдавших этот экзамен.

Архив рассылки Вы найдете на сайте scripting.narod.ru.

Новости Выпущена вторая бета-версия Windows Script 5.6
  • 11.04.2001
    Выпущена вторая бета-версия Windows Script 5.6. Скачать ее можно здесь: http://www.microsoft.com/msdownload/vbscript/scripting56.asp. Вышел в свет апрельский номер журнала MSDN Magazine
  • 20.03.2001
    Вышел в свет апрельский номер журнала MSDN Magazine. Среди его статей:
    • Windows Script Host: New Code-Signing Features Protect Against Malicious Scripts
      Рассказывается, как защитить скрипты с помощью цифровой подписи.
    В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick
  • 13.03.2000
    В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick — Scripting the Experience with Microsoft Office Developer. На этот раз она посвящена использованию скриптов в разработке приложений под новую версию Microsoft Office — Microsoft Office XP. Очередная статья из серии Scripting Clinic ожидается 9 апреля. Новая книга на colibri.ru — «Perl. Архив программ»
  • 26.01.2001
    Perl. Архив программ — Браун М., «Бином» — 2001, 720 стр.
    В книге представлена и подробно описана библиотека программ, предназначеных для использования в различных областях программирования. Тематика программ подобрана таким образом, чтобы продемонстрировать преимущества языка PERL при решении тех задач, для которых и создавался язык. [Подробнее] [Заказать] В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick
  • 16.01.2001
    В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick — Introducing Visual Studio for Applications, посвященная этому новому продукту Microsoft. VSA — гибрид технологий Visual Basic for Applications (VBA) и Windows Script — предназначается для настройки (customization) программ в Windows .NET. Очередная статья из серии Scripting Clinic ожидается 12 февраля. Вышел в свет февральский номер журнала MSDN Magazine
  • 11.01.2000
    Вышел в свет февральский номер журнала MSDN Magazine. Среди его статей:
    • Visual Basic.NET: New Programming Model and Language Enhancements Boost Development Power
      (Для тех, кто не в курсе: в будущей Windows.NET любимого мной VBScript больше не будет.)
    • Web Services: Building Reusable Web Components with SOAP and ASP.NET
    • Driving Visio 2000 from Visual Basic
      Использование Visio 2000 для генерации графики для HTML-страниц.
    • The Component Model in ASP.NET
    • New Stuff
      Новая версия Source Insight (3.0) от Source Dynamics Inc. — редактор с большим количеством функциональных возможностей по анализу исходного текста. Из скриптовых языков поддерживается VBScript, JScript, JavaScript, PerlScript, CSS и C#.

    Как нетрудно заметить, Microsoft активно переходит на .NET. Думаю, и нам пора.

    Тем, кто заинтересовался, предлагаю для начала посетить .NET Developer Center на сайте Microsoft.

    Кстати, к февральскому номеру прилагается CDROM с Microsoft .NET Beta 1. Если, конечно, вы покупаете печатную версию. Разные советы Журнал MSND Magazine в виде CHM-файлов Номера журнала MSND Magazine за 2001 год можно скачать в виде CHM-файлов и потом не торопясь просматривать в offline. Очень удобно и то, что система HTML Help предоставляет полноценный поиск.

    Вот текущие ссылки:

    Как дальше — догадайтесь сами :) Вопросы и ответы Как перечислить все сервера Microsoft Exchange Server 2000? Все сервера Microsoft Exchange Server 2000, находящиеся в домене, можно перечислить через Active Directory.

    В данном примере используется доступ к Active Directory через ADO.

    Листинг: enumerate.vbs

    Смотри также

    Как определить версию Microsoft Exchange Server 2000? Скрипты Чтение тегов MP3-файлов (ActiveX, написанный на VBScript) Вашему вниманию предлагается ActiveX, написанный на VBScript и предназначенный для чтения тегов MP3-файлов (название песни, исполнитель, из какого альбома, т.д.).

    Разработан он с помощью малоизвестной и малоиспользуемой технологии Microsoft под названием Windows Script Components (бывшие scriptlets).

    Windows Script Components — это технология, позволяющая писать компоненты COM (ActiveX) на скриптовых языках. Подробнее о технологии Windows Script Components можно прочитать на сайте Microsoft и в других источниках (см. список ссылок в конце статьи). Особенно рекомендуется документация по Windows Script Components, ссылка на которую дана чуть ниже.

    Ссылки

    Инсталляция


    1. Скачайте и проинсталлируйте последнюю версию Windows Script (см.ссылку вверху).
      Если Вы работаете под Windows 2000, это делать не обязательно.
    2. Скачайте файл mp3tags.wsc. Это и есть ActiveX, написанный на VBScript.
    3. Зарегистрируйте его (так же, как и обычный ActiveX):
      regsvr32 mp3tags.wsc
    4. Все, теперь скрипт готов к употреблению.

    Чтобы использовать ActiveX, необходимо его создать стандартным способом: Dim MP3Tags Set MP3Tags = CreateObject(«Scripting.Mp3TagsReader») А теперь — несколько примеров.

    Пример 1: sample1.vbs

    Пример 2: sample2.vbs

    Листинг: mp3tags.wsc

    Смотри также

  • Windows Script Components на сайте Microsoft
  • Колонка Visual Programmer в журнале Microsoft Systems Journal (февраль 2000)
  • ASP and Windows Script Components (Microsoft Internet Developer, декабрь 1999)
  • Windows Script Components — They Get Around, by Andrew Clinick
  • Создание COM-компонентов с помощью скриптовых языков в журнале «Технология Клиент-Сервер» (1 квартал 2000)
  • Статьи из Microsoft Knowledge Base, посвященные Windows Script Components Библиотека повторно используемых классов Класс CLog — запись в журнал Класс CLog преназначен для записи текста в файл журнала (log). Это может быть как отладочная информация, так и информация о ходе выполнения скрипта.

    Основные особенности класса CLog:

    • Имя файла журнала генерируется автоматически: он создается в том же каталоге, где находится файл исполняемого скрипта, и имеет то же имя, но с расширением .log.
    • Имя файла журнала можно узнать или поменять.
    • Для удобства работы можно узнать каталог, в котором находится файл исполняемого скрипта, а также имя этого файла (без расширения).
    • Журнал можно вести как в формате ANSI (по умолчанию), так и формате Unicode.
    • При записи строчки в ее начало автоматически помещается текущее время (эта опция может быть отключена).
    • Специальная функция позволяет очистить (точнее, удалить) файл журнала.
    • Можно также считать весь журнал в строковую переменную.

    Методы и свойства класса

    Метод Описание
    Write(Text) Записывает строку Text в файл журнала.
    Возвращает True в случае успеха, иначе — False.
    ReadAll Считывает файл журнала целиком.
    В случае ошибки возвращается пустая строка.
    Clear Удаляет файл журнала.
    Возвращает True в случае успеха, иначе — False.
    Свойство Описание
    LogFullName Полное имя файла журнала.
    Read/Write.
    ScriptPath Каталог, в котором находится файл исполняемого скрипта.
    Read only.
    ScriptName Имя файла исполняемого скрипта (без расширения).
    Read only.
    Format Формат записи журнала: ANSI (0), Unicode (-1), по умолчанию (-2).
    По умолчанию — ANSI.
    Read/Write.
    IncludeTime Определяет, помещать ли в начало строки текущее время.
    По умолчанию — True.
    Read/Write.
    FSO Возвращает объект типа FileSystemObject, используемый классом CLog.
    Read only.

    Пример 1

    Пример 2

    Обратите внимание на отсутствие метода Clear — в этом случае файл журнала не будет удаляться при каждом запуске скрипта.

    И еще — путь к TEMP-каталогу получается через объект FileSystemObject (свойство FSO), который используется классом CLog.

    Пример 3

    Пример 4


    А вот наконец собственно листинг класса CLog:

    ASP на блюдечке. Часть 2

    Загрузка файлов с помощью ASP и VBScript

    Неужели нельзя обойтись без ActiveX-компонента? Конечно, можно. Давайте рассмотрим, каким образом можно загрузить на сервер, например, файл с иллюстрацией без использования встраиваемого компонента. Попробуем обойтись исключительно средствами ASP. Разумеется, время выполнения операции существенно увеличится, однако в нашем случае (при загрузке всего одного или двух файлов) это будет почти не ощутимо.

    Проблема заключается в том, что, как правило, компоненты, предоставляемые «третьими» фирмами, не являются частью самого ASP, а представляют собой так называемые черные ящики, настроить которые под конкретные нужды невозможно. Будучи «третьими» компонентами, они должны устанавливаться на серверы, а это, в свою очередь, означает, что понадобится скопировать файлы компонентов (DLL или OCX) на сервер и зарегистрировать их. Какие проблемы? Никаких, если вы сами осуществляете хостинг вашего сайта. Однако если этим занимается какая-нибудь другая компания, то могут возникнуть проблемы с размещением и (или) регистрацией компонентов на сервере, обслуживающем ваш сайт.

    Для того чтобы понять, как работает upload-скрипт, для начала посмотрим, каким образом посылаются данные из окна нашего браузера серверу с помощью протокола HTTP, то есть поймем, как работает «multipart/form-data».

    Форма загрузки

    Давайте разберемся в механизмах обработки HTML-форм более подробно. Итак, атрибут формы enctype определяет тип содержимого, используемый для кодирования множества элементов (полей) формы с целью их последующей отправки на сервер. Атрибут enctype, используемый по умолчанию, равен «application/x-www-form-urlencoded». Для передачи больших объемов данных, таких как файлы и (или) двоичные данные, используется значение атрибута «multipart/form-data».

    Сообщение типа «multipart/form-data» содержит последовательности, каждая из которых представлена блоками, каждый из которых, в свою очередь, содержит следующие обязательные поля:

    • заголовок content-disposition, значение которого равно «form-data», — определяет тип пришедших на сервер данных;
    • имя атрибута — определяет имя элемента формы.

    Для файлов этот набор выглядит несколько иначе:

    • заголовок content-type посылаемых двоичных данных;
    • атрибут с именем файла и полным путем к нему на компьютере клиента.

    Рассмотрим простой пример HTML:

    По нажатии кнопки «SubmitQuery» в этом окошке на сервер придет следующий запрос:

    Эти данные могут быть отображены, если их послать клиенту в качестве ответа на запрос. Двоичные данные должны считываться с помощью ASP-функции Request.binaryRead, а записываться с помощью Response.binaryWrite:

    Как вы наверняка заметили, блоки последовательности в ответе разделяются между собой следующими разграничителями:

    Для каждого блока (поля, элемента формы) имеется одно значение content-disposition. Атрибут name указывает, к какому именно элементу формы относится тот или иной блок (в нашем случае e-mail, blob или Enter). Для элемента формы файла (в нашем случае blob) имя файла также является частью заголовка content-disposition, а заголовок content-type определяет тип данных.

    Скрипт-загрузчик

    Очевидно, что все содержимое HTTP-запроса должно быть «разобрано» по частям, рассмотрено и обработано нашим скриптом. В таких языках, как VB или C++, это весьма тривиальная задача, так как для этого предусмотрено множество объектов и методов. Применяя VBScript, сделать это не так просто, но все же возможно.

    Поскольку посылаемые данные представлены в двоичном формате, мы будем вынуждены пользоваться для работы с ними соответствующими функциями языка VBScript. Логично предположить, что эти данные представляют собой последовательности байтов и такие функции, как MidB, InstrB и LenB, — именно то, что нам нужно. Мы также должны избегать использования классических строк в VBScript потому, что они представляются в формате Unicode и не подходят для передачи одиночных байтов. Это единственные функции VBScript, предназначенные для операций с байтами. Нам же нужен метод, позволяющий получать unicode-строку из «разбираемых» данных, с тем чтобы в дальнейшем использовать ее в VBScript-коде. И еще нам потребуется функция — преобразователь Unicode-строки в байт-строку, с тем чтобы использовать эту строку в качестве аргумента функции InstrB.

    Определим объект «UploadRequest». Он содержит все поля нашей формы и выглядит следующим образом:

    Такой «объектный» подход к организации позволит в дальнейшем упростить доступ к обрабатываемым данным.

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

    Проблема в том, что, как было уже отмечено, функция InstrB требует строки байтов, в то время как мы располагаем Unicode-строками. Функция getByteString (String) позволит нам преобразовать unicode-строку в строку байтов. Теперь в цикле найдем конец последовательности:

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

    Сначала мы получим имя поля из заголовка «content-disposition». В конце имени располагается символ chr(34). Этим мы и будем руководствоваться для определения конца.

    Далее необходимо проверить, является поле элементом типа «файл» или элементом типа «текст». Если это элемент типа «текст», никаких данных, кроме имени поля, нам не потребуется, а если это элемент типа «файл», то нам понадобятся имя файла и заголовок content-type.

    Если это файл, то добавим имя и путь к файлу в объект dictionary. Имя файла есть строка символов, которую необходимо преобразовать в формат unicode. Сделать это можно при помощи функции getString().


    А вот теперь можно получить содержимое файла, которое нет необходимости преобразовывать, поскольку это двоичные данные. Попросту необходимо сохранить в файловой системе на сервере или разместить в базе данных как объект типа blob (binary long object).

    Если же это не тип «текст», необходимо преобразовать содержимое в строку Unicode для дальнейшего использования в VBScript.

    Содержимое также добавляется к объекту dictionary.

    В конце концов объект dictionary должен быть добавлен к глобальному объекту dictionary всей формы.

    Функция преобразования однобайтовых строк в двухбайтовые (формата Unicode).

    Функция преобразования строки в строку байтов (используется для форматирования аргументов для функции InstrB).

    Вызов скрипта загрузки

    Извлечение данных формы

    Загруженные таким образом данные можно, к примеру, переслать обратно клиенту:

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

    Однако, как правило, в случае если объект представляет собой файл, необходимо записать данные на жесткий диск в виде файла или записи в базе данных. С этой целью мы воспользуемся объектом FileSystem.

    Каталог, в котором мы собираемся сохранить наш файл, может быть указан несколькими способами: абсолютным, а также относительно каталога, зарегистрированного на сервере в качестве корневого каталога Web-сайта (для IIS это каталог C:\InetPub\wwwroot\ по умолчанию). Получить этот «виртуальный» каталог можно при помощи серверной переменной «PATH_INFO».

    Метод «Write», с помощью которого и будет осуществляться запись в файл, требует ввода unicode-строки в качестве аргумента, и нам потребуется преобразовать массив байтов в unicode-строку. Метод Write преобразовывает эту Unicode-строку и записывает ее в формате ASCII. Таким образом и формируется файл, содержащий двоичный образ нашей входной строки байтов:

    Таким образом, окончательная версия обработчика нашей формы в случае применения только ASP и VBScript-функций (файл Upload2DBE.asp) для загрузки файла будет выглядеть следующим образом:

    А теперь давайте попробуем сами разработать ActiveX-компонент…

    Согласитесь, что было бы неплохо самим научиться создавать ActiveX-компоненты для ASP. Тем, кто активно программирует, освоить это будет очень несложно, тем более что для этого подходят почти все современные средства разработки. Мы будем рассматривать способы создания ActiveX-компонентов для ASP как на Microsoft Visual Basic 6.0 — для неискушенных в области классического программирования, так и в Microsoft Visual C++ 6.0 — для тех, кто знаком с языком программирования C++ и кому он ближе и понятнее.

    …с помощью Microsoft Visual Basic 6.0

    Для начала попробуем создать активный серверный компонент для загрузки файла на сервер с помощью Microsoft Visual Basic 6.0. Для простоты рассматрим простейший пример HTML-формы загрузки файла (файл OCUpload.htm).

    Данная форма предназначена для загрузки на сервер единственного файла. Определим также скрипт-реакцию на эту форму: ACTION=»UploadReceive.asp»

    Соответственно вызов активного серверного компонента из ASP-скрипта (файл UploadReceive.asp) будет выглядеть следующим образом:

    Функцией компонента, который мы собираемся создавать, будут являться разбор HTTP-заголовка получения для имени файла и сохранение файла на сервере в определенном каталоге. Для этого выполним следующую последовательность операций:

    1. Запустим Microsoft Visual Basic 6.0;
    2. В появившемся диалоговом окне выберем «ActiveX DLL»;
    3. Нажмем на «Open»;
    4. В окне инспектора проекта, выделив имя проекта, нажмем правую кнопку мыши и выберем пункт «Project1 Properties»;
    5. Поменяем имя проекта на «UploadProject» и нажмем на «ОК»;
    6. Выбрав класс «Class1», в окошке пониже перепечатаем имя класса с «Class1» на «UploadClass»;
    7. После открытия проекта войдем в пункт меню Project -> References;
    8. Установим флажок напротив пункта «Microsoft Active Server Pages Object Library»;
    9. Нажмем на «OK»;
    10. В окне кода класса впечатать функцию «DoUpload».

    Как и у любого компонента, используемого в ASP, необходимо определить контекстные объекты скрипта, которые мы собираемся использовать в нашем проекте. Мы «перехватим» объекты в функции «OnStartPage». А поскольку нам понадобится лишь ASP-метод «Request», то это единственный контекстный объект, который мы сделаем доступным. Так выглядит код определения контекста процедуры загрузки, которую мы будем создавать:

    Таким образом, мы можем использовать объектную переменную «MyRequest» точно так же, как если бы мы использовали любой Request-объект в ASP-файле. В нашем случае мы применяем ASP-файл (UploadReceive.asp) для управления ActiveX-компонентом. Для того чтобы использовать любой ASP-объект и его свойства в коде, мы должны передавать ASP-объект нашему компоненту вышеприведенным фрагментом кода. Мы будем использовать лишь два Request-метода ASP: «TotalBytes» и «BinaryRead».

    Однако следует учитывать одно важное ограничение. Так как мы будем считывать данные (содержимое) файла при помощи функции «BinaryRead», то не следует забывать, что в этом случае использовать метод «Request.Form» нельзя. Иначе говоря, мы можем получить данные о нашем файле исключительно с помощью функции «BinaryRead». Однако, как будет показано ниже, это не создаст видимых трудностей при считывании имени или других атрибутов.

    Как уже отмечалось выше, заголовок HTTP, посылаемый «multipart/form-data»-формой, включает в себя блоки, содержащие данные элементов формы. Мы будем извлекать первую часть заголовка HTTP (первый его блок), так как в нашем случае поле типа «файл» расположено в форме первым. Далее мы считаем его в строку, откуда извлечем имя файла, используя для этого VB-функцию «InStr» и цикл. Извлечь содержимое файла (сами данные) гораздо проще.

    Теперь подошло время создания главной процедуры загрузки файла — «DoUpload». Объявим публичную функцию:

    Public Sub DoUpload()


    Прежде всего нам предстоит определить количество посланных клиентом байтов. А поскольку переменная «TotalBytes» есть константа, то мы присвоим ее значение объявленной нами переменной «varByteCount».

    Теперь можно заняться и «сбором» данных, считывать которые посредством вызова функции «BinaryRead» мы будем в массив типа «Byte», а извлеченные данные помещать в массив «binArray». Размерности массива «binArray» мы переопределим в соответствии с размерностью наших данных следующим образом:

    Итак, нам удалось вычленить данные из HTTP-заголовка. Теперь попробуем извлечь из полученных данных имя посланного нам клиентом файла. Для этого необходимо «разобрать» полученную строку байтов стандартными функциями операций со строками.

    Заголовок HTTP располагается в самом начале нашего массива байтов. Цикл «Do Until» просматривает этот массив до тех пор, пока не обнаружит два последовательно идущих символа перевода строки, которые и обозначают конец блока параметров и одновременно начало данных файла. Каждый повтор цикла добавляет к строке «strHeadData» один байт. По окончании цикла мы получим пару <имя_элемента, значение_элемента>в отдельной строке «strHeadData». Эта пара может выглядеть следующим образом:

    Сам процесс «извлечения» имени файла реализуем в несколько шагов следующим образом:

    Найдя в ней значение «filename=», увеличим значение указателя на 10, таким образом переместившись в необходимую нам позицию. Сейчас мы находимся на позиции начала имени файла в строке.

    Для того чтобы найти символ конца имени файла в строке, поищем первый символ «CR LF» с помощью функции «intFileTagStart»:

    Совсем неплохо было бы выяснить, ввел ли пользователь значение. Конечно, это следовало сделать гораздо раньше, и не в ActiveX-модуле, а средствами VBScript, или JavaScript непосредственно в модуле формы (как это было показано ранее), или, на худой конец, с помощью самого ASP, но все-таки настоятельно рекомендую писать код активных серверных компонентов таким образом, чтобы обеспечить независимость от тех, кто в дальнейшем будет их использовать, то есть обеспечить универсальность и защиту «от дурака»:

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

    Переместимся на следующий разделитель (то есть на конец текущего блока)

    и сохраним данные в файле в корневом (или любом другом) каталоге на жестком диске «C:».

    Полный файл-архив проекта с рассмотренным примером можно найти на нашем CD-ROM.

    … с помощью Microsoft Visual C++ 6.0

    А зачем, собственно, нужен C++? Ведь, в конце концов, Visual Basic намного проще, и процесс создания COM-компонентов с его помощью занимает гораздо меньше времени. Занимаясь разработкой чего бы-то ни было на C++, мы увеличиваем как стоимость, так и время разработки. К сожалению, это мнение в последнее время высказывается все чаще. Однако не следует забывать, что, несмотря на все эти казалось бы резонные доводы, среди всевозможных языков программирования и описания сценариев (VB, Java, ASP и так далее) C++ остается чемпионом по скорости выполнения и эффективности кода. И хотя выигрыш этот кажется невеликим при сравнении компонента для одного клиента, в реальной Web-обстановке, когда клиентов сотни, а порой даже тысячи и сотни тысяч и вычислительная нагрузка на серверы растет в геометрической прогрессии, этот выигрыш колоссален. Пара строк ASP-кода, обрабатывающая длинные строки символов, выглядит великолепно на сервере с небольшим числом клиентов, но может «поставить на колени» сервер с множеством клиентов.

    Отсюда мораль: самые «узкие» места целесообразно разрабатывать на каком-нибудь языке программирования вроде C++, а ASP использовать в качестве «клея» между быстро работающими ActiveX-компонентами, созданными с его помощью. Но хватит слов, давайте перейдем к делу. Для того чтобы посвятить читателя в азы разработки ActiveX-компонента и его применения в нашем газетном сайте, предусмотрим следующую функцию.

    Пусть у пользователя будет возможность просматривать содержимое каталога «C:\InetPub\wwwroot\Articles», то есть список всех файлов этой папки на сервере, причем с возможностью просмотра каждого файла в отдельности. Первое, что приходит в голову в этом случае, это страница, формируемая с помощью ActiveX-компонента, возвращающего список файлов заданного каталога. Сформируем этот компонент прямо сейчас, используя Microsoft Visual C++ 6.0.

    Итак, надеюсь, вы уже запустили MSVC. Для начала создайте новый проект, в появившемся диалоговом окне укажите его тип («ATL Com AppWizard») и задайте имя. Назовем его «Dir» — в честь популярной команды MS-DOS.

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

    Как вы, наверное, заметили, во втором диалоге MSVC предупреждает о том, что мастер создает лишь ATL-проект и что по завершении его работы понадобится вручную создавать COM-объект в его составе. А сделать это можно следующим образом.

    После выбора в появившемся меню строки «New ATL Object…» появится диалоговое окно, в котором необходимо будет уточнить тип создаваемого ActiveX-объекта, а именно активный серверный компонент («ActiveX Server Component»).

    Теперь необходимо определить имена создаваемого класса и исходных файлов. Пусть наш класс называется «FilesList». Если вы введете это имя в соответствующем поле следующего диалога, то увидите следующее окно.

    Следует уделить внимание двум другим вкладкам этого диалога: «Attributes» и «ASP». Перейдя во вкладку «Attributes», можно, в частности, определить поточную модель разрабатываемого COM-компонента. Вкладка «ASP» позволяет определить, какие объекты самого ASP будут доступны из разрабатываемого компонента, то есть указатели, на какие объекты ASP будут создаваться в реализации (implementation) самого компонента.

    Следует также заметить, что конструирование указателей на внутренние (Intrinsic) объекты ASP производится в конструкторе компонента OnStartPage (не путать с одноименной функцией файла Global.asa), деструктурирование — в деструкторе OnEndPage, без применения которых доступ к внутренним объектам ASP будет закрыт, поэтому галочка в поле OnStartPage/OnEndPage должна быть выставлена. Реально в разрабатываемом компоненте нам необходим лишь объект ASP «Response», однако в целях обучения выделим все объекты. После всех проделанных операций рекомендую сохранить проект.

    Как видно, MSVC создал функции OnStartPage и OnEndPage в IfilesList в нашем объекте CfilesList. Посмотрим полученный код:

    Далее необходимо добавить функцию, которая и будет выполнять необходимые нам действия. Напишем ее:

    Не забудьте прописать заголовок нашей новой функции WriteDir в файле FilesList.h в разделе Active Server Pages Methods public сразу за объявлениями функций OnStartPage и OnEndPage:

    Кроме того, мы использовали функции «_findfirst» и «_findnext», а также структуру, которую они заполняют. Все эти компоненты объявлены вo включаемом файле «io.h», поэтому не забудьте включить и его, что удобно сделать в файле «StdAfx.h».

    После всех действий нажмите на клавишу F7, и если вы все сделали правильно, то MSVC построит вашу библиотеку и зарегистрирует ее в системе. Самим же это можно сделать, выполнив команду:

    Итак, нам осталась самая малость. Написать ASP-скрипт, который, используя функцию «WriteDir», выведет в окне клиента список всех файлов каталога с погруженными статьями и иллюстрациями к ним нашего газетного сайта со ссылками на них (файл Dir.asp):

    Страничка — результат выполнения данного скрипта — будет выглядеть следующим образом.

    Полный файл-архив проекта с рассмотренным примером находится на нашем CD-ROM.

    Еще несколько слов в защиту C++

    Компилируемые языки программирования, такие как Visual C++, Borland C++ или Delphi, используют исходный текст для генерации машинного кода (набора машинных команд). В результате формируется набор инструкций, к которым вычислительная машина может обращаться напрямую (отсутствует необходимость в использовании каких бы то ни было препроцессоров, «до-компиляторов» и так далее) и которые поэтому выполняются очень быстро.

    Интерпретируемые языки программирования, такие как Visual Basic и J++, в техническом смысле не компилируются. Конечно, в результате компиляции получается выполняемый модуль или библиотека, но это не машинный код. Вместо него, попросту говоря, используется объектный код, который интерпретируется в машинный во время выполнения самой команды, что, безусловно, требует большей вычислительной мощности от процессора.

    Кроме «скоростного» фактора нельзя забывать об уникальных возможностях, предоставляемых такими языками, как C++ и Pascal (Delphi). Они, как никакие другие, активно используют объектно-ориентированные концепции в программировании (технологии OOP и OOD), которые позволяют не терять контроль над кодом при разработке больших проектов и осуществлять переносимость целых классов функций. Конечно, с точки зрения новичка все это может показаться сложным и недоступным, но, поверьте, это не так.

    Ничего не имея против использования Visual Basic для обучения, разрабатывать COM-объекты, встраиваемые в ASP-страницы, с его помощью я все же не советую.

    Заключение

    Хотелось бы сориентировать разработчиков ASP-страниц в мире ASP-компонентов. Дело в том, что автор настоящей статьи провел не один день, сидя за Интернетом в поисках всевозможных ASP-компонентов для решения всевозможных задач.

    AspUpload 2.0 Copyright — загрузка файлов на сервер в online-режиме — (c) 1998-2000 Persist Software, Inc. (http://www.persits.com). Временная одномесячная версия лежит на нашем CD-ROM.

    XUpload 2.0 Copyright — загрузка каталогов на сервер в online-режиме с поддержкой множества интересных функций (drag-and-drop и т.п.) — (c) 1998-2000 Persist Software, Inc. (http://www.persits.com). Временная версия лежит на нашем CD-ROM.

    ASP E-mail 4.4 — довольно полезный компонент для работы с электронной почтой лежит на нашем CD-ROM.

    Желающим скачать множество полезных активных серверных компонентов для их использования в ASP советую посетить:

    Илон Маск рекомендует:  Предопределённые константы mcal
  • Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL