Октябрь 30, 2005

Remote Scripting - удаленное исполнение скрипта (Часть 4)

После создания функций и процедур необходимо объявить их серверными методами.

Для этого создается объект public_description содержащий описание нужных функций и процедур. В следующем примере в качестве конструктора объекта public_description вызывается функция MyServerMethod():

<script languge = "JavaScript">
var public_description = new MyServerMethods();

В конструкторе сопоставляются имена вызываемых функций и имена серверных методов.

function constructor() {
//for JavaScript methods
this.methodName = functionName;
//for VBScript methods
this.methodName = Function('p1','p2','return functionName(p1,p2)')
}

Где:
functionName - имя вызываемой процедуры или функции;
methodName - внешнее имя серверного метода, непосредственно использующееся при вызове;

Note: Механизм объявления интерфейса посредством объекта public_description реализован только в JavaScript.

Следующий пример демонстрирует ASP страницу, в которой объявляется два серверных метода square и add:

<% RSDispatch %>
<!--#INCLUDE FILE="../_ScriptLibrary/RS.ASP"-->
<script runat = server language = "JavaScript">
var public_description = new MyServerMethods();

function MyServerMethods() {
this.square = squareNumber;
this.add = Function( 'n1','n2','return addNumbers(n1,n2)' );
}

function squareNumber(numberToSquare){
return numberToSquare * numberToSquare;
}
</script>
< script runat = server language ="VBScript">
Function addNumbers(num1, num2)
addNumbers = CInt(num1) + CInt(num2)
End Function
</script>

Вызов серверных методов

RS позволяет создать объект, который ссылается на ASP страницу, содержащую описание серверных методов. Это позволяет использовать стандартный object.method() синтаксис для вызова удаленных методов. Далее этот объект будем для простоты называть page объектом.

Чтобы сослаться на ASP страницу как на объект необходимо в клиентском скрипте вызвать метод RSGetASPObject(), передавая URL и имя ASP страницы в качестве параметра.

ASPobj = RSGetASPObject(url)

Синхронный вызов

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

В качестве результата работы в клиентский скрипт возвращается объект call, который содержит результат работы и дополнительную статусную информацию. Свойство return_value объекта call содержит результат работы удаленного метода. Другие свойства объекта call позволяют получить информацию о статусе вызова удаленной процедуры.

Если вы создали page объект, то можно использовать стандартный object.method() синтаксис для вызова процедуры. Но кроме этого есть возможность вызова серверных методов без page объекта.

продолжение следует...

Разместил:

Автор:

Ваш комментарий

Обсудить на форуме?

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