• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Использование Лоцман API в .NET

Автор K9, 19.09.08, 13:50:26

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

K9

Здравствуйте!!!

Подскажите кто нибудь!!! Как используются API функции в VB.NET и как решаются вопросы механизма делегирования???

AI

Нормально используются  :)

Добавляете reference на LoodsmanAppServerMain.dll и можете пользоваться методами сервера приложеинй. Можно еще добавить reference на Loodsman.exe, чтобы использовать IDataSet для преобразования возвращаемых наборов данных.

А что такое "вопросы механизма делегирования"?

K9

Отлично!!! Из этого я все сразу понял ... и теперь стал просто супер программером!!!  :o:
Если честно ... мне это совершенно ни чего не объясняет!!!  :(((

Что такое reference??? Я, к примеру, не знаю!!!  :~
Потом ...!!! На сколько я понял ... делегирование - это механизм заимствования прав на объект!!!
В данном случае, я так думаю, LoodsmanAppServer, в ActiveX компанентах на сервере приложений!!!

Из описания, которое я получил от АСКОНа, по API я взял примерчик на VB6 и переделал его
под VB.NET(больших усилий не составило)!!!

Но в VB - это не работает, на клиенте, т.к. нет того самого ActiveX компанента, на который я, вроде как,
ссылаюсь!!!

Далее, я прочел о неком процессе, с клевым названием - делегирование!!!
И вот тут то я застрял!!! Как его использовать в VB??? Как запустить этот процесс в VB???
Как после этого получать сведения об API функциях, от этого объекта на сервере???

Для меня это остается тайной за семью печатями!!! Пока что тайной!!!

Если Вам понятен процесс, и знаете как его юзать, то выложите плиз кусочек кода или
расскажите что и как нада делать!!! Думаю ... это поможет не только мне, но и многим тем,
кто начинает пробывать писать под Лоцман с API!!!

YorikER

Уважаемый K9... Почему все-таки VB.NET? Это прям так критично, или все-таки можно освоить DELPHI 2006 (или 2009)?

K9

Delphi?! Енто конечно интересно, но времени для освоения к сожалению совсем нет!!!
Да и платить из своего кармана за курсы мне не хочется, да и не стану
(зарплата не такая уж и шикарная, чтоб я мог себе это позволить)!!!
С учетом того, что все свое свободное время я потратил сначала на QBasic, потом на VB6,
ну а теперь осваиваю технологию .NET, которая является на сегодняшний момент более
продвинутой, "пересаживаться" на Delphi - тяжко!!!

Но и в .NET есть свои нюансы!!! Для того чтобы использовать, те же самые функции библиотечек,
надо сделать не мало, т.к. не все интегрировано!!! Таже самая, присловутая ole32.dll!!!
Вот и маюсь я с этим!!!
Сегодня уже были небольшие успехи, но этого пока маловатенько!!!

При использовании CreateObject у меня пишет - "Cannot create ActiveX component"!!!
Не видит он в ActiveX компанента LoodsmanServerApplication!!! Хоть лопни тута!!!

Чего тока не старался делать, пока не получается!!!

Кстати!!! А функция CoInitializeSecurity для чего предназначена??? Не совсем понятно!!!
Зачем её, в описании API, Асконовцы выложили???
Связи она не устанавливает с объектом, да и с сервером тоже!!! Смысл то её в чем???
(Хотя на VB.NET я её с трудом но перевел)!!!

Почитал одну статейку и инете!!! Там пишут, что мол при удаленном обращении к серверу
нада заимствовать права на объект и мол эта функция может вырубить всю
защиту этого COM объекта (все зависит от того как написать саму функцию)!!!
И тут вообще стопор!!! Как, даже если абстрагироваться, при запуске этой функции,
на конкретном, удаленном сервере приложений работает эта функция, если она о сервере
ни чего не знает???


YorikER

Не знаю чем это поможет, в Delphi есть понятие подключиться к серверу приложений через DCOM или Socket соединение, а далее просто используются методы сервера приложений для получения различных наборов информации... Как в VB.NET этот механизм работает я просто не знаю...

K9

Ну да!!! Как же!!! Эту штуку я знаю!!! Завтра хочу попробывать!!!
Проанализировав то, что есть в VB.NET (функции и процедуры) я понял,
что DCOM мне не светит, а вот SOCET соединение - там подробно расписано!!!
Так что займуся этим!!!
Думаю, что должно заработать, иначе выходов больше нет!!!

YorikER

При подключении через Socket проконсультируйтесь с АСКОНОМ, там не все так просто... У меня были проблемы с пользователем, от имени которого я подключаюсь... Правда в новых версиях наверно уже проюлем нет...

AI

Если работаете на .NET на delphi переходить не стоит - это будет шаг назад. На VB.NET с Лоцманом работать не приходилось, но могу предположить, что понадобится сделать следующее:

1. Скопировать на клиентское рабочее место библиотеку LoodsmanAppServerMain.dll
2. Зарегистрировать ее командой regsvr32 LoodsmanAppServerMain.dll
3. В коде прописать подключение следующим образом: CreateObject("LoodsmanServerApplication.MainSystem", "имя сервера приложений")

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

YorikER

Уважаемый AI. Я так понимаю, что вы предлагаете фактически на каждое клиентское рабочее место установить сервер приложений и запускать его методами NET интерфейса!... Да, действительно, в этом случае придется разобраться с делегированием прав текущего пользователя. Ведь сервер приложений должен запускаться на компьютере от имени учетной записи пользователя домена с правами "делегирования" (см. внимательно настройки прав пользователя в Active Directory сервера домена). В Вашем случае каждый пользователь-клиент должен иметь такие права... Простите но это (как говорилось в известной рекламе) "плохой тон" программирования... И я все-таки не понял, в чем заключается такая уж острая необходимость общения с ЛОЦМАНОМ в среде NET... В чем радикальное преимущество в данном случае NET технологии по сравнению с обычным Win32 (а в Delphi 2009 может быть и Win64) приложением...

AI

Сервер приложений будет запускаться на сервере приложений, иначе на всех лицензий не напасешься
CreateObject("LoodsmanServerApplication.MainSystem", "имя сервера приложений")

Для меня основное преимущество .NET в программировании под Лоцман - автоматическая сборка мусора, потому как правильно написанный код в delphi настолько изобилует конструкциями create / try / finally / free, что становится совершенно нечитаемым


YorikER

Цитата: AI от 25.09.08, 15:09:26
Для меня основное преимущество .NET в программировании под Лоцман - автоматическая сборка мусора, потому как правильно написанный код в delphi настолько изобилует конструкциями create / try / finally / free, что становится совершенно нечитаемы

Уважаемый AI, довод для меня весьма неубедительный...

Цитата: AI от 25.09.08, 15:09:26
Сервер приложений будет запускаться на сервере приложений, иначе на всех лицензий не напасешься
CreateObject("LoodsmanServerApplication.MainSystem", "имя сервера приложений")

Тогда просьба, поясните, что делает библиотека LoodsmanAppServerMain.dll и для чего она нужна...




AI

Насколько я помню, CreateObject ищет в реестре объект с указанным именем, чтобы получить для него ClassId. Для этого и нужно регистрировать библиотеку (хотя можно и просто добавить в реестр соответствующие ключи).

К сожалению, проверить все это нет времени, так что прошу прощения, если в чем-то ошибаюсь

K9

#13
После долгих и нудных разбирательств, выяснил одну не очень то и примечательную фишку!!!
В .NET, установить соединение с сервером приложений, оказалось весьма непросто!!!

1. Прямой ссылки на определенный сервер (с именем N) не получится ни когда!!!
Для реализации удаленного соединения, необходимо:
а) Написать библиотечку для сервера;
б) Запустить сервис с этой библиотечечки на сервере;
в) Сделать тоже самое для клиента;
г) В этих библиотечечках объявить URL порт по которому будет происходить соединение.
Короче оказалось все на много сложнее, чем представлялось!!!

После всего проделанного вы получаете только соединение клиент-сервер!!! (Ужас)
(TCP, HTTP, IPS - для любого из этих типов "в черных плащах"  :-))))

И только после всего этого можно дальше пытаться что то сотворить с ActiveX!!!  :-\
Пока что дальше разбираюсь, но если честно энтузиазизьм затухает!!!
Куча нудной и иногда безполезной работы приходится делать, для
того чтобы найти правельное решение!!! ....  :(

Здеся тожа смотрю не все здорово!!!  :~
Короче ... пока только одни растройства .....!!!

YorikER

Для AI... Насколько я понял, LoodsmanAppServerMain.dll и есть сервер приложений... Поэтому зачем его копировать на компьютер, пока не понятно... Может я и ошибаюсь...

Для K9... По поводу технической поддержки ЛОЦМАНа ... Согласен... Давно уже не обращаюсь... Они ко мне приезжают (правда давно уже не были)... Кроме этого приезжают целые делегации с предприятий, посмотреть на то, что мы сделали с ЛОЦМАНом (особенно после того как ознакомятся с нашим сайтом)... Недавно была делегация с одного московского предприятия... Никто не верит, что все, что мы показываем - это ЛОЦМАН, только не АСКОНовский вариант, а уже наш собственный... По поводу NET. В Delphi есть VCL.NET... Т.е Win32 компоненты перенесены в NET технологию... Так вот в нем есть DCOM соединение...

AI

Объясняю по порядку

Для того чтобы создать экземпляр сервера приложений (СП) можно воспользоваться методом CreateObject. При этом в метод нужно передать ProgId СП("LoodsmanServerApplication.MainSystem") и имя сервера. Метод преобразует ProgId в ClassId - для этого он ищет соответствующую запись о регистрации компонента в реестре.

Так вот для того, чтобы эта запись в реестре появилась, можно либо зарегистрировать на рабочем месте библиотеку LoodsmanAppServerMain.dll либо добавить запись через reg-файл. На локальном рабочем месте сервер приложений НЕ ЗАПУСКАЕТСЯ.


Прикладываю код приложения на VB, которое подключается к СП и получает список баз данных

YorikER

Спасибо... Если когда-нибудь доросту до NET обязательно воспользуюсь... Единственно один вопрос, Метод GetDBList возвращает строковую переменную, основные же методы возвращают компактный набор данных, который в Delphi принимает, как правило, компонент TClientDataSet в свойство Data. Какой компонент  в NET примет данный набор данных?

K9

#17
Для YorikER ...

Да ... я тоже был на Вашем сайте ... если честно - я был в шоке!!!
Вы конечно же МОЛОДЦЫ!!! Я подробно ознакомился со всеми материалами,
которые были у Вас на сайте - супер!!! Давно мечтал увидеть что нибудь подобное!!!
Но, к сожалению, в моём случае - я не могу использовать Ваши наработки!!!
Да это ... я думаю и понятно!!! Своя специфика так сказать!!!
Я уже разработал несколько проектов для Лоцман - база для разработок неплохая!!!
Но вот реализовать это все - по сути некому!!! Издержки так сказать производства!!!  >:(
У нас все программеры с завода ушли!!! Беда!!! Вот и приходится теперь изучать то, чего
ни когда и не знал ...!!! Ну да ладно!!!


Для AI ...

Интересное предложение!!! Я посмотрю!!! Может это в действительности упростит задачу!!!
Ведь одна из проблем как раз и состоит в том, что ProgID мой модуль и ненаходит!!!
Может это и решит задачу!!! Но возникает вопрос, - "А что тогда будет с потоками данных"???
По сути они получаются неуправляемыми!!! А залог грамотной проги - это как раз умение
управлять этими самыми потоками, областями памяти ну т.д.!!!

Реально это использовать в жизни ... !!! Как то я сомневаюся очень!!!  ::)

Либо модуль будет особо громоздким и съедать очень много ресурсов, что тоже не есть gut!!!
Хотя ... кто его знает ... нада попробывать!!! Уж больно заманчивое предложение!!!  :o:

Спасибо AI!!!  :)

Администратор

Уважаемый K9!

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

Цитата: K9 от 30.09.08, 20:46:38ДОРГИЕ АСКОНОВЦЫ!!! Вам не PLM нада разрабатывать, а тупо в ЛИНЯГЕ рубиться!!!

2. За хамские выпады Вы получаете замечание. Напоминаю, что Вы находитесь не в подростковом чате своего микрорайона, а в профессиональном форуме. Пожалуйста, научитесь выражать свои мысли грамотно, внятно и в социально приемлемой форме.

Спасибо за понимание.

YorikER

Уважаемый Администратор... По форме высказываний K9 ... я с Вами полностью согласен... Необходимо соблюдать рамки... По сути высказываний, простите, но эмоции далеко не на пустом месте... Если бы Вы слышали те эмоциональные высказывания представителей предприятий, которые ко мне приезжали, я думаю, что замечаниями Вы бы не отделались... Мне с трудом, на личном примере, удается пока доказывать, что ЛОЦМАН - это великолепная объектноориентированная среда для разработки информационного пространтва любого уровня сложности... Необходимо только приложить немного усилий и перешагнуть планку стереотипов, предлагаемых компанией АСКОН... У K9, несмотря на эмоциональность и неприятный тон высказываний, есть одно положительное качество - он пробует применить к ЛОЦМАНу совершенно нестандартный для многих подход - NET технологию... И это действительно интересно... А эмоции... Что ж, действительно, ни к чему... Еще раз с Вами соглашусь...