wsisapi

1. c+ + (ture) 229 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) 118 22.12.16 14:27 Сейчас в теме
(17)
off:
кстати IDA мне не нужна
Ну я бы с этим поспорил, IDA все таки не тупой дизассемблер и встроенный отладчик студии с ним не сравнится :).

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

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

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

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

IIS ей разумеется говорит "не знаю, гуляй", я как-то даже растерялся.
12. c+ + (ture) 229 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!

Сейчас попробую без прокси, сам потрепать ёё.
13. c+ + (ture) 229 12.12.16 12:42 Сейчас в теме
Оу-у-у-у-у e-e-e-e-e-e!!!!!
wsisapi от 1Ц схавала мои команды, теперь можно двигать дальше.

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

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

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

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

А по существу - можно попробовать сделать прокси-библиотеки для core82.dll и STL82.dll и посмотреть как используются ипортированные из них функции. Но как мне кажется разработка wssapi.dll с нуля - это не нужная трата времени. Если она в текущем виде работает то и используйте её.
19. c+ + (ture) 229 22.12.16 14:58 Сейчас в теме
(18) I'm so stupid... я совсем забыл про прокси!!!
20. nick perel (nickperel) 2 07.06.17 13:35 Сейчас в теме
(1)
OData
https://infostart.ru/public/360077/
http://www.odata.org/

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

Но выбросить веб-клиент нельзя. Мне не известно способов добраться до содержимого инфобазы 1C:Предприятия без посредника, без прохода через лицензирование. Может есть?
Но не прямой доступ в SQL
Оставьте свое сообщение