Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Часть 3. Программирование форм и интерфейса
Дальше: Форма – клиент-серверный объект

Клиент-серверная архитектура

Форма – это программный объект, который создается в процессе работы прикладного решения в режиме 1С:Предприятие.

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

В «1С:Предприятии» нет «единого пространства» для выполнения кода на встроенном языке. Каждый фрагмент кода выполняется в некотором контексте.

По большому счету, не углубляясь в детали, таких контекстов два: это контекст клиента и контекст сервера.

С одной стороны, контекст определяет «программное окружение», в котором исполняется код: доступные свойства, методы, набор объектов встроенного языка, которые можно использовать.

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

Например, в клиент-серверном варианте работы «1С:Предприятия» взаимодействие программных компонентов будет выглядеть следующим образом (рис. 3.1).

Рис. 3.1. Программные компоненты «1С:Предприятия» в клиент-серверном варианте работы

Клиентское приложение – это программа (толстый клиент, тонкий клиент или веб-клиент), которая обеспечивает интерактивное взаимодействие системы с пользователем. Она может помимо всего прочего исполнять код на встроенном языке, написанный разработчиком. В этом случае говорят, что этот код исполняется в контексте клиентского приложения, или, короче, на клиенте.

Сервер «1С:Предприятия» – это один из рабочих процессов, функционирующих в составе кластера серверов «1С:Предприятия». Он обеспечивает взаимодействие клиентского приложения с хранилищем данных – системой управления базами данных (СУБД). А кроме этого сервер «1С:Предприятия» также может исполнять код на встроенном языке. В этом случае говорят, что код исполняется в контексте сервера, или, короче, на сервере.

Первая особенность, которая важна для нас, заключается в том, что на сервере и на клиенте доступны разные свойства, методы и объекты встроенного языка. Грубо говоря, все действия, связанные с доступом к данным СУБД (их чтение и запись), возможны только на сервере, в то время как интерактивные действия (отображение данных пользователю, визуальное взаимодействие с пользователем) возможны только на клиенте.

Теперь обратим внимание на другую особенность, которая также будет важна для нас. Программные компоненты «1С:Предприятия», о которых мы говорили выше, могут размещаться как на одном компьютере, так и на разных. Вариантов их размещения существует много, но наиболее реальной ситуацией «боевой» работы клиент-серверного варианта будет ситуация, показанная на рисунке 3.2.

Рис. 3.2. Схема клиент-серверного варианта работы

Клиентское приложение работает на компьютере пользователя – клиентском компьютере. Сервер «1С:Предприятия» работает на отдельном выделенном компьютере – сервере. СУБД также работает на отдельном компьютере – сервере базы данных.

Как правило, сервер и сервер баз данных находятся в пределах одной локальной сети. А вот клиентский компьютер, вообще говоря, может находиться где угодно. Он может находиться в этой же сети, а может подключаться к серверу через Интернет. При этом каналы связи, используемые для такого подключения, могут быть самыми разными – от широкого и быстрого оптоволоконного подключения до узкого и медленного подключения по каналам сотовой связи.

Работа системы «1С:Предприятие» всегда начинается на компьютере пользователя – пользователь запускает приложение и соединяется с информационной базой. Уже в этот момент в работу вступает серверная часть «1С:Предприятия» – выполняется соединение с кластером серверов, аутентификация подключающегося пользователя в информационной базе, формирование основного окна системы, начальной страницы и передача его назад, на клиент. В дальнейшем этот процесс повторяется неоднократно: выполнение каких-либо действий начинается в клиентском приложении, затем управление передается на сервер, он выполняет некоторые действия и возвращает управление на клиент. То есть клиентское приложение вызывает сервер для выполнения каких-либо действий, сервер выполняет их и возвращает управление и результат этих действий обратно клиентскому приложению.

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

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

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

Назад: Часть 3. Программирование форм и интерфейса
Дальше: Форма – клиент-серверный объект