Pull to refresh

Comments 7

Поясните для тех кто не в теме: 1С в принципе выполняется в STA (я же прав?). Вы дергаете методы 1С из разных потоков, но он от этого MTA не становится… Тогда какой потаённый смысл этого?
Опыты показали, что на стороне 1С все выполняется в 1 поток. Но на стороне .Net действует многопоточность.
Потаенный смысл в следующем:
1. Само наличие веб-сервера внутри 1С
2. Полная подконтрольность — возможность управлять заголовками, кукисами и т.д.
3. Вспомогательный функционал, вынесенный в .Net будет многопоточным и эффективным. Например, кэширование ответов на стороне .Net.
4. За счет нескольких прослушивающих потоков меньшая вероятность потерять запрос.
5. Доступен сразу весь функционал .Net: можно возвращать JSON, RSS, REST, рисунки через его объекты. На рисунки можно «на лету» ставить водяные знаки.
Я вам и без опытов мог это сказать: 1С работает в STA апартаментах.
1) веб сервер внутри 1С надо думать есть — раз оно умеет делать WS оконечные точки. Думаю вам стоит поковырять в том направлении…
4) насколько вероятность меньше? Цифры?

1) 1С публикуется через веб-сервер Apache/IIS в 2х режимах: веб-сервисы (SOAP) и веб-клиент 8.2. Это негибко. Кроме этих протоколов есть другие популярные, например, JSON.
4) Как вы себе представляете вычисление абсолютных цифр? 1С выстроит все параллельные запросы в последовательное выполнение. Вероятность завершения по таймауту будет высокой.
При организации кэша на стороне .Net часть запросов пойдет без участия 1С в многопоточном режиме, что уменьшит вероятность завершения по таймауту.
На сколько выше или ниже в абсолютных цифрах — это тема отдельного исследования. Для данного метода достаточно знать, что лучше однопоточного HttpListener'а может быть многопоточный (благо .Net это позволяет). И желательно применение кэша на стороне .Net.
4) нет, 1с не будет выстраивать запросы в очередь. Параллельные запросы могут ждать на блокировках — но это уже проблема того, как написана конфигурация.
1. не понял, где многопоточность? 1с работает в 1 поток. Веб-сервисы 1с работают в несколько потоков.
2. полная подконтрольность — да. Но нужна ли она? Веб сервер — пусть будет веб сервером, учетная система — учетной системой.
3. в случае веб-сервисов 1с есть строго формализованрное API, в случае своего «велосипеда» его нужно изобретать, вести документацию, помнить обо всех изменениях и т.д.
4. вариант сайт, который обращается к 1с через веб сервисы намного более гибок, при грамотном проектировании можно менять части совершенно независимо друг от друга.

Ну и да — несколько тысяч хитов в сутки (маленький интернет-магазин, обращающийся в 1с в момент создания-резервирования заказа, расчета цен и т.п.) веб сервисы-выдерживают вообще не напрягаясь на очень среднем железе.
1. Вспомогательный функционал, вынесенный в .Net будет многопоточным и эффективным. Например, кэширование ответов на стороне .Net. По поводу веб-сервисов замеров у меня нет, если есть замер производительности, прошу поделиться. Мои личные наблюдения относительно 1С, опубликованной через веб, говорят о том, что там нет многопоточности, хотя, казалось бы, должна быть. Наверняка есть особенности и в веб-сервисах.
2. Полная подконтрольность нужна в некоторых задачах, вот реальный вопрос от пользователей: «Реализована информационная система на базе платформы „1С: Предприятие 8.2“, в системе создан Web-Сервис, на который приходят запросы с необходимой информацией в теге header. Платформа „1С: Предприятие 8.2“ не позволяет считывать информацию в теге header.»
3. В случае с 1С протокол ограничен SOAP, что не гарантирует совместимости с др.платформами. В случае с предложенной технологией протокол SOAP'ом не ограничен, выбирайте любой: JSON, REST, XML или выдумывайте свой. Стандартные случаи хорошо документированы, так как это классы .Net Framework.
4. Не обязательно через веб-сервисы. Скоро предложу на критику еще один прогрессивный метод доступа на замену веб-сервисам.

Полностью согласен, что на полноценный веб-сервер не тянет и лучше сайты делать на IIS или Apache.
Но определенные задачи веб-сервер на стороне 1С все-таки решает: например, работает с оборудованием, мониторит состояние базы.
Sign up to leave a comment.

Articles