Наверно все слышали о веб серверах (это такая, штука, которая расширяет веб браузер). Так вот 1С двинулась в этом направление и сделала http и web-сервисы через wsisapi.dll
Чтоб это использовать нужен апач или иис, но мне было не лень написать свой сервер, который принимает соединения и отдает отдельным (worker) программам типа cgi (в обычном понимание) сделать "грязную работу" по формированию текста html-документа. Все вроде меня устраивает, но захотелось подключить wsisapi.dll, чтоб совсем как в "серьёзных решениях" было.
В принципе, я знаю, где почитать на тему isapi. Но вот вопрос - можно ли минуя wsisapi.dll работать сразу с сервером 1С? Интересуют меня web-сервисы и http только. Я готов держать в памяти и wsisapi.dll, но думается мне, что посредник не нужен.
Ну я бы с этим поспорил, IDA все таки не тупой дизассемблер и встроенный отладчик студии с ним не сравнится :).
А по существу - можно попробовать сделать прокси-библиотеки для core82.dll и STL82.dll и посмотреть как используются ипортированные из них функции. Но как мне кажется разработка wssapi.dll с нуля - это не нужная трата времени. Если она в текущем виде работает то и используйте её.
Наверно все слышали о веб серверах (это такая, штука, которая расширяет веб браузер)
это по меньшей мере странно такое слышать от разработчика, хотя допускаю, что автор диктовал своему секретарю
а если о сути вопроса, то не совсем понятна логика вопроса. то есть какова причина отказа от исходной библиотеки? ведь сразу же возникает куча проблем с авторизацией и прочими делами...
(3) подскажите примерно направление поиска. Я хочу научиться работать с сервером 1С напрямую (говоря простым языком, хочу написать свой модуль isapi для веб-сервера). Как мне наткнуться ну кучу проблем с авторизацией и прочими делами?
(5) Начал ты явно издалека. Представь, что сервер уже есть. Сервер напоминает web-сервер. Расширяется аналогично cgi. Isapi еще не умеет, но с wsisapi.dll от 1С уже перебрехивается ошибками.
Практические результаты связи УПП - MS PowerBI - часа 2-3 без автообновления
Но выбросить веб-клиент нельзя. Мне не известно способов добраться до содержимого инфобазы 1C:Предприятия без посредника, без прохода через лицензирование. Может есть?
Но не прямой доступ в SQL
Механизм интеграции isapi можно сделать для SAP, аксапта и буду прав, если скажу, что для всех серьёзных ERP. А в 1С можно только то, что дозволено в букварях? Весьма миленько получается.
Нарисовал я прокси к wsisapi, чтоб понять, чем она обменивается с IIS и заменить IIS на свой сервер ибо достало копаться в ошибках.
1) GetExtensionVersion (отвечает, что она 82 и ёе зовут так-то)
2) HttpExtensionProc (здесь передается внутрь wsisapi указатели и сведения о вызове) на этой функции виснет исполняемый поток и дальше идут колбеки.
3) GetServerVariable (от меня хотят ряд переменных среды, тип cgi)
APPL_PHYSICAL_PATH = "C:\\inetpub\\wwwroot\\my\\"
HTTP_1C-APPLICATIONNAME = NULL
HTTP_COOKIE = NULL
ALL_RAW = <тут походу весь заголовок>
HTTPS = "off"
HTTP_X_FORWARDED_PROTO = NULL
SERVER_NAME = "127.0.0.1"
HTTP_X_FORWARDED_HOST = NULL
SERVER_PORT = "80"
HTTP_X_FORWARDED_PORT = NULL
HTTP_URL = "/s/ws/files?wsdl"
Потом что-то в голове wsisapi сломалось и она по новой давай спрашивать переменные (т.к. я видел мастер класс писания типовых, то удивляться не стал)
4) ServerSupportFunction (хочет сама установить заголовки)
200 Ok
и
Content-Length: 11183
Content-Type: text/xml; charset=utf-8
Set-Cookie: vrs_rc=;Version=1
5) WriteClient (хочет писать в браузер какое-то фуфло, которое я сотворил внутри 1С,wsdl кроче)
6) отвисает исполняемый поток (2)
не совсем понятна мысль. если "сервер уже есть" и "уже перебрехивается с wsisapi.dll", то о чем еще мечтать? хотя выше было сказано, что "вот вопрос - можно ли минуя wsisapi.dll работать сразу с сервером 1С?" Таки не понятно нужен тебе wsisapi.dll или нет. опять таки если речь идет о других системах, то не трудно понять, что в них есть свой api. открытый или не документированный - это уже другой вопрос
(7) для isapi не допустимо валиться с ошибками, потому что это рушит весь сервер. Преимущество в том, что не нужно создавать и потом срубать процесс. Однако иис запускает всякий раз новый процесс, который работает с isapi 1с. И это понятно, тк wsisapi производства 1с валится с ошибками, на каждом шагу и тянет за собой весь сервис. В итоге реализация не отличается от cgi, не смотря на всю рекламу. Т.е. Снова запускается отдельный процесс, который общается с isapi 1c.
В принципе, мне пофигу и я могу не заморачиваться на прямое соединение с сервером. Просто задумался о стабильносте. Коннект с SAP у меня идет без посредников (dll rfc не в счет, т.к. она быстрая и безпроблемная).
(9) я приделываю к своему web-серверу isapi, потому что не знаю как вызывать сервер 1с напрямую. А недоволен я тем, что по документации сказано, что технология расширения isapi предполагает динамическую загрузки библиотеки в память процесса сервера, а эта библиотека валится с ошибками, что влечет за собой обвал всего сервера. Я так понимаю, что на словах в документации одно, а на деле сервер запускает отдельный процесс, который взаимодействует с isapi библиотекой. Т.е. Если isapi падает, то падает только этот отдельный процесс, а не весь сервер. Однако в таком раскладе получается, что мы имеем расширение cgi, которое так же предполагает запуск отдельного процесса при каждом вызове. Я отлаживаю свою isapi и вижу, что она взаимодействует с процессом, который то появляется, при вызове, то пропадает, после вызова клиента.
Оу-у-у-у-у e-e-e-e-e-e!!!!!
wsisapi от 1Ц схавала мои команды, теперь можно двигать дальше.
В процессе выяснилось, что IIS делает себе воркер, который загружает wsisapi и этот воркер держится в памяти некоторое время, поэтому технология отличается от cgi под нагрузкой.
Мертвая фаза закончилась. Я нарисовал свой сервер и реализовал технологии расширения функциональности cgi и isapi. Результат великолепный - загружаемая библиотека wsisapi.dll от 1С прекрасно себя чувствует, хоть и писали её индусы. Веб браузеры рисуют теперь привычные wsdl или формочки работы через Web.
Остался открытым вопрос - как вызывать методы из модулей 1С (или просто web-сервисы) напрямую (без wsisapi.dll)?
Кто знает, где об этом почитать?
(15) ассемблер? я раньше состарюсь, чем отслежу в деталях нить процесса.
Это ж кто-то писал и не один. Людей же не ликвидировали по окончанию проекта. Кто-то где-то написал или хвастнул об архитектуре и функциях. Мож какой орефков разбирался и делал обратный инжиниринг? Неужели это тайна должна быть? SAP не делает тайны из этого и позволяет вызывать функции из функциональных модулей, а 1С еще не доросла? Тогда зачем в сектор EPR ей? Не может быть, чтоб в секторе ERP разговор 1С-ников был о том, что всё вокруг должно подстраиваться под систему какого-то жалкого назначения?
Ну я бы с этим поспорил, IDA все таки не тупой дизассемблер и встроенный отладчик студии с ним не сравнится :).
А по существу - можно попробовать сделать прокси-библиотеки для core82.dll и STL82.dll и посмотреть как используются ипортированные из них функции. Но как мне кажется разработка wssapi.dll с нуля - это не нужная трата времени. Если она в текущем виде работает то и используйте её.