Клиентский суррогат - Большая Энциклопедия Нефти и Газа, статья, страница 1
Скромность украшает человека, нескромность - женщину. Законы Мерфи (еще...)

Клиентский суррогат

Cтраница 1


Клиентский суррогат может упаковать само число k в сообщение и передать его серверу. Затем серверный суррогат создает указатель на число k и передает его серверной процедуре, как и ожидалось. Когда серверная процедура возвращает управление серверному суррогату, тот оправляет число k назад клиенту, где новое число k копируется поверх старого. В результате стандартная передача параметров по ссылке была заменена передачей значений. К сожалению, этот метод не всегда работает, например не работает в том случае, когда указатель указывает на какую-либо сложную структуру. По этой причине на параметры удаленных процедур должны быть наложены определенные ограничения.  [1]

Ключевой вопрос, на который следует здесь обратить внимание, состоит в том, что клиентская процедура, написанная пользователем, выполняет нормальный ( то есть локальный) процедурный вызов клиентского суррогата. Так как клиентская процедура и клиентский суррогат находятся в одном адресном пространстве, параметры передаются обычным образом. Аналогично, серверная процедура вызывается процедурой в своем адресном пространстве. Таким образом, вместо выполнения ввода-вывода с помощью процедур send и receive, связь с удаленными объектами осуществляется при помощи имитации нормальных процедурных вызовов.  [2]

При этом параметры передаются через стек, как при обычном вызове. На шаге 2 клиентский суррогат упаковывает параметры в сообщение и обращается к системному вызову для оправки сообщения. Упаковка параметров называется маршалингом или маршализацией. На шаге 3 ядро посылает сообщение с клиентской машины на сервер. Наконец, на шаге 5 серверный суррогат вызывает серверную процедуру. Ответ проходит по тому же пути в обратном направлении.  [3]

Ключевой вопрос, на который следует здесь обратить внимание, состоит в том, что клиентская процедура, написанная пользователем, выполняет нормальный ( то есть локальный) процедурный вызов клиентского суррогата. Так как клиентская процедура и клиентский суррогат находятся в одном адресном пространстве, параметры передаются обычным образом. Аналогично, серверная процедура вызывается процедурой в своем адресном пространстве. Таким образом, вместо выполнения ввода-вывода с помощью процедур send и receive, связь с удаленными объектами осуществляется при помощи имитации нормальных процедурных вызовов.  [4]

Идея удаленного вызова процедуры заключается в том, что вызов удаленной процедуры должен выглядеть максимально похоже на вызов локальной процедуры. В простейшей форме для вызова удаленной процедуры клиентская программа должна быть связана с небольшой библиотечной процедурой, называемой клиентским суррогатом или клиентской заглушкой, представляющей серверную процедуру в адресном пространстве клиента. Аналогично, сервер связан с процедурой, называемой серверным суррогатом или серверной заглушкой. Эти процедуры создают видимость локальности вызова.  [5]

Вторая проблема заключается в том, что в языках со слабым контролем типов, таких как С, вполне допустимо написание процедуры, вычисляющей скалярное произведение двух векторов ( массивов), без указания размеров векторов. Массивы могут, например, ограничиваться специальным символом, известным только вызывающей и вызываемой процедурам. При такой ситуации клиентский суррогат не способен корректно упаковать в сообщение все необходимые параметры, так как у него нет способа определить их размеры.  [6]

Вторая проблема заключается в том, что в языках со слабым контролем типов, таких как С, вполне допустимо написание процедуры, вычисляющей скалярное произведение двух векторов ( массивов), без указания размеров векторов. Массивы могут, например, ограничиваться специальным символом, известным только вызывающей и вызываемой процедурам. При такой ситуации клиентский суррогат не способен корректно упаковать в сообщение все необходимые параметры, так как у него нет способа определить их размеры.  [7]



Страницы:      1