|
Работа внешних компонентов в отдельном процессе | ☑ | ||
---|---|---|---|---|
0
H A D G E H O G s
09.09.21
✎
15:02
|
Дня доброго.
Свежачок подъехал. https://wonderland.v8.1c.ru/blog/rabota-vneshnikh-komponentov-v-otdelnom-protsesse/ Но я смутно представляю область применения этой инновации, кроме как тестового запуска внешки в продакшене. |
|||
1
Кирпич
09.09.21
✎
15:16
|
(0) Там же написано про область применения. Если не хочешь, чтобы 1с рухнула от твоего нетленного, то запускай в отдельном процессе.
|
|||
2
H A D G E H O G s
09.09.21
✎
15:22
|
(1) Ну обычно ты это делаешь на тестовом серваке, потом в прод. Надо очень постараться, чтобы похерить стэк или получить этот прекрасный Access violation.
|
|||
3
acht
09.09.21
✎
15:23
|
(0) Кажется, это позволит обновлять подключенные компоненты без рестарта сервера - обновили тушку из данных, передернули процесс и готово. И никакой фреш перезапускать не надо.
|
|||
4
Serginio1
09.09.21
✎
15:24
|
Ну не всем компонентам ты доверяешь. И часто например мою компоненту не хотят использовать из-за безопасности.
На самом деле маршалинг между процессами порякак 15 000 вызовов в секунду https://ru.stackoverflow.com/questions/630653/tcp-ip-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d1%8c-%d0%be%d0%b1%d0%bc%d0%b5%d0%bd%d0%b0/634019#634019 Вполне себе нормально. Учитывая, что можно еще и динамическую компиляцию использовать https://infostart.ru/1c/articles/466196/ |
|||
5
acht
09.09.21
✎
15:28
|
(4) О, дядь Сереж. Мы уж про тебя с твоей компонентой забывать начали, да. Спасибо что напомнид.
|
|||
6
Serginio1
09.09.21
✎
15:29
|
Кстати даже работая с комом проще работать через COM+ dllHost
|
|||
7
Serginio1
09.09.21
✎
15:30
|
(5) На здоровье! И тебе спасибо!
|
|||
8
H A D G E H O G s
09.09.21
✎
15:31
|
(3) Проще добавить кнопку "Отключить процесс", применение которого позволит считать процесс неактивным и заставить сервер создать новый процесс и начать переброску сеансов на новый процесс.
|
|||
9
H A D G E H O G s
09.09.21
✎
15:32
|
(3) Там возникает вопрос - как передавать несериализуемые данные. Да и сериализуемые данные передавать будет трудно, а я вот, например, мегабайты двоичных данных PDF передаю, чтобы tiff вытаскивать.
|
|||
10
Вафель
09.09.21
✎
15:33
|
(8) зачем так сложно когда можно как в (0).
Да и вообще все в отдельных процессах - это модно |
|||
11
H A D G E H O G s
09.09.21
✎
15:37
|
(10) Отключать процессы еще полезно, когда ты, например, в брэндмауэр прописал новый открытый ip адрес, а процесс 1С об этом не знает. И начинаешь ставить ему ограничение по памяти, чтобы перезапустился.
|
|||
12
Почему 1С
09.09.21
✎
15:40
|
Интересно как у них будет реализовано межпроцессорное взаимодействие, скорее всего на разделение памяти, что не так уж и интересно
|
|||
13
H A D G E H O G s
09.09.21
✎
15:41
|
(12) Да сериализацию засунут и делов то.
|
|||
14
Serginio1
09.09.21
✎
15:45
|
(9) Какая там скорость по пайпам?
|
|||
15
Kassern
09.09.21
✎
15:45
|
(0) крутая штука если я правильно понял, то же торговое оборудование в типовых конфах бывает заставляют зависнуть 1ску до победного (с ККТ такая беда была, когда 1ска не штатно закрывалась, повторный заход в РМК зависал намертво)...А тут походу можно будет убить процесс и все развиснет, освободить порт и заново подключить оборудование без выкидывания из 1ски.
|
|||
16
Почему 1С
09.09.21
✎
15:47
|
(13) так из внешней компоненты же можно получать доступ к памяти 1с предприятия для передачи данных вместо передачи через стэк а теперь и он будет не общий
|
|||
17
mistеr
09.09.21
✎
15:47
|
(2) Это ты авторам ВК-шек скажи. Не секрет, что вкшки для 1С пишут далеко не гении C++.
|
|||
18
Вафель
09.09.21
✎
15:52
|
Ну так старый режим пока не отменяют
|
|||
19
Garykom
гуру
09.09.21
✎
16:44
|
(16) тормозить будет
|
|||
20
Вафель
09.09.21
✎
16:45
|
не уж то передача сотни мегабайт из процесса в процесс такая трудоемкая задача?
|
|||
21
H A D G E H O G s
09.09.21
✎
16:55
|
(20) Очень печально слышать это от тебя.
|
|||
22
Вафель
09.09.21
✎
16:58
|
Но скорость памяти же несколько гигабайт в секунду
|
|||
23
acht
09.09.21
✎
17:01
|
(22) Проверка прав процесса на память или возможность вызова сначала на уровне ОС, а потом на уровне процессора далеко не бесплатная, извини.
|
|||
24
Serginio1
09.09.21
✎
17:01
|
||||
25
acht
09.09.21
✎
17:02
|
(23)+ Это еще разным боксингом/анбоксингом не заморачиваться
|
|||
26
H A D G E H O G s
09.09.21
✎
17:04
|
(22) 1С по своей базовой привычке все сериализирует -десериализирует.
|
|||
27
Вафель
09.09.21
✎
17:04
|
(26) ну это уже другой вопрос. если делать через ж.. то можно любую идею испортить
|
|||
28
Кирпич
09.09.21
✎
17:57
|
(26) С чего вдруг сразу сериализовать то. Просто будут через память передавать и всё. Они же не совсем идиоты. Будет медленнее, ну и хрен с ним. Просто твои 100 Мгб еще разок скопируют в общую память перед вызовом, да потом еще разок после вызова.
|
|||
29
Вафель
09.09.21
✎
17:59
|
(28) так это через пайпы нужно. это нужно чтоб компонента умела
|
|||
30
Кирпич
09.09.21
✎
18:04
|
(29) А как ты сделаешь через пайпы? Ты из 1с в ВК передаешь 100 мег. 1С пайпы не умеет. Еще одну ВК делать чтоли? Да и нахрен они нужны. Для 100 мегов есть файлы.
|
|||
31
Вафель
09.09.21
✎
18:11
|
(30) это она не умеет из кода 1с, а внутри вполне может уметь
|
|||
32
Вафель
09.09.21
✎
18:12
|
ну кстати да, вместо пайпов вполне может быть SharedMemory
|
|||
33
H A D G E H O G s
09.09.21
✎
18:31
|
(28) У тебя куча разношерстных данных. Как ты их будешь в объекты на принимающей стороне засовывать? И есть еще готовый сериализатор. Что ты будешь делать?
|
|||
34
H A D G E H O G s
09.09.21
✎
18:33
|
(28) Мы же не непрерывный кусок кучи копируем. Мы набор объектов копируем, в которых данные могут валяться где угодно.
|
|||
35
H A D G E H O G s
09.09.21
✎
18:34
|
(32) Какая разница, какой там транспортный протокол, хоть через wmcopydata передавайте - будет быстро. Медленно - все это предобработать.
|
|||
36
Кирпич
09.09.21
✎
18:36
|
(33) А зачем объекты засовывать. Просто параметры передавать и всё. Ты же в ВК никакие объекты не передаешь. Только числа и строки.
|
|||
37
H A D G E H O G s
09.09.21
✎
18:43
|
(36) Я туда даже ОбщиеМодули отправляю.
|
|||
38
Кирпич
09.09.21
✎
18:48
|
(37) И шо можно делать в ВК с общими модулями?
|
|||
39
Кирпич
09.09.21
✎
18:54
|
Ну в любом случае сериализовать ничо не надо. Просто работает как COM. В COM же бывает в отдельном процессе объекты и всё прекрасно работает без всяких сериализаций.
|
|||
40
H A D G E H O G s
09.09.21
✎
18:56
|
(39) Ну, если ты создаешь его как standalone сервер - то да.
|
|||
41
acht
09.09.21
✎
18:56
|
(36) > Только числа и строки.
Фирма 1С объявила об окончании поддержки компонент, написаных по технологии COM? |
|||
42
H A D G E H O G s
09.09.21
✎
18:56
|
(39) Кстати, да, возможно они пойдут и этим путем.
|
|||
43
H A D G E H O G s
09.09.21
✎
18:57
|
(39) Хех, но тут вылазят Линуксоиды. Нет, не пойдут
|
|||
44
Garykom
гуру
09.09.21
✎
19:06
|
Вот тут пора другой упрощенный формат ВК вводить
Чтобы на чистом C и прочих ЯП что могут c-shared dll легко было ВК писать |
|||
45
Garykom
гуру
09.09.21
✎
19:08
|
(44)+ Хотя нафик, просто встройте уже простейший веб-сервер в клиента 1С и все
Чтобы мог обработку внешнего события вызывать |
|||
46
Кирпич
09.09.21
✎
20:09
|
(42) Таким путем и пойдут. Другого пути нет. Такую фигню можно за пару-тройку дней самому написать. Много ума не надо. Процесс, имитирующий 1с для ВК и RPC через что нравится.
|
|||
47
Кирпич
09.09.21
✎
20:12
|
правда ВК, думающие, что они работают в реальной 1с жестоко заглючат
|
|||
48
2mugik
10.09.21
✎
06:53
|
(0)попробуй сделать ВК использующую Имейжд Мейджик, которую 1С сама использует. 1С вылетит.
|
|||
49
xkanix
10.09.21
✎
08:44
|
(2)
>Надо очень постараться, чтобы похерить стэк или получить этот прекрасный Access violation. Значит подавляющее большинство авторов ВК это и делает... На самом деле нет - просто большая часть авторов ВК относится к C++ примерно как во встроенному языку - ну типа переменные, if'ы тут for'ы - что непонятного то? P.S. И между прочим, причём тут стек - основной источник проблем от ВК - обычные перетирки памяти, от которых потом падает рабочий процесс. |
|||
50
Armando
10.09.21
✎
10:26
|
(0) недавно с альфа-автой сталкивался, так она падает периодически из-за из их компоненты защиты. Вот тебе и продакшен.
|
|||
51
Serginio1
10.09.21
✎
17:33
|
(39) Com между процессами маршалит данные. Это может быть и ссылка на стороне сервера и сереализация десериализация
|
|||
52
Serginio1
11.09.21
✎
11:01
|
51+ Вообще в .Net Framework для таких вещей есть AppDomain https://docs.microsoft.com/ru-ru/dotnet/api/system.appdomain?view=netframework-4.8
Суть его в том, что AppDomain выполняется в одном пространстве (процессе) с приложения но изолирован от приложения и его можно выгружать. С переходом на .Net Core AppDomain стали платформозависмыми. Сейчас очень модно использовать микросервисы https://habr.com/ru/post/249183/ Я в свое время сам написал .Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед https://habr.com/ru/post/323096/ Так, что 1С сделало то, что уже давно нужно было делать |
|||
53
ДедМорроз
12.09.21
✎
10:24
|
Передача данных через границу процесса?
Тут вопрос,а зачем вообще нужна внешняя компонента,если доступ к ней через границу процесса? Проще сразу в 1с реализовывать Tcp потоки для обмена двнными и забыть про внешние компоненты совсем. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |