|
|
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
необходимо реализовать следующую схему по созданию одного Com-сервера из другого Com-сервера Клиент -> Создание Com-сервера на сервере -> Создание Com-сервера на другом сервере вроде бы всё просто, но второй Com-сервер не создаётся... соответствующие права вроде даны.... а вот по этой схеме всё работает Создание Com-сервера на сервере -> Создание Com-сервера на другом сервере т.е. без Клиента... Что можно предпринять в такой ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2008, 15:25 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Как известно, бывают COM-сервера 2-х типов: dll и exe. Dll запускается как процесс на том же компьютере, что и запускающий его процесс. Exe - на компьютере, указанном в настройках COM-сервера или с адресом, переданным параметром функции CREATEOBJECTEX (). Смотрите “Task Manager” в обоих случаях. Вы недостаточно точно объяснили ситуацию, не написали код и описание ошибки. Я могу предположить, что первый COM-сервер выполнен как dll (или как exe, но с настройками запуска на компьютере клиента). А на компьютере клиента почему-то не видно 3-его компьютера (со вторым COM-сервером). При этом с компьютера, где установлен первый COM-сервер, второй COM-сервер «хорошо» виден. Таким образом, в одном случае первый COM-сервер запускается на «родном» компьютере, в другом – на компьютере клиента. Вообще, с COM-серверами много приколов, не все из которых хорошо объяснимы. Код и описание ошибки многое могут прояснить. Если, например, нет доступа (очень часто бывает), то компьютер, по крайней мере, однозначно «виден», и надо точно копать в правах. Я встречался с похожей ситуацией запуска COM-сервера через посредника (там везде COM-exe с настройками запуска на «родных» для exe компьютерах). На всех компьютерах работало, на одном нет. 3 вечера вместе с системщиком бились, так и не поняли, чем отличается тот компьютер от прочих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2008, 09:28 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста. У меня и еще многих используется foxpro для доступа к таблицам DBF (1С) через OLEDB (vfpoledb.dll). При этом сам запрос выполняется на клиенте. Возможно ли написать com-сервер для выполнения запроса на компьютере-сервере(где лежит база) и последующей передачей клиенту результата(курсор) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2008, 17:42 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Я, честно говоря, не очень много работал с SQL-серверами и совсем не работал с OLE DB технологией. Но принципы работы, мне кажется, я понимаю. С технической точки зрения фишка SQL-серверов и программ, поддерживающих OLE DB-технологию, в том, что они всегда (!) выполнены как DCOM-сервера (Distributed – распределённая модель!). Ну, или как-то так. Таким образом, если Вы подключаетесь к 1С через OLE-DB провайдер (!), то Ваш запрос никак не может выполняться на клиенте, хотя объект подключения и создаётся на нём (на клиенте). И никакой посреднический COM-сервер Вам не нужно писать в принципе. У Вас и так всё круто. Поправьте меня, если я ошибаюсь. Если у Вас ДРУГАЯ ситуация, в которой всё же желателен посредник, то написать его (COM-сервер на Visual FoxPro) можно. Я лично писал сам, с нуля. Подскажу, если чё. Но это, как бы, шаг назад. Дело в том, что технология COM – Component Object Model (модель объектных компонентов) оперирует объектами, как видно из названия. В базах данных принято оперировать таблицами. В этом основное неудобство. Нужно будет постоянно преобразовывать таблицы в массивы или строки и обратно. Я не использовал никогда XML. Но думаю, если уж писать COM-сервер, то использовать возможности XML для такого рода преобразований, потому как это межъязыковой и прочий стандарт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 08:31 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Рома Б. ..... к чему весь этот краткий экскурс? на вроде бы простой вопрос "Возможно ли написать com-сервер....? " есть вполне однозначный ответ "Да, возможно" OLEDB Provider for Visual FoxPro прежде всего нужен для доступа к базам VFP из других языков, а тут постоянного доступа к дэбээфкам 1Ц, как я понял, не требуется: всего-то надо сделать только запрос и вернуть результат... такшта пишите спокойно com-сервер с необходимыми SELECTами и возвращайте на здоровье в фокс результаты запросов в виде курсоров... никаких траблов тут нет... не надо городить огород со всякими XMLами, если конечно Вам надо просто вернуть данные в фокс, а не в интернет експлорер, к примеру... и работать com-сервер будет быстрее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 09:52 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Не понял. Зачем писать COM-сервер, если он избыточен? Кроме этого COM-сервер, должен будет возвратить, очевидно, данные клиенту. Как? Какими курсорами? Не может объект (COM-объект) возвратить курсор! Только строку или другой примитивный тип данных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 10:00 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Рома Б.Не может объект (COM-объект) возвратить курсор! Может. Как строку через FILETOSTR() и STRTOFILE() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 10:07 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Дима ТМожет. Как строку через FILETOSTR() и STRTOFILE() Я так и делал. А передавал данные параметрами: одномерными или двумерными массивами. Я и говорю, что это – УСТАРЕВШИЙ подход. Стремиться надо к XML, очевидно, как к стандарту. Но, возможно, рентабельнее будет по-старому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 10:22 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Рома Б. С технической точки зрения фишка SQL-серверов и программ, поддерживающих OLE DB-технологию, в том, что они всегда (!) выполнены как DCOM-сервера (Distributed – распределённая модель!). Ну, или как-то так. Таким образом, если Вы подключаетесь к 1С через OLE-DB провайдер (!), то Ваш запрос никак не может выполняться на клиенте, хотя объект подключения и создаётся на нём (на клиенте). И никакой посреднический COM-сервер Вам не нужно писать в принципе. У Вас и так всё круто. Поправьте меня, если я ошибаюсь. Не очень понял как запрос будет выполняться на машине-сервере - сейчас для провайдера vfpoledb база представляет собой неупорядоченный набор файлов. Этим кстати пользуемся для написания запросов одновременно к двум базам - часть файлов на одном, часть на другом, часть может быть на третьем - в этом случае на какой машине будет выполняться запрос? Нигде не прописывается подключение к машине-серверу,только каталог по умолчанию, на сервере библиотека даже не зарегистрирована в реестре. Или имеется ввиду, что если создать файл dbc, прописать в нем все ДБФ и подключаться к нему - то тогда запрос будет на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 12:48 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
ещё раз повторяю, зачем человеку писать всю эту муть про архитектуру "клиент-сервер", про технологии работы с ней... если б он спросил что лучше и как это работает, другое дело... а тут был задан конкреный вопрос "Возможно ли написать com-сервер для выполнения запроса на компьютере-сервере(где лежит база) и последующей передачей клиенту результата(курсор) ?"... Неужели трудно дать вполне однозначный ответ "Да, возможно. И работать к тому же будет быстрее."... и пусть конвертирует курсор в строку и строку в курсор на здоровье... ВСЁ! зачем засорять мозг всякими XMLами, если к тому же результат нужен только в виде курсора, получил-обработал и засовывать во всякие интернет экслореры его не нужно... нахера там, где достаточно одного курсора XML? щас насоветуете ещё какихнить XMLAdapterов, для которых к тому же нужен Microsoft XML Core Services и прочих НЕУСТАРЕВШИХ подходов... к тому же может у человека 6 версия фокса... будете дальше ему советовать стремиться к новым походам путём всевозможным покупок новых версий ПО, переустановок и переделок приложений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 13:03 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
2 Рома Б. Не надо вводить в заблуждение. Драйверы, в том числе и OLEDB, на то и драйверы, чтобы работать на машине клиента. Это не серверы. То, что они умеют ходить на сервер еще не означает их запуска именно на сервере. kiruhaВозможно ли написать com-сервер для выполнения запроса на компьютере-сервере(где лежит база) и последующей передачей клиенту результата(курсор) ? Да, можно, о чем уже и написано. И некоторыми даже сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 13:10 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Прошу советаещё раз повторяю, зачем человеку писать всю эту муть про архитектуру "клиент-сервер", про технологии работы с ней... если б он спросил что лучше и как это работает, другое дело... а тут был задан конкреный вопрос "Возможно ли написать com-сервер для выполнения запроса на компьютере-сервере(где лежит база) и последующей передачей клиенту результата(курсор) ?"... Неужели трудно дать вполне однозначный ответ "Да, возможно. И работать к тому же будет быстрее."... и пусть конвертирует курсор в строку и строку в курсор на здоровье... ВСЁ! зачем засорять мозг всякими XMLами, если к тому же результат нужен только в виде курсора, получил-обработал и засовывать во всякие интернет экслореры его не нужно... нахера там, где достаточно одного курсора XML? щас насоветуете ещё какихнить XMLAdapterов, для которых к тому же нужен Microsoft XML Core Services и прочих НЕУСТАРЕВШИХ подходов... к тому же может у человека 6 версия фокса... будете дальше ему советовать стремиться к новым походам путём всевозможным покупок новых версий ПО, переустановок и переделок приложений? ОК, спасибо - понял что возможно, также понял что проблема в обмене данными сервер/клиент - видимо придется через временные файлы ДБФ - запись/чтение быстрее чем текстовые файлы. Жаль что нельзя непосредственно курсорами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 13:17 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
проходящий.2 Рома Б. Не надо вводить в заблуждение. Драйверы, в том числе и OLEDB, на то и драйверы, чтобы работать на машине клиента. Это не серверы. То, что они умеют ходить на сервер еще не означает их запуска именно на сервере. kiruhaВозможно ли написать com-сервер для выполнения запроса на компьютере-сервере(где лежит база) и последующей передачей клиенту результата(курсор) ? Да, можно, о чем уже и написано. И некоторыми даже сделано. Очень большое спасибо) А то уже голову сломал как OLEDB выполняется на сервере. Если есть ссылка - буду очень благодарен. P.S> пример создания com-сервера по книге Клепенина видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 14:18 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Проходящий2 Рома Б. Не надо вводить в заблуждение. Драйверы, в том числе и OLEDB, на то и драйверы, чтобы работать на машине клиента. Это не серверы. То, что они умеют ходить на сервер еще не означает их запуска именно на сервере. Спасибо тоже. Не знал. Я, как бы, писал, что не уверен. Просто человеку 3 дня никто из специалистов не отвечал. А я хоть что-то, но знал. Меня смущало, что при подключении к MS SQL из FoxPro через драйвер ODBC запросы выполнялись на сервере, а не на клиенте. Насчёт XML. Ну да, здесь тоже не прав. Полистал про XML. Надо пользоваться старыми функциями: STRTOFILE () и FILETOSTR (). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 14:44 |
|
||
|
Com-сервер
|
|||
|---|---|---|---|
|
#18+
Рома Б.Меня смущало, что при подключении к MS SQL из FoxPro через драйвер ODBC запросы выполнялись на сервере, а не на клиенте. Драйвер на клиенте обращается к серверу, который и выполняет запрос. При отсутствии сервера для исполнения запросов запрос исполняется на клиенте, хотя данные берутся откуда-то с другой машины. Обычная файл-серверная технология. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 14:51 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35417659&tid=1587566]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 376ms |

| 0 / 0 |
