OLE-Fox (663308), страница 2

Файл №663308 OLE-Fox (OLE VFP) 2 страницаOLE-Fox (663308) страница 22016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

При построении OLE-сервера (OLE_SER.EXE или OLE_SER.DLL) создаются файлы OLE_SERV.TLB и OLE_SERV.VBR.

Файл TLB — это библиотека OLE-o6ъектов сервера, которая может быть просмотрена с помощью Visual FoxPro Class Browser, Excel, Visual Basic и Visual C. Файл VBR - это текстовый файл с данными для записи в Регистре Windows.

Теперь можно набрать в командном окне следующую строчку:

oObj = CREATEOBJECT("OLE_SERV.OLE_SERV")

После непродолжительного ожидания, требующегося для загрузки сервера вы уви­дите окно с заголовком «Работает мой первый OLE-сервер!» и сообщением с име­нем выполняемой в данный момент процедуры - Init.

Хотя наш OLE-сервер не выполняет никакой полезной работы, свидетельством его активности могут служить следующие cтрочки:

? oObj.Application.Name

? oObj.Application.Visible

? TYPE("oObj")

? oObj.Application.Docmd("MESSACEBOX(HOME())")

? oObj.Application.Docmd("_ClipText=HOME()+SYS(2003)+ SYS(2004)")

Обратите внимание на последнюю строку примера. Она записывает в буфер обме­на путь к OLE-серверу с помощью трех функций. Например, это может быть стро­ка: D\WORKS\VFP5_SAMPLE\. В нашем примере она будет повторена три раза. Это свидетельствует о том, что OLE начинает поиск сервера с каталога SYSТЕМ ОС Windows.

Таким образом, при распространении приложения и установке сервера на различных компьютерах в различных каталогах, мы можем столкнуться с проблемой указания пути как к серверу, так и используемым им компонентам (файлам базы данных, форм, отчетов и т. д.). Лучшее решение - это использование для сервера ЕХЕ-функции Windows API GetModuleFileName(), которая возвращает полный путь к главному файлу ЕХЕ текущего процесса, если в качестве первого парамет­ра передается нуль. Для сервера DLL можно использовать функцию GetModuleHandleQ с именем файла DLL в качестве параметра для возвращения указателя на сервер. Этот указатель можно использовать в функции GetModuleFileName() для получения полного пути к серверу DLL.

Сделаем еще несколько замечаний насчет построения OLE-сервера. Выберите команду Project Info из меню Project, когда открыт последний обсуждаемый проект, ив появившемся диалоговом окне перейдите на вкладку Servers. На этой вкладке сосредоточена информация, которую вы можете просмотреть или изменить для каждого класса OLE Public в проекте. Обратите внимание, что эта информация появляется только после того, как будет построен EXE- или DLL-файл.

Раскрывающийся список Instancing позволяет указать, как будет работать сервер Out-of-Process. Возможные установки приведены в табл. 3.

Возможные режимы работы OLE-сервера Visual FoxPro

Таблица 3.

Single Use

Каждый клиент использует свою собственную копию серве­ра. Таким образом для нескольких пользователей будет за­пущено соответствующие количество копий сервера.

Multiple Use

Все клиенты используют одну копию сервера. Для того, чтобы избежать их взаимного влияния при работе с общими данными, следует установить значение свойства DataSession равным 2 (private).

Not Creatable

Предотвращает создание OLE-сервера, несмотря на наличие в проекте класса OLE Public.

OLE-сервер Visual FoxPro регистрируется автоматически. Для ручной регистра­ции сервера ЕХЕ достаточно его запустить с опцией /regserver. Опция /unregserver позволяет удалить информацию о сервере из Регистра Windows. Для регистра­ции сервера DLL вручную запустите утилиту REGSVR32.EXE с именем файла в качестве первого параметра. Удалить информацию о сервере из Регистра можно, использовав второй параметр /u. Например:

REGSVR32 OLE_SERV.DLL /u

OLE-сервер Visual FoxPro для своей работы требует присутствия библиотеки поддержки - файлов VFP500.DLL и VFP5ENU.DLL.

OLE-сервер в компьютерной сети

При коллективное работе с данными OLE-сервер должен обрабатывать вызовы всех пользователей компьютерной сети и, следовательно, должен находиться на сервере, а не на каждом компьютеры пользователя. Такой подход позволяет организовать трехуровневую модель обработки данных. Эта модель отличается от тра­диционной модели клиент-сервер, т. к. отображает не просто физическое взаимное - расположение пользователя и программы, а логику обработки данных. В трехуровневой модели выделяют следующие логические процессы:

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

  • Бизнес-процесс — обеспечивает единые правила работы с данными с точки зрения технологии производственного процесса, генерирует информационную поддержку маркетинга и менеджмента.

  • Процесс обработки данных — обеспечивает описание и хранение данных обработку и выполнение запросов, поддержку целостности данных.

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

Возможность взаимодействия между OLE-контроллером и OLE-сервером обеспе­чивается двумя объектами:

  • Proxy — обеспечивает формирование пакета данных с параметрами вызова для OLE-сервера. Этот объект работает в адресном пространстве OLE-контроллера и обеспечивает соединение с соответствующим объектом Stub в адресном пространстве OLE-сервера.

  • Stub — принимает пакет данных и обеспечивает переадресацию вызова для выполнения соответствующих действий на OLE-сервере. Этот объект рабо­тает в адресном пространстве OLE-сервера и связан с соответствующим объектом Proxy в адресном пространстве OLE-контроллера.

При работе OLE Automation на одном компьютере функционирование объектов Proxy и Stub обеспечивается системным файлом OLEAUT32.DLL

Если OLE-контроллер и OLE-сервер расположены на разных компьютерах, для обеспечения связи между ними необходимо использовать дополнительный ком­понент, который называется Automation Manager (файл AUTMGR32.EXE). Этот компонент должен быть установлен на обоих компьютерах.

OLE-контроллер продолжает использовать объект Proxy, но в этом случае его функционирование обеспечивается файлом AUTPRX32.DLL. На компьютере с внешним OLE-сервером Automation Manager управляет как объектом Stub для получения пакетов данных от OLE-контроллера, так и объектом Proxy для имита­ции наличия OLE-контроллера на этом компьютере. Таким образом для OLE-cepвера создаются все условия, чтобы он не ощущал «одиночества» от отсутствия OLE-контроллера на том же самом компьютере,

Сервер OLE Visual FoxPro 5.0 поддерживает обратные связи. Вы можете исполь­зовать метод на сервере, который будет получать ссылку на объект от OLE-кон­троллера как один из параметров. Эта возможность позволяет устанавливать асинхронную связь с сервером, если эта связь не может быть установлена немед­ленно по причине выполнения сервером какого-то длительного процесса.

В этом случае на сервере, который будет, например, называться Processor (в Регистр Windows — MyServer.Processor) должен быть описан класс:

DEFINE CLASS Processor AS Custom OLEPUBLIC

oObjRef = ""

PROCEDURE SetupRef (oRef)

This.oObjRef = oRef

ENDPROC

PROCEDURE DoCallBack

This.oObjRef.Notify ()

ENDPROC

ENDDEFINE

В клиентском приложении запишем:

oObjl = CREATEOBJECT ("Job")

o0bj2 - CREATEOBJECT ("MyServer .Processor")

o0bj2 . SetUpRef ( oObjl)

DEFINE CLASS Job AS Custom

PROCEDURE Notify

= MESSAGEBOX ("Задание выполнено!")

ENDPROC

ENDDEFINE

Как только на сервере вызывается метод DoCallBack, следует выполнение метода Notify объекта клиентского приложения.

Если связь с OLE-сервером происходит по компьютерной сети то на компьютере клиентского приложения должен быть установлю Automation Manager.

Первоначально Automation Manager и Remote Automation Manager были разработаны для Visual Basic 4.0 и в дальнейшем использованы в Visual Fox­Pro 5.0 для расширения функциональности в области разработки крупных проек­тов при коллективной работе с данными.

Automation Manager

Automation Manager работает в фоновом режиме, т. к. его основное предназначе­ние заключается в управлении процессом OLE Automation в сети путем внешних процедурных вызовов. Как отмечалось выше, эти вызовы формируются за счет взаимодействия между объектами OLE Proxy и OLE Stub. Без них вы не сможете создать внешний OLE-сервер.

Automation Manager устанавливается на сервере и распределяет вызовы от объек­та Proxy рабочей станции к соответствующему объекту Stub сервера. Возвращае­мые значения Automation Manager направляет OLE-контроллеру через объект Stub. За Счет этого ни OLE-контроллер, ни OLE-сервер не чувствуют, что распо­ложены на разных компьютерах.

В большинстве случаев достаточно установки Automation Manager на сервере. Од­нако, если приложение предусматривает наличие «обратной связи» от OLE-сервера, необходима установка Automation Manager и на клиентский компьютер. Обыч­но запуск Automation Manager происходит автоматически, как только система об­наруживает в этом необходимость. Если этого не произошло, одна из наиболее возможных причин — повреждение или неправильная запись в Регистре Win­dows.

В случае необходимости непосредственно из Visual FoxPro зарегистрировать Automation Manager можно следующей командой:

RUN /n c:\vfp\autmgr32.exe /regserver

Установки Automation Manager в Регистре Windows имеют следующее располо­жение:

HKEY_LOCAL_MACHINE\Software\Microsoft\Automation Manager/

Remote Automation Connection Manager

Remote Automation Connection Manager (RACMan) написан на Visual Basic 4.0 и поэтому для работы требует наличия библиотеки поддержки Visual Basic. Его ос­новное назначение заключается в управлении записями Регистра Windows, кото­рые включают необходимые сведения для внешнего соединения со стороны кли­ента и доступа клиента на сервере. RACMan требует регистрации сервера на кли­ентском компьютере, поэтому при установке приложения потребуется файл CLIREG32.EXE, который переписывается автоматически, если вы используете Setup Wizard. При запуске программа CLIREG32.EXE требует нескольких пара­метров, в том числе: имя файла с расширением VBR, который генерируется авто­матически при создании OLE-сервера, сетевое имя компьютера, сетевой протокол и параметры доступа пользователя. При этом только первый из указанных пара­метров является обязательным.

Таким образом, RACMan обеспечивает две функции:

  • Внешнее соединение на компьютере клиента. Пользователь может изме­нить сервер, который уже зарегистрирован на его компьютере, и зареги­стрировать новый OLE-сервер.

  • Доступ клиента к серверу. Сервер может определять возможность доступа клиента как с использованием имени компьютера, так и имени пользовате­ля. При этом для Windows NT обеспечивается интегрированная авториза­ция доступа.

Установки для внешнего OLE-сервера записываются в Регистре Windows для данного сервера с ключом CLSID в HKEY_CLASSES__ROOT.

Приведем пример использования OLE-сервера в компьютерной сети для выпол­нения расчетов с данными таблицы, хранящейся на файл-сервере. Выполним пос­ледовательно следующие действия:

1. Для создания OLE-сервера напишем следующую программу:

*1*'Создаем подкласс из базового класса Custom

*!* 'Ключевое слово OLEPUBLIC обязательно

*1* 'Именно оно и позволяет сделать наш объект OLE-объектом

DEFINE CLASS Sum_table AS CUSTOM OLEPUBLIC

* Свойство, которое запоминает значение суммы

Sum_paid = О

* Метод для расчета суммы

PROCEDURE Proc Summary

PARAMETERS What

S3T EXCLUSIVE OFF

SELECT SUM (lnv_details.price*lnv_aetails .quantity) AS sum ;

FROM С :\OFFICE4\DATABASE\ Invoices, ;

C: \OFFICE4\DATABASE\lnv_details ;

WHERE Invoices .kod_id = lnv_deta-ils.kod_id ;

AND Invoices .paid = What ;

INTO CURSOR cur_sum

**"* Возвращаемое значение

SELECT cur_sum

THIS. Sum_paid = cur_sum .sum

USE IN cur_sum

END PROC

ENDDEFINE

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

  1. В проекте нажмем кнопку Build, щель нем мышкой на зависимом пере­ключателе Build Executable и скомпилируем ЕХЕ-файл OLE-сервера с име­нем Ole_sum. Напомним, что нам требуется именно этот тип сервера, если мы собираемся использовать его в сети.

  2. Зарегистрируем созданный сервер на файл-сервере, выполнив следующую команду:

REGSVR32 C:\OFFICE4\OLE_SUM.EXE

4. Запустим Remote Automation Connection Manager, выберем в списке СОМ Classes наш класс и установим требуемые параметры доступа.

He забудьте убедиться, что на вкладке Client Access независимый переклю­чатель Allow Remote Activation включен.

5. Скопируйте файл OLE_SUM.VBR на локальный компьютер.

6. Зарегистрируйте на локальном компьютере OLE-сервер, используя ин­формацию, содержащуюся в файле VBR. Для этого необходимо выполнить следующую команду:

C:\VFP\CLIREG32 С \VFP\OLE_SUM.VBR

На экране появится диалоговое окно, в котором необходимо указать сетевое имя файл-сервера

7. На сервере и локальном компьютере запустите Automation Manager.

8. На локальном компьютере запустите Visual FoxPro и наберите в окне Command следующие команды:

oSum = CREATEOBJECT("ole_sum.sum_table")

Характеристики

Тип файла
Документ
Размер
49,5 Kb
Материал
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6540
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее