Диплом: Автоматизация процесса внутрикорпоративного взаимодействия сотрудников компании ФГБУ «ФЦТ»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
91
п/п
Наименование модуля
Функции модуля
7)
ПМ Справочника
Пользователи
Содержит определенные процедуры,
позволяющие осуществлять редактирование
Справочника Пользователи
Комплект ПО зачастую включает в себя: клиентскую часть; сервер
приложений и БД.
Клиент — компонент интерфейса, являющийся первым уровнем, т.е. самим
приложением для конечного пользователя. Данный уровень не оснащен прямыми
связями с БД и бизнес-логикой.
Сервер приложений расположен на 2 уровне. На нем же хранится почти вся
бизнес-логика.
Сервер БД отвечает за хранение данных и занимает 3 уровень.
Сервер приложений создан на базе Delphi XE2. Работа клиента и сервера
реализована при помощи DataSnap. Обмен данными между клиентом и сервером
реализован через протокол TCP.
Сервер приложений работает с СУБД MS SQL 2008R2. Соединение с БД
выполняется по ADO.
В структуре сервера можно выделить две основные части: Модуль
управления сервером (TdmServer) и модуль предоставления данных
(TdssmRemoteData) (рисунок 2.9).
92
Рисунок 2.9 Диаграмма классов
Класс «TdmServer»
Этот класс становится базой сервера приложений. Отвечает он за контроль
сетевых подключений, подключений к БД.
Контроль сетевых подключений подразумевает аутентификацию клиентов,
реализацию защищенного потока сервера для любого подключения, внедрение
компонента класса серверных методов, которые используют сами пользователи.
При активации этого модуля сразу же реализуется соединение с БД.
Настройки соединения хранятся в файле Settings.ini. Если процесс соединения с
93
БД не устанавливается, сервер выдает ошибку с недоступностью работы,
поскольку подключение к БД – обязательное условие.
Как было описано ранее, сервер пересылает информацию по TCP (под
руководством компонента DSTCPServerTransport). И поэтому для сервера нужно
указать порт прослушивания. В данной работе этот порт 5000.
В процессе подключения на сервере открывается отдельный поток. Клиент
должен изначально передать данные для распознавания (логин и пароль), которые
проверяет компонент DSAuthenticationManager. Если распознавание проходит
успешно, для дальнейшей работы DSServer создает меню взаимодействия. Под
данным меню предполагается элемент класса TdssmRemoteData.
Если процесс распознавания ошибочен, выдается исключение и поток
соединения обрывается.
Класс «TdssmRemoteData». Включает в себя набор серверных методик и
данных, которые сервер передает клиентам, т.е. методы, доступные для работы
всем приложениям. В данной работе это методы контроля проектами.
Исходя из описанного выше, элемент класса TdssmRemoteData реализуется
по факту успешного распознавания пользователя и необходим для передачи
клиентскому приложению некоторых данных и серверной функциональной части.
Очередность передачи данных между сервером и клиентом можно
представить так:
• Инструмент для соединения с БД (TADOConnection);
• Данные (TADOTable или TADOQuery);
• Поставщик данных (TDataSetProvider);
• Инструмент для соединения клиента (TSQLConnection);
• Инструмент клиента для соединения с поставщиком данных
(TDSProviderConnection);
Набор данных клиента (TClientDataSet).
1-3 пункты отрабатываются на серверной части, 4-6 пункты выполняются
клиентом. Элементы класса TDataSetProvider необходимы для отражения прав
доступа и контроля настройки передачи данных клиенту. Отдельными
параметрами можно выразить: доступность некоторых данных для клиента,
установка режима чтения, отмена редактирования, вставки, удаления и т.п.
94
Класс «TDSServer». Базой сервера приложений является элемент
TDSServer. Он является неким диспетчерским центром сервера. Изначально, этот
элемент отвечает за реализацию связей с сервером DataSnap и клиентами, при
этом он контролирует потоки данных на TCP/IP и HTTP. Также, TDSServer
отвечает за передачу клиентам методов сервера, и для этого происходит
пересылка запросов клиентов в модуль методик сервера. И наконец, элемент
помогает реализовать сторонний туннель связи для передачи личных сообщений
клиентским программам.
Класс «TDSAuthenticationManager». Для реализации обмена данными в
сервере DataSnap лучше всего применять элемент TDSAuthenticationManager. Он
помогает иметь возможность реализовывать дополнительную проверку точности
всех отправляемых файлов.
Также этот элемент отвечает за определение и распознавание запустившего
клиентское приложение пользователя на сервере DataSnap.
Процесс аутентификации является проверкой подлинности пользователя.
Зачастую клиент подтверждает то, что он именно тот, чьи данные вводит в
процессе входа в систему. Зачастую такими данными становятся логин и пароль.
В случае, если данные введены верно, и процедура аутентификации успешна,
происходит вход в СУБД и его авторизация.
Авторизацией называется процесс передачи клиенту неких ресурсов и прав
на их использование.
Системы безопасности множества серверов для контроля прав
пользователей применяют подготовленные ранее перечни привилегий.
Системный админ имеет самый открытый список полномочий, опытный
пользователь имеет некие ограничения, а права рядового юзера максимально
минимизированы. Список созданных ранее прав называется ролью. Роль сильно
упрощает весь процесс контроля подсистемы авторизации — новый пользователь
просто наделяется правами конкретной роли. Это явно удобнее, чем каждый раз
описывать весь список прав для каждого пользователя.
Класс «TDSTCPServerTransport». В процессе создания транспортных
каналов между клиентами и сервером DataSnap создатель может выбрать между
парой вариантов обмена информацией:
95
• Соединение низкого уровня в рамках стека TCP/IP с использованием
элемента TDSTCPServerTransport;
• Соедиение высшего уровня в рамках HTTP протокола с
использованием элемента TDSHTTPService.
Соединение низкого уровня в рамках стека TCP/IP самое универсальное.
Сейчас этот данный протокол доминирует в локальных и глобальных сетях.
Поэтому созданные с применением данного элемента TDSTCPServerTransport
приложение будет работать как в сети компании, так и в сети Интернет. Протокол
HTTP основан на TCP/IP стеке, но имеет более развитые возможности по
функционированию в Web-среде. Контроль сервиса HTTP реализован
возможностями элемента TDSHTTPService, который отличается поддержкой
протокола полноценной передачи состояния (Representational State Transfer,
REST). Это обновленный стиль, который помогает клиентам использовать
ресурсы сервера.
Класс «TDSServerClass». В работах DataSnap элемент TDSServerClass
отвечает за передачу методов, размещенных на сервере, приложениям клиентов.
Элемент находится в контейнере сервера и соединен с элементом TDSServer при
помощи property Server;
Также еще одним свойством, которое нужно рассмотреть, является
определяющее нюансы ЖЦ элемента класса TDSServerClass: property LifeCycle:
string; //изначально Session.
Есть 3 варианта настройки ЖЦ элемента: Session, Server и Invocation.
Изначально оно находится в состоянии Session. Говорит это о том, что в процессе
соединения с сервером клиентского приложения лично для него создается
готовый объект TDSServerClass. Реализованный объект поддерживает клиента в
рамках всей сессии и удаляется по факту отключения клиентского ПО от сервера.
Перевод ЖЦ в режим Server явно меняет работы приложения, сервер будет иметь
единый элемент TDSServerClass. И этот элемент будет обслуживать все
подключения извне. Третье состояние Invocation нужно тогда, когда необходимо,
чтобы элемент TDSServerClass реализовался для обслуживания всех обращений к
методу сервера и удалялся из памяти по факту реализации метода. По итогу,
любой вызов метода работает с новым элементом TDSServerClass.
96
Класс «TADOConnection». Элемент TADOConnection нужен для контроля
соединения с объектами БД ADO. Он поддерживает доступ к БД элементами
ADO, включающими набор данных.
Класс «TADOTable». Элемент ТАDOTаblе поддерживает работу в
программах Delphi таблиц БД, соединённых через поставщиков OLE DB.
Класс «TADOQuery». Элемент TADOQuery поддерживает работу запросов
SQL в момент обработки данных через ADO.
Класс «TIniFile». Элемент для работы с конфигурационными файлами
«INI».
Передача сообщений. Данная функция реализована на серверной части.
Помимо передачи сообщений в самой системе есть возможность отправки SMS и
e-mail сообщений.
Отправка e-mail. Реализация передачи электронной почты создана при
помощи компонента Indy (для Delphi). Применяется протокол исходящей почты
SMTP. Для внедрения функции передачи сообщений были применен ряд
компонентов Indy (табл. 2.11):
Таблица 2.11
Компоненты Indy
TIdSMTP
SMTP клиент
TIdSSLIOHandlerSocketOpenSSL
Компонент поддержки защищенной
передачи данных (SSL). Сейчас это
является обязательным условием
использования всевозможных
почтовых сервисов, таких как
smtp.yandex.ru, smtp.mail.ru и т.д.
TIdMsg
Отправляемое сообщение
TIdText
Текст сообщения
Также, для отправки email-сообщений необходимо чтобы в директории
сервера (где находится файл Server.exe) располагались два файла libeay32.dll и
ssleay32.dll (файлы библиотеки OpenSSL). Данные файл необходимы для
поддержки защищенных соединений по протоколу SSL.
97
Indy
Совместно с основными службами и протоколами Интернет имеется
множество дополнительных сервисов, которые часто применяют веб-
разработчики. И зачастую отразить информацию при помощи браузера
становится оптимальным для веб-приложений. В таких случаях использую веб-
инфраструктуру для передачи данных, а трансляция данных доступна на
дополнительных клиентских программах, реализованных, к примеру, на Delphi.
Итак, нужно реализовать некую серверную логику, отсутствующую в
классическом Web-сервере. Для реализации таких задач в Delphi есть компонент
Internet Direct (Indy) by Nevrona Designs. Этот компонент, разработанный для
Borland Delphi, включает 10 версий, и 10 включена в состав последней версии
Delphi. Набор элементов разделен на 3 группы: для сервера (Indy Servers), для
клиента (Indy Client) и сторонние (Indy Misc). Почти вся совокупность Indy Client
и Indy Servers парная, соответствующая клиентским и серверным протоколам и
службам (кроме отдельных серверных, которые включены в TunnelMaster и
TunnelSlave), и позволяющих использовать протоколы NNTP, SMTP, FTP, TCP/IP,
UDP, HTTP, и некоторые службы: WHOIS, ECHO, FINGER и т.д. Элементы
клиентского Indy реализованы на базе сокетов. Сокету от клиента требуется
соединиться с сервером. Если связь установлена, происходит передача данными.
Связи носят различный характер, но чаще всего обмен происходит по
конкретному протоколу (к примеру, НТТР).
Передача SMS. Внедрение такого метода базируется на применении
сервиса «МТС Коммуникатор». Работа с этим сервисом выполнена при помощи
ПО «Communicator.exe» созданной самой МТС. Это ПО помогает передавать SMS
посредством «МТС Коммуникатор».
Таблица 2.12
Описание API Communicator.exe
<naming>
Подпись отправителя
proxy:port
Адрес proxy-сервера (в случае если в
сети используется proxy-сервер)
proxy_user
Логин для авторизации proxy-сервера
(в случае если в сети используется
proxy-сервер)
98
proxy_password
Пароль для авторизации proxy-сервера
(в случае если в сети используется
proxy-сервер)
<логин>
Логин (номер абонента МТС на
которого зарегистрирована услуга
«МТС Коммуникатор»)
<MD5 дайджест от пароля>
Контрольная сумма MD5 вычисленная
на основании пароля пользователя
услуги «МТС Коммуникатор»
<номер телефона>
Получатель сообщения
<"сообщение в кавычках">
Текст сообщения
Запуск команды «Communicator.exe» выполняется при помощи функции
WinAPI «ShellExecute»:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: PWideChar; ShowCmd: Integer): HINST; stdcall;
Вызов (отправка одной SMS) выглядит следующим образом:
ShellExecute(HWND_DESKTOP, 'open',
ExtractFilePath(Application.ExeName) + 'Communicator.exe', Params, '', SW_HIDE);
«ExtractFilePath(Application.ExeName) + 'Communicator.exe'» – полный путь
до приложения «communicator.exe»
Params – это параметры приложения «communicator.exe»
Клиент
Класс «TdmData»
Основой клиентской части является модуль TdmData. Модуль выполняет
следующие функции: соединение с сервером; управление предоставленными
сервером наборами данных; получение доступа к функциональности сервера
(создание проекции интерфейса взаимодействия «TdssmRemoteData»).
99
Рисунок 2.10 Диаграмма классов
Для соединения с сервером применяется элемент SQLConnection. К
параметрам соединения относятся: метод подключения (DataSnap); IP сервера;
требуемый порт (5000); протокол передачи (у нас это TCP); учетные данные
клиента.
Для доступа к данным и функциям сервера применяется специальный
элемент DSProviderConnection, требуемый для передачи клиентского набора
данных (TClientDataSet) к поставщику данных (TDataSetDrovider).
По факту успешного соединения с сервером реализуется активация
имеющихся наборов данных.
По факту открытия этих данных пользователь имеет право изменять набор
данных через визуальное представление (методами TDBGrid, TDBEdit,
TDBMemo, TDBImage, TDBNavigator и т.д.), созданными непосредственно для
взаимодействия с БД. Но данное визуальное представление передается не
напрямую к клиентскому набору данных, а через посредника (элемент класса
TDataSource), который упрощает применение визуальных компонентов с разными
типами наборов данных.
100
Клиент при этом получает доступ к интерфейсу обмена сервера
TdssmRemoteData. На клиентской стороне, посредством элемента
DSProviderConnection, реализуется проекция класса TdssmRemoteData,
включающая методы серверного класса с публичным классификатором. Сама
проекция активируется по фактцу подключения клиента к серверу.
Класса «TdssmRemoteDataClient». Проецирование серверного класса
«TdssmRemoteData».
Класс «TSQLConnection». Если в проекте есть клиент DataSnap элемента
TSQLConnection — это важное условие реализации взаимодействия c сервером
DataSnap. Этот элемент отвечает за пару направлений работы:
• Контроль соединения с сервером DataSnap;
• Отправка серверу данных, определяющих клиента.
Учитывая многогранность и сложность элемента (а он также применяется
в клиент-серверных проектах БД), процесс его настройки для работы в
клиентском приложении DataSnap прост.
Сфера использования компонента-соединителя TSQLConnection велика и
не ограничена только DataSnap проектами. Присутствие в имени префикса SQL
говорит о том, что элемент изначально нацелен на работу в проектах БД.
Класс «TDSProviderConnection». Клиентский элемент для подключения к
поставщику данных сервера.
Класс «TClientDataSet». Элемент TclientDataSet применяется в клиентской
части разнонаправленного приложения. Он объединяет набор данных,
полученных от элемента-поставщика удаленного набора данных. Элемент также
поддерживает реализацию ряда базовых функций:
• Прием данных от удаленного сервера и отправку ему корректировок
с применением удаленного элемента-поставщика;
• Передача набора данных методом локального буфера и поддержка
базовых операций, оставшихся от класса TDataSet;
• Соединение записей набора данных методами агрегатных функций
для реализации совокупных данных;
• Сохранение в локальном виде набора данных в файле и дальнейшее
извлечение набора данных из файла;

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)