wsisapi

1. ture 606 08.12.16 17:56 Сейчас в теме
Добрый день, All.

Наверно все слышали о веб серверах (это такая, штука, которая расширяет веб браузер). Так вот 1С двинулась в этом направление и сделала http и web-сервисы через wsisapi.dll

Чтоб это использовать нужен апач или иис, но мне было не лень написать свой сервер, который принимает соединения и отдает отдельным (worker) программам типа cgi (в обычном понимание) сделать "грязную работу" по формированию текста html-документа. Все вроде меня устраивает, но захотелось подключить wsisapi.dll, чтоб совсем как в "серьёзных решениях" было.

В принципе, я знаю, где почитать на тему isapi. Но вот вопрос - можно ли минуя wsisapi.dll работать сразу с сервером 1С? Интересуют меня web-сервисы и http только. Я готов держать в памяти и wsisapi.dll, но думается мне, что посредник не нужен.

Делал кто такое?
По теме из базы знаний
Найденные решения
18. MadDAD 152 22.12.16 14:27 Сейчас в теме
(17)
off:
кстати IDA мне не нужна
Ну я бы с этим поспорил, IDA все таки не тупой дизассемблер и встроенный отладчик студии с ним не сравнится :).

А по существу - можно попробовать сделать прокси-библиотеки для core82.dll и STL82.dll и посмотреть как используются ипортированные из них функции. Но как мне кажется разработка wssapi.dll с нуля - это не нужная трата времени. Если она в текущем виде работает то и используйте её.
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. Fox-trot 156 09.12.16 09:08 Сейчас в теме
(1)
Наверно все слышали о веб серверах (это такая, штука, которая расширяет веб браузер)
это по меньшей мере странно такое слышать от разработчика, хотя допускаю, что автор диктовал своему секретарю
а если о сути вопроса, то не совсем понятна логика вопроса. то есть какова причина отказа от исходной библиотеки? ведь сразу же возникает куча проблем с авторизацией и прочими делами...
4. ture 606 09.12.16 10:27 Сейчас в теме
(3) подскажите примерно направление поиска. Я хочу научиться работать с сервером 1С напрямую (говоря простым языком, хочу написать свой модуль isapi для веб-сервера). Как мне наткнуться ну кучу проблем с авторизацией и прочими делами?
5. Fox-trot 156 09.12.16 10:57 Сейчас в теме
(4) для начала создать ком-сервер
6. ture 606 09.12.16 18:30 Сейчас в теме
(5) Начал ты явно издалека. Представь, что сервер уже есть. Сервер напоминает web-сервер. Расширяется аналогично cgi. Isapi еще не умеет, но с wsisapi.dll от 1С уже перебрехивается ошибками.

Что дальше-то?
20. nickperel 5 07.06.17 13:35 Сейчас в теме
(1)
OData
https://infostart.ru/public/360077/
http://www.odata.org/

Практические результаты связи УПП - MS PowerBI - часа 2-3 без автообновления

Но выбросить веб-клиент нельзя. Мне не известно способов добраться до содержимого инфобазы 1C:Предприятия без посредника, без прохода через лицензирование. Может есть?
Но не прямой доступ в SQL
2. ture 606 09.12.16 08:50 Сейчас в теме
Механизм интеграции isapi можно сделать для SAP, аксапта и буду прав, если скажу, что для всех серьёзных ERP. А в 1С можно только то, что дозволено в букварях? Весьма миленько получается.
12. ture 606 12.12.16 11:58 Сейчас в теме
Нарисовал я прокси к 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)

Вуаля в браузере wsdl!

Сейчас попробую без прокси, сам потрепать ёё.
7. Fox-trot 156 09.12.16 20:54 Сейчас в теме
не совсем понятна мысль. если "сервер уже есть" и "уже перебрехивается с wsisapi.dll", то о чем еще мечтать? хотя выше было сказано, что "вот вопрос - можно ли минуя wsisapi.dll работать сразу с сервером 1С?" Таки не понятно нужен тебе wsisapi.dll или нет. опять таки если речь идет о других системах, то не трудно понять, что в них есть свой api. открытый или не документированный - это уже другой вопрос
8. ture 606 09.12.16 21:54 Сейчас в теме
(7) для isapi не допустимо валиться с ошибками, потому что это рушит весь сервер. Преимущество в том, что не нужно создавать и потом срубать процесс. Однако иис запускает всякий раз новый процесс, который работает с isapi 1с. И это понятно, тк wsisapi производства 1с валится с ошибками, на каждом шагу и тянет за собой весь сервис. В итоге реализация не отличается от cgi, не смотря на всю рекламу. Т.е. Снова запускается отдельный процесс, который общается с isapi 1c.

В принципе, мне пофигу и я могу не заморачиваться на прямое соединение с сервером. Просто задумался о стабильносте. Коннект с SAP у меня идет без посредников (dll rfc не в счет, т.к. она быстрая и безпроблемная).
9. Fox-trot 156 10.12.16 21:18 Сейчас в теме
(8) так ты запилил свой сервис или недоволен тем, что из коробки?
10. ture 606 11.12.16 18:55 Сейчас в теме
(9) я приделываю к своему web-серверу isapi, потому что не знаю как вызывать сервер 1с напрямую. А недоволен я тем, что по документации сказано, что технология расширения isapi предполагает динамическую загрузки библиотеки в память процесса сервера, а эта библиотека валится с ошибками, что влечет за собой обвал всего сервера. Я так понимаю, что на словах в документации одно, а на деле сервер запускает отдельный процесс, который взаимодействует с isapi библиотекой. Т.е. Если isapi падает, то падает только этот отдельный процесс, а не весь сервер. Однако в таком раскладе получается, что мы имеем расширение cgi, которое так же предполагает запуск отдельного процесса при каждом вызове. Я отлаживаю свою isapi и вижу, что она взаимодействует с процессом, который то появляется, при вызове, то пропадает, после вызова клиента.

Ух....
11. ture 606 12.12.16 10:52 Сейчас в теме
wsisapi.dll спрашивает у меня переменную среды HTTP_1C-APPLICATIONNAME

IIS ей разумеется говорит "не знаю, гуляй", я как-то даже растерялся.
13. ture 606 12.12.16 12:42 Сейчас в теме
Оу-у-у-у-у e-e-e-e-e-e!!!!!
wsisapi от 1Ц схавала мои команды, теперь можно двигать дальше.

В процессе выяснилось, что IIS делает себе воркер, который загружает wsisapi и этот воркер держится в памяти некоторое время, поэтому технология отличается от cgi под нагрузкой.
14. ture 606 22.12.16 11:37 Сейчас в теме
Мертвая фаза закончилась. Я нарисовал свой сервер и реализовал технологии расширения функциональности cgi и isapi. Результат великолепный - загружаемая библиотека wsisapi.dll от 1С прекрасно себя чувствует, хоть и писали её индусы. Веб браузеры рисуют теперь привычные wsdl или формочки работы через Web.

Остался открытым вопрос - как вызывать методы из модулей 1С (или просто web-сервисы) напрямую (без wsisapi.dll)?
Кто знает, где об этом почитать?

15. MadDAD 152 22.12.16 12:03 Сейчас в теме
(14) IDA в руки и в перед :) Врядли где найдется публичная инфа о том как внутри работает библиотека.
16. ture 606 22.12.16 12:15 Сейчас в теме
(15) ассемблер? я раньше состарюсь, чем отслежу в деталях нить процесса.

Это ж кто-то писал и не один. Людей же не ликвидировали по окончанию проекта. Кто-то где-то написал или хвастнул об архитектуре и функциях. Мож какой орефков разбирался и делал обратный инжиниринг? Неужели это тайна должна быть? SAP не делает тайны из этого и позволяет вызывать функции из функциональных модулей, а 1С еще не доросла? Тогда зачем в сектор EPR ей? Не может быть, чтоб в секторе ERP разговор 1С-ников был о том, что всё вокруг должно подстраиваться под систему какого-то жалкого назначения?
17. ture 606 22.12.16 12:18 Сейчас в теме
(15)
кстати IDA мне не нужна, я прям в студии отладчиком попадаю в ассемблер библиотеки, только мне это мало что дает.
18. MadDAD 152 22.12.16 14:27 Сейчас в теме
(17)
off:
кстати IDA мне не нужна
Ну я бы с этим поспорил, IDA все таки не тупой дизассемблер и встроенный отладчик студии с ним не сравнится :).

А по существу - можно попробовать сделать прокси-библиотеки для core82.dll и STL82.dll и посмотреть как используются ипортированные из них функции. Но как мне кажется разработка wssapi.dll с нуля - это не нужная трата времени. Если она в текущем виде работает то и используйте её.
19. ture 606 22.12.16 14:58 Сейчас в теме
(18) I'm so stupid... я совсем забыл про прокси!!!
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)