arrowГлавная arrow Статьи arrow Статьи на разные темы arrow IP-драйвер Wednesday, 20 August 2008  
Главное меню
Главная
Новости
Статьи
Комментарии
Файлы
Ресурсы
Ленты новостей
Форум разработчиков
Фотогалерея кларионистов
Пользователи
Общение
Ссылки
Поиск
Контакты
Карта сайта
Ссылки
Softvelocity
Clarion Magazine
Кларион в России
SealSoft Company
IngaSoft Plus
Авторизация (CB)
Счетчик



who's online
IP-драйвер Версия для печати Отправить на e-mail
Написал Андрей Попов   
07.08.2007
Автор: Вячеслав Черников
 
Вчера выбрал время на тестирование последней версии ip-драйвера. Как и писали, скорость работы стала вполне приемлемой. Проверял на том, что есть в наличии - девелоперский комп, ноутбук и 100мбит между ними. Визуально скорость на постраничном browse чуть ниже, чем при работе с обычным tps (если прокручивать по одной записи мышой), но жуткие тормоза, которые были в прошлых версиях, отсутствуют. В целом, скорость приемлемая. Некоторые замечания...
 
Поставляется серверная и клиентскя часть. Шаблоны серверной части достаточно просты и автономны. С помощью их генерится серверная dll, в которую включаются декларации таблиц словаря и глобальные переменные, объявленные в словаре. Чтобы исключить какую-либо таблицу, нужно установить FileUserOptions IPDRV='0'. Серверная dll генерится визардом и, в простейшем случае, не содержит процедур. В нее можно добавить процедуры, которые в дальнейшем можно исполнять на стороне сервера. Это обычные процедуры. В процессе генерации кода параллельно содается файл с расширением ips, в котором содержится имя серверной dll и перечислены включенные в нее таблицы, глобальные данные и серверные процедуры. В дальнейшем этот файл используется в шаблонах клиентской части.
 
С клиентскими шаблонами дела обстоят сложнее. Плохая новость - они завязаны на ABC-либу. Хорошая новость - они покрывают два достаточно простых и автономных класса для расширенной работы с ip-соединением (туда входит установка и проверка подключения, управление переменными именами файлов, запись и чтение серверных переменных, запуск на выполнение серверных процедур, обмен файлами между сервером и клиентом). Классы достаточно понятны и хорошо документированы (кстати, дока по ip-драйверу довольно подробная и хорошая). В принципе, их легко подключить обычным способом через inc, а шаблоны можно по аналогии сделать свои - они очень простые.
 
Поскольку я не использую ABC, то пошел путем интеграции ip-функционала в свой набор. Использовать ips-файл не стал, мне показалось, что достаточно опций словаря. Сделал глобальную опцию словаря, в которой задается имя серверной dll. Если в значение опции спереди добавить "-", то она считается выключенной. Небольшой нюанс - данные приложения должны находиться в каталоге, относительно корневой директории ip-сервера. Желательно для приложения делать свой подкаталог (вдруг приложений будет несколько). Тогда имя серверной dll в декларации таблицы на клиенте нужно написать по аналогии, например: Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script В ip-сервере есть еще алиасы, которые вроде можно указать вместо имени серверной dll, но у меня почему-то не получилось их использоать (или я что-то не так понял).
 
Далее, для локальных таблиц оставил стандартную схему с IPDRV='0'. Шаблонами сделал условную установку атрибутов driver и owner при декларации таблиц, подключил в проект либу ip-драйвера. Для работы двух дополнительных классов нужен еще DOS-драйвер, но я их пока не трогал.
 
Собственно, все. Собрал тестовый пример с тремя таблицами, зарегистрил серверную dll в менеджере ip-сервера. Данные подсунул из реальной базы. Все заработало. Совместимость с обычными приложениями на tps очень хорошая. Переделывать, пожалуй, нужно только те места, где идет присвоение переменных имен таблиц и операции наподобии создания подкаталогов (если делать каталог данных недоступным напрямую по сети). Это, думаю, несложно, и можно завернуть в код используемых шаблонов.
 
При старте желательно сразу установить соединение и держать его, как и при работе с SQL-серверами. Оно требует некоторого времени. Сделать это можно, либо открыв какую-либо таблицу в первом потоке, либо использовать метод одного из двух классов (они, как я понял, используют для этих целей свою внутреннюю служебную таблицу). Ну а дальше можно заняться оптимизацией сетевого трафика, благо есть такие вещи, как фильтрация вьюшек на сервере, чтение и запись пакетами, серверные процедуры.
 
Для совместимости со стандартными tps-приложениями использовать условную кодогенерацию и условную компиляцию.
 
В целом, впечатление вполне благоприятное. Действительно, практически без переделки приложений можно перейти к клиент-серверной архитектуре, оставаясь работать со встроенным форматом и сохраняя привычную накатанную технологию разработки. Это очень важно, поскольку:
1. Решается вопрос надежности работы со встроенными форматами по сети. Особенно в сочетании с логом, получается довольно надежная конструкция.
2. Повышается скорость работы и снижается сетевой трафик, можно одключить большее количество конкурентных пользователей по сравнению с файл-серверным вариантом.
3. Повышается секретность. Как и в случае с SQL-серверами, прямого доступа к файлам по сети может не быть.
4. Не нужно устанавливать стороннее программное обеспечение, тратить ресурсы на его изучение и техподдержку. Не надо платить за лицензии третьим фирмам. Это особенно важно, если клиенты не имеют своего AT-персонала и ограничены в средствах. Установка ip-сервера достаточно простая - это легкое приложение для решения строго заданной задачи.
5. Во многих случаях не нужно устанавливать серверную ось, которая более сложна в эксплуатации и может требовать дополнительной оплаты подключений.
Меня реально напрягал тот факт, что для быстрой и надежной работы моих программ нужно использовать терминальный сервер. Это, конечно, отличное решения для tps, но нужно покупать как минимум саму ось, приглашать специалиста для ее установки и, возможно, периодической поддержки, что для организаций с 5-10 компьютерами может быть не совсем обосновано. И это при том, что есть бесплатные SQL-сервера, работающие на декстопах...
6. Открывается возможность подключения к базам данных через интернет.
7. Возможны смешанные схемы работы через ip-драйвер и терминальные сервера.
 
Показательно мнение Брюса Джонса, который назвал ip-драйвер самой значительной разработкой SV, если не считать самого клариона. Сейчас все версии программных продуктов Capesoft, базирующиеся на встроенном tps-формате, имеют опцию работы с ip-сервером... Если программы серийные и ориентированы на небольшие и средние предприятия, которым невыгодно заказывать custom development, то использование ip-драйвера может оказаться вполне, вполне конкурентноспособно...
 
С уважением,
Вячеслав Черников
Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
http://www.finsoftrz.narod.ru

комментариев
Written by StillZero on 2007-08-07 06:26:25
Статья взята из письма в рассылку ClaList. Афтору респект. 
 
>Плохая новость - они завязаны на ABC-либу. 
для кого плохая, а для кого нормальная 
 
>назвал ip-драйвер самой значительной разработкой SV 
хз, спорить не буду, для SV возможно это и руль, реальная отдача IMHO это SQL, а IP-драйвер что то вроде "красивого танца под звук бубна", как ни крути под SQL писать проще
Written by FinSoft on 2007-08-07 10:27:19
По поводу писать проще под SQL - я придерживаюсь прямо противоположной точки зрения. Если речь идет про все приложение, а не только про клиентскую часть. Но, вообще говоря, это вопрос десятый... На чем есть наработанный инструментарий, на том и будет проще. Логичный расклад: разработку на SQL лучше делать для заказного проекта, на flat-формате лучше делать тиражные (серийные) проекты. Связка Clarion+SQL вещь, вообще говоря, довольно странная, если задуматься... Впрочем, диспут в данном направлении абсолютно непродуктивен...

Only registered users can write comments.
Please login or register.

Powered by AkoComment 2.0!

Последнее обновление ( 07.08.2007 )
 
След. >

вверх страницы