Развертывание платформы и прикладных компонентов

Profile picture for user Бурлак А. Н.
Автор: Бурлак А. Н.
07.06.2012 10:41

Развертывание платформы и прикладных компонентов Инфо-Бухгалтер 10.

Введение.

Инфо-Бухгалтер 10 — клиент-серверная трехзвенная платформа для разработки прикладных решений. Есть несколько различных компонентов платформы, которые реализованы как отдельные исполнимые модули (exe) и могут размещаться как на одном, так и на нескольких компьютерах. Взаимодействие между компонентами платформы может осуществляться как локально, так и по сети. Эти вопросы подробно рассмотрены в 1-ой и 3-ей частях данного руководства. В 4-ой части дается обзор возможностей таких компонентов платформы как прокси-сервер и Интернет-клиент.

Между файлами платформы и папкой с прикладными компонентами нет жесткой связи. Например, программа «Блокнот» (notepad.exe) может открывать текстовые файлы в любых папках. При этом не требуется копировать файл notepad.exe в папку к текстовому файлу. Аналогично работает и платформа ИБ 10. Для установленной в единственной папке платформы, можно указывать расположение любого количества папок с прикладными компонентами. Исполнимые файлы платформы будут работать с файлами прикладных компонентов, расположенными в текущей на момент старта папке. Эта папка, в частности, задается в ярлыке запуска исполнимых файлов и называется рабочей папкой. В процессе работы программы текущая папка может менятся, но рабочая папка остается прежней. Вопросы взаимного расположения компонентов платформы и прикладных компонентов рассмотрены в 1-ой и 2-ой частях.

1. Варианты установки платформы и прикладных компонентов.

Размещение компонентов платформы.

Программа установки платформы предлагает следующие варианты установки:

  • локальная версия

  • сетевое рабочее место

  • сервер

  • сервер + сетевое рабочее место

  • выборочная/полная

По сути выбираются для установки только клиентское приложение и сервер с разным набором вспомогательных библиотек (dll). Клиентское приложение используется одно и то же в сетевой и локальной версии. Для запуска клиентского приложения используется файл athena.exe.

Серверная часть платформы реализует работу с данными и непосредственно взаимодействует с СУБД. Реализована серверная часть в виде библиотеки athena.dll. В сетевой версии athena.dll работает под управлением сервера, а в локальной версии — под управлением клиентского приложения.

Библиотека athena.dll – единственная, которой отличается демонстрационная версия от рабочей. При установке демонстрационной версии рабочая athena.dll записывается в папку Protect и не используется. При установке рабочей версии демонстрационная athena.dll записывается в папку Demo. При желании можно легко заменять демонстарционную версию на рабочую и наоборот, просто копируя нужный файл в папку файлов платформы.

Для взаимодействия с серверной частью в локальном режиме используется библиотека athloc.dll, а в сетевом режиме — athnet.dll. Когда на одном компьютере установлен сервер и сетевое рабочее место, то для работы в локальном режиме достаточно добавить библиотеку athloc.dll. Этого же результата можно достичь запустив программу установки и выбрав пункт «Изменить».

Следующая таблица иллюстрирует связь компонентов платформы:

Локальная версия

Клиентское приложение → athloc.dll → athena.dll → СУБД

Сетевое рабочее место

Клиентское приложение → athnet.dll → сеть

Сервер

Сеть → сервер → athena.dll → СУБД

Настройка сети рассматривается в 3-ей части.

При выборочной/полной установке в папке файлов платформы находятся все необходимые файлы для работы сервера и клиентсткого приложения в любом режиме.

Выбор режима работы клиентского приложения происходит в соответсвии с параметром SearchServers в секции [Startup] файла athena.ini:

[Startup]

;локальный режим

SearchServers=0

...

По умолчанию платформа устанавливается без конфигурационных файлов. Конфигурационные файлы берутся из рабочей папки. При установке прикладных компонентов создаются ярлыки для запуска платформы в папке прикладных компонентов. Там и находится файл athena.ini, а также другие конфигурационные файлы.

Работа сервера и сетевого рабочего места на одном компьютере.

Платформа поддерживает режим работы сервера и рабочего места на одном компьютере. Однако в таком режиме для взаимодействия все равно используется протокол TCP/IP и сериализация передаваемых данных. В случае локального режима ресурсы компьютера тратятся рациональнее и платформа работает быстрее.

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

Вопрос. Имеет ли смысл установить терминальный сервер и запускать все клиентские приложения на одном компьютере с сервером? У нас такой режим успешно применяется для сетевой версии ИБ 8.

Ответ. В ИБ 10 и клиентское приложение, и серверное выполняют различные вычисления (клиент не тонкий). Работа нескольких клиентских приложений на одной машине и на одной машине с сервером не является оптимальной. В нормальной ситуации нагрузка распределяется между сервером и клиентскими машинами. В отличие от ИБ 8, работа на одном компьютере в режиме терминального сервера не приводит к устранению сетевого взаимодействия. ИБ 8 в такой ситуации работает с локальным файлами базы. Клиенты ИБ 10 все равно работают с сервером через TCP/IP. Терминальный сервер также нагружает сетевые интерфейсы этого компьютера, т.к. передает изображение экрана своим клиентам. Если пользователи ИБ 10 находятся в зоне локальной сети, то гораздо лучше, если они будут работать с сервером не в терминальном режиме.

Варианты работы сервера.

Сервер может работать в двух режимах: службы и консольного приложения. Этим режимам соответствуют исполнимые файлы athsrv2_s.exe и athsrv2_c.exe. Для режима работы сервера в качестве службы есть несколько важных особенностей.

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

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

Программа установки по умолчанию регистрирует службу сервера в режиме автоматического запуска при старте Windows.

Сервер использует такие глобальные ресурсы компьютера как номера сетевых портов. Поэтому нельзя запустить два сервера на одном компьютере с одинаковыми настройками портов. По умолчанию используются порты: 5070 — для администрирования, 5080 — для обнаружения сервера, 5091, 5092... — для работы с базами данных.

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

Вопрос. Как мне запустить второй сервер для экспериментов, пока с основным работают пользователи? Я хочу чтобы оба сервера работали на одном компьютере.

Ответ.

  • Скопируйте папку прикладных компонентов в папку для экспериментов (например, C:\MyIB).
  • Создайте ярлык для запуска athsrv2_c.exe и в качестве рабочей папки укажите C:\MyIB.
  • Временно остановите службу сервера (с помощью «Панели управления» или «Агента ИБ10» - светофора в панели задач).
  • Запустите сервер в консольном режиме с помощью созданного ярлыка.
  • Запустите программу «Администратор сервера» и поменяйте значения портов на 5071, 5081 и т.п. (например). После этого закройте «Администратор».
  • Остановите консольный сервер нажатием Ctrl+C.
  • Запустите службу и консольный сервер. Для подключения клиентов к экспериментальному серверу используйте порт 5081.

Доступ к базам данных.

Для идентификации баз данных в локальной и сетевой версиях используются имена источников данных DSN (Data Source Name). DSN – это не более чем ссылка на базу данных в конкретной СУБД. Разные DSN могут ссылаться на одну и ту же базу данных.

Для работы сервера в режиме службы необходимо создавать системный DSN для обслуживаемых им баз данных. Для создания системного DSN могут потребоваться права администратора (в зависимости от версии и настроек Windows).

Важно. Для нормальной работы ИБ 10 необходимо, чтобы с реальной базой данных одновременно работала только одна программа. Работа через разные DSN с одной базой является ошибочной. В частности нельзя одновременно подключаться к одной базе данных из двух локальных версий, работающих на одном компьютере. Два сервера, работающих одновременно, не должны обслуживать одни и те же базы данных. Для совместного доступа к одной базе данных необходимо использовать один сервер.

Сейчас в качестве СУБД используется MS SQL Server. Для создания резервных копий баз данных и создания копий баз для экспериментов используйте программу управления базами данных MSSQLAdm. Эта программа в автоматическом режиме создает и удаляет DSN при создании и удалении базы данных.

Размещение прикладных компонентов.

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

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

Папку прикладных компонентов можно скопировать в любое место. Указание новой папки в ярлыках для запуска athena.exe и файле service.ini (для службы сервера) полностью переведет работу в эту папку. Службу сервера надо перезапустить для применения новой рабочей папки.

2. Сохранение баз данных и соответствующих версий платформы и прикладных компонентов.

По прошествии времени возникает необходимость сохранения баз данных за прошлые периоды, а также прикладных компонентов и платформы, которые способны работать с этими данными.

Т.к. прикладные компоненты изменяются под влиянием требований законодательства и собственного развития, то для полного сохранения информации по прошлым периодам недостаточно хранить только базы данных. Что касается платформы, то в интересах развития иногда приходится отказываться от поддержки полной совместимости с предыдущими версиями. Поэтому для уверенности, что всегда можно вернуться к базе данных за прошлый год (например), посмотреть интересующие отчеты и т.п., надо сохранять весь комплекс: платформа + прикладные компоненты + база данных.

Вопрос. В ИБ 8 мы просто копировали папку с программой. Например из IBW8 в IBW8_2009. Можно ли так делать в ИБ 10?

Ответ. Да, можно. Позаботьтесь, чтобы сохранялась локальная версия платформы, это поможет избежать сложностей с настройкой запуска сервера (см. часть 1). Последовательность действий следующая (для папки «MyBackup2009» и базы «IBBase»):

  • Скопируйте платформу из «Program Files\IB\Ib10» в «MyBackup2009».
  • Скопируйте прикладные компоненты из «Program Files\IB\Ib10Applications» в «MyBackup2009» поверх платформы.
  • Если была сетевая версия, то в файле «MyBackup2009\athena.ini» надо поставить SearchServers= 0.

В результате в папке «MyBackup2009» запускаем локальную версию, работающую с базой 2009 года. При этом файлы в папке «MyBackup2009» никогда не обновляются и могут храниться и работать любое время. Получается размещение в духе ИБ 8: исполняемые модули, dll и бланки — все в кучу.

Вопрос. Но у нас куплена сетевая версия. Будет ли работать локальная версия с тем же ключом?

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

3. Сетевое взаимодействие.

Клиент и сервер взаимодействуют между собой с использованием сетевого соединения TCP/IP. Кроме этого используется контекст более высокого уровня — логическое соединение. Это позволяет продолжить работу после временного сбоя физического соединения.

Клиентское приложение также имеет возможность создать новое логическое соединение и продолжить работу с ним. Это происходит, например, при перезапуске сервера, когда все прошлые логические соединения теряются. Текущее состояние логического соединения (online/offline) отображается в строке состояния клиентского приложения.

Для первоначального установления соединения клиент посылает специальное сообщение на порт маяка. Это сообщение может посылаться направленно или широковещательно. При широковещательной рассылке используется маска подсети, для которой происходит рассылка сообщения поиска. Широковещательная рассылка может использоваться только в рамках локальной сети. Направленная рассылка не имеет подобного ограничения. Для направленной рассылки указывается ip-адрес компьютера сервера или сетевое имя. Использование сетевого имени позволяет осуществлять подключение в условиях динамически назначаемых адресов. Для поиска сервера по умолчанию используется порт 5080.

Параметры подключения к серверу на стороне клиента задаются в файле ircon2.ini:

[Locator]

SearchAddr = 255.255.255.0

Broadcast = 1

BeaconPort = 5080

SearchCount = 3

SearchMaxWait = 200

SearchAddr – здесь указывается маска подсети, ip-адрес или сетевое имя.

Broadcast – определяет режим рассылки сообщений поиска: 1 — широковещательные, 0 — направленные.

BeaconPort – порт, на который осуществляется посылка сообщений поиска.

SearchCount – количество посылаемых сообщений (попыток поиска).

SearchMaxWait – время ожидания ответа в миллисекундах.

Для работы программы администрирования сервера аналогичные параметры задаются в файле radmin2.ini.

Вопрос. У меня сервер работает (светофор зеленый). Но клиент не находит сервера.

Ответ. Для рассылки широковещательных сообщений и установления соединения с сервером требуется, чтобы сетевые экраны и антивирусы разрешали такую активность. Можно указать либо необходимые порты (5080, 5070, 5091...) в списке исключений, либо указать в списке доверенных приложений исполняемые модули сервера athsrv2_s.exe и athsrv2_c.exe. Некоторое программное обеспечение блокирует не только входящие, но и исходящие соединения. В таком случае в список доверенных приложений необходимо включить athena.exe и radmin2.exe.

Вопрос. У меня на ноутбуке установлен сервер и рабочее место ИБ 10. При работе в офисе к ноутбуку подключена витая пара, сервер находится и все работает. Когда я уношу ноутбук домой, то сервер не находится. В ircon2.ini указано SearchAddr=255.255.255.0, т.е. по всем адресам.Что меняется и почему не работает?

Ответ. При отключении провода локальной сети становится недоступным ip-адрес, указанный в настройках сетевого адаптера (например, 222.22.22.22). В такой ситуации возможна работа только с локальными адресами 127.x.x.x. Широковещательная рассылка в такой ситуации не применяется. Чтобы не менять каждый раз в настройках адрес с 222... на 127..., укажите вместо адреса сетевое имя компьютера или localhost:

SearchAddr=localhostBroadcast=0

Вопрос. Можно ли работать с сервером не через локальную сеть, а через Интернет?

Ответ. Можно. Должны соблюдаться следующие условия:

  • Для компьютера сервера должны поддерживаться входящие соединения. Т.е. должны соблюдаться условия необходимые для работы любого сервера: web, ftp и т.п.
  • Провайдер, прокси-сервер, файрволл и т.п. должны допускать соединения для портов 5080, 5070, 5091... Или эти порты в ИБ 10 должны быть перенастроены на разрешенные.
  • Подключение к Интернет должно обеспечивать достаточную для комфортной работы скорость обмена информацией.

Вопрос. А какая это скорость? Это можно как-то оценить?

Ответ. Подключение к Интернет для сервера должно обеспечивать достаточную скорость исходящего траффика. Особенно это важно, когда через Интернет работают несколько пользователей, т.к. исходящий канал сервера делится между ними. Зачастую провайдеры предоставляют подключения, когда исходящий канал значительно медленнее входящего, что нормально для большинства пользователей, но не для серверов. Наибольшей скорости отдачи информации сервером требуют операции листания журналов и справочников. Если в такой таблице отображается много информации, то размер порции подкачки может достигать 200-300 килобайт. Для комфортной работы надо, чтобы время передачи такого пакета от сервера к клиенту составляло не более секунды. Добавление операций не создает большого трафика, а формирование отчетов не требует малого времени реакции. Итого с запасом получается около 500 килобайт в секунду исходящих данных сервера на одного пользователя. Если с тем же сервером работают пользователи по локальной сети, то они не влияют.Вопрос. Информация передается с сервера через Интернет в открытом виде?Ответ. ИБ 10 поддерживает защиту соединения с помощью технологии SSL. Включить защиту соединения можно с помощью Администратора сервера”. Потребуется сгенерировать и положить на сервер и клиентов файлы сертификатов.

3. Возможности использования Интернет-клиента и прокси-сервера.

В ИБ 10 реализован механизм прикладных событий, который позволяет передавать информацию между логическими частями прикладного решения и между клиентом и сервером. Интернет-клиент позволяет обобщить этот механизм для передачи событий удаленному прокси-серверу. Данные события составляются из значений простых типов, организованных в контейнерах СОБ_ПАРАМ и СОБ_МАССИВ.

Таким образом, здесь взаимодействие происходит через Интернет, но взаимодействуют программы, работающие с разными базами данных. При этом Интернет-трафик составляют только явно посланные из прикладного кода события для удаленного прокси-сервера. Прокси-сервер работает как клиент сервера ИБ 10 уже в локальной сети. Сервер вызывает соответвующий событию обработчик (исполнимый код из файла *.ibx). Обработчик считывает информацию из базы данных или вносит изменения с помощью обычных средств внутреннего языка.

Например, так можно организовать удаленный ввод данных:

Сценарий. Есть центральный офис, где стоит сервер, прокси-сервер и находится основная база данных. Есть удаленный офис, где стоит локальная версия с Интернет-клиентом, локальная версия работает со своей базой данных. Оператор в удаленном офисе заполняет форму и нажимает ОК. Данные регистрируются в локальной базе данных (локальный архив), а также упаковываются в тип СОБЫТИЕ и отправляются в Интернет на прокси-сервер центрального офиса. Обработчик соответствующего события в центральном офисе заносит данные в центральную базу данных.

Рубрика
Поделитесь с коллегами: