Компоненты необходимые для Remote Scripting
Для использования RS необходимы следующие файлы в дополнении к вашим клиентским (*.htm) и серверным (*.asp) файлам:
Эти файлы работают как библиотеки, вы просто включаете необходимые файлы (Rs.htm или Rs.asp) в вашу клиентскую или серверную страницу, и вызываете необходимые серверные методы.
Все необходимые файлы должны быть доступны на сервере, по умолчанию предполагается, что эти файлы находятся в папке _ScriptLibrary.
RS и безопасность
RS обеспечивает такой же уровень безопасности как Java апплеты и IFrames. По требованиям безопасности, серверные методы не могут принимать в качестве параметров структурированные данные (объекты или массивы). К тому же, удаленные процедуры должны выполняться на том же сервере, откуда была загружена страница.
Обеспечение RS с клиентской стороны
Для обеспечения RS с клиентской стороны необходимо:
Необходимо создать пустой JavaScript блок, который ссылается на файл Rs.htm, как показано ниже:
<script language = "JavaScript" src = "../_ScriptLibrary/RS.htm">
В клиентской странице этот блок может располагаться в любом месте, но до первого удаленного вызова.
Также из клиентской страницы необходимо выполнить вызов метода RSEnableRemoteScripting(). По умолчанию этот метод предполагает, что апплет Rsproxy.class находится в папке _ScriptLibrary, если это не так необходимо указать правильный путь в качестве параметра. Этот скрипт-блок должен располагаться в пределах тела документа, но после скрипт-блока ссылающегося на Rs.htm.
<body> <script language = "JavaScript"> RSEnableRemoteScripting("../_ScriptLibrary"); </script>
После создания функций и процедур необходимо объявить их серверными методами. Для этого создается объект 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)') }
Где:
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>