Имя: Пароль:
1C
1С v8
Написание нативной компоненты для 1с. Java || C++
,
0 Ma3eIIa
 
17.02.16
11:30
Нужно написать кроссплатформеную компоненту.
Возможно ли это на Явке. или брать с++ и вперед ?
Какие могут быть сложности. грабли. Спасибо.
1 Asmody
 
17.02.16
11:31
(0) На плюсах можно. На ИТС есть примеры.
2 Ma3eIIa
 
17.02.16
11:33
(1) да я нашел примеры. видел что ++ и делфя. а вот ява :) просто на досуге изучаю ее. если нереально то буду смотреть ++.

Читал что нужно отдельно писать для разных ОС и битности. то есть для каждой оболочки будет своя компонента. так что ли ?
3 Garykom
 
гуру
17.02.16
11:36
ВК на java не выйдет просто, проще сервис

Кроме С++ еще можно lazarus, это если всяческие jre|clr не хочется тащить
4 Garykom
 
гуру
17.02.16
11:37
5 ObjectRelation Model
 
17.02.16
11:37
(2) интересно, а ты хотел единый двоичный код под винь и под линь?
6 Ma3eIIa
 
17.02.16
11:40
(5) Ява машина это делает сама. по этому и задал вопрос
7 Garykom
 
гуру
17.02.16
11:41
(6) не хочется разочаровывать... но "ява машина" бывает и x86 и  x86_64
8 ObjectRelation Model
 
17.02.16
11:41
(6) ява машина его делает каждый раз из байт-кода
9 Карупян
 
17.02.16
11:42
(7) Это не отменят того факта, что она сама
10 Ma3eIIa
 
17.02.16
11:42
(8) Да но код написан без учета на какой ос и битности будет запушен код.
11 Карупян
 
17.02.16
11:43
на яве нельзя писать длл. вот и весь собственно ответ
12 Garykom
 
гуру
17.02.16
11:43
(10) угу сначала написан код "без учета"... а потом удивляются а что это у нас при работе с файлами траблы или еще с чем...
13 ObjectRelation Model
 
17.02.16
11:43
(10) так и на сях можно, но двоичный результат собирать надо для каждой платформы отдельно
14 Garykom
 
гуру
17.02.16
11:44
(13) на https://ru.wikipedia.org/wiki/Haxe сразу тогда
15 ObjectRelation Model
 
17.02.16
11:47
(14) Нахе..?
16 Ma3eIIa
 
17.02.16
11:50
Я лучше на ++.
ДА и клиент будет платить за каждую реализацию. мне то от этого +
17 Garykom
 
гуру
17.02.16
11:50
(15) угу и выбирать java или c++ не нуна уже
18 Serginio1
 
17.02.16
11:51
(13) Наверняка в Java есть что типа GetFunctionPointerForDelegate
https://msdn.microsoft.com/ru-ru/library/367eeye0.aspx
19 lubitelxml
 
17.02.16
11:52
(14) прикольная вещь, на досуге обязательно попробую
20 Garykom
 
гуру
17.02.16
11:52
21 Garykom
 
гуру
17.02.16
11:54
(19) там сложности есть и ограничения, это для алгоритмов просто хорошо подходит
а если к примеру работа с ТО то траблы
22 Ma3eIIa
 
17.02.16
11:57
это да. но я пользуюсь еклипсом. и мне проще подключить модуль ++
23 Garykom
 
гуру
17.02.16
11:59
(22) тогда что знаешь на том и пиши
и да веб-сервис это часто наилучший результат
24 Serginio1
 
17.02.16
12:03
(23) В общем смысле ВК создавался для получения событий и передачи глобального контекста итд
Вэб,HTTP  сервис это просто замена COM ов.
25 Ma3eIIa
 
17.02.16
12:03
(23) не спорю. но клиент захотел компоненту. он оплачивает музыку :)
26 Serginio1
 
17.02.16
12:05
Или имеет смысл написать ВК для использования пайпов с сериализацией в JSON
27 Serginio1
 
17.02.16
12:07
Я кстати делал для отправки сообщений через Вацап по пайпам, а события передавал через Вэб сервис.
28 Ma3eIIa
 
17.02.16
12:13
(26) Может потом
29 Garykom
 
гуру
17.02.16
12:24
(26) и как эти пайпы из 1С то заюзать?
30 Serginio1
 
17.02.16
12:35
(29) Через ВК. Аналогично как и по Tcp/IP/ Просто можно создать универсальные методы где передаются имя метода, а параметры упаковываются в JSON и сериализуются в строку. Ну и ответ ввиде JSON который можно собрать и разобрать на 1С
31 Ma3eIIa
 
17.02.16
12:42
32 Garykom
 
гуру
17.02.16
12:42
(30) если все равно ВК то проще внутри этой ВК все и ваять

суть веб-сервиса что средствами 1С без ВК обмен идет с "нечто взамен ВК"
33 Garykom
 
гуру
17.02.16
12:44
(31) да но чтука которая "огого" под linux не го
34 Garykom
 
гуру
17.02.16
12:46
самое простое взять портабле vlc и наваять нечто для юзания его
http://umvirt.ru/node/110
35 Serginio1
 
17.02.16
12:46
(32) Ну сервис на пайпах  можно писать на том же .Net Core
36 Garykom
 
гуру
17.02.16
12:47
37 Ma3eIIa
 
17.02.16
12:48
Я же писал. что хотят свое. по этому такие танцы с бубном
38 Garykom
 
гуру
17.02.16
12:49
а еще можно http://bigbluebutton.org/
оно в исходниках https://github.com/bigbluebutton/bigbluebutton
39 Serginio1
 
17.02.16
12:49
40 Garykom
 
гуру
17.02.16
12:49
(37) блин так спрячь vlc внутрь "ВК"
41 Музон Хиггса
 
17.02.16
12:52
(0) Берёшь https://zeroc.com/products/ice, быстренько ваяешь клиентскую часть как ВК на C++, а сервер пишешь на чем хочешь.
42 Garykom
 
гуру
17.02.16
12:52
(39) нафига нужны пайпы, если все равно в 1С пайпов нету?

вот будет в 1С нечто вроде для общения с чем то другим то да можно будет заюзать

можно конечно еще заюзать "внешние источники данных" и вместо данных вызывать код с возвратом результата
http://v8.1c.ru/overview/Term_000000795.htm

т.е. нечто вроде своего драйвера odbc и источника наваять
43 Serginio1
 
17.02.16
12:54
(42) А тем, что Вэб или HTTP сервис значительно дороже пайпов.
44 Garykom
 
гуру
17.02.16
12:56
(42)+ в смысле все параметры из 1С в ВК сериализуем в текст и в виде текста sql запросы выкидываем

в ответ стандартная таблица приходит, которую можно уже обработать

(43) блин...
1С <нечто тормозное> ВК <пайпы шустрые> Еще что то для обработки
вот какой смысл тут от пайпов, если в 1С все равно бутылочное горлышко?
45 Serginio1
 
17.02.16
13:00
(44) Смысл пайпов это замена COM для линуксов. А вызовов методов может быть множество где скорость вызова  уже играет решающую роль.
46 Garykom
 
гуру
17.02.16
13:08
(45) пайпы это те же файлы в памяти

может тогда проще сделать нечто виртуального ram диска через который и идет обмен с 1С ?
47 Garykom
 
гуру
17.02.16
13:11
(46)+ NativeAPI ВК создает ram диск, возвращает его путь
далее кодом 1С туда данные и вызов команды ВК
как выполнится кодом 1С читаем данные с RAM диска и даем команду ВК на отключение
48 Serginio1
 
17.02.16
13:56
(46) Не совсем. Пайпы это сокеты, хотя к ним и можно обращаться как к файлам https://ru.wikipedia.org/wiki/Именованный_канал

http://stackoverflow.com/questions/6977561/pipe-vs-temporary-file
49 Garykom
 
гуру
17.02.16
14:13
(47)+ http://www.delphisources.ru/forum/showthread.php?t=26647
еще для linux найти и можно очень шустро данные туда/сюда перегонять в больших объемах
50 H A D G E H O G s
 
17.02.16
14:14
(48) Пайпы - это пайпы.
51 Serginio1
 
17.02.16
14:15
52 Serginio1
 
17.02.16
14:15
50 Согласен
53 Garykom
 
гуру
17.02.16
14:16
И где в 1С пайпы? А вот с "файлами на диске" умеет работать.
54 H A D G E H O G s
 
17.02.16
14:17
Пайпы - это смесь ежа с ужом, это смесь сокета и оперативной памяти, это самый быстрый и универсальный протокол обмена данными.
55 Garykom
 
гуру
17.02.16
14:18
(54) Угу но кроме сервера 1С с сервером sql оно где то "в 1С" есть?
56 H A D G E H O G s
 
17.02.16
14:19
(55) 1С не пользует пайпы, как не удивительно. От слова "вообще".
57 Serginio1
 
17.02.16
14:19
(53) Еще раз несложно написать Native ВК для обмена через пайпы Ввиде имяМетода,ПараметрыМетода. А сервис на пайпах писать на чем угодно. Главное параметры передавать ввиде JSON которые может готовить 1С
58 H A D G E H O G s
 
17.02.16
14:21
Секрет быстродействия пайпа в том, что он не хранит в себе данные. От слова "вообще". Пайп - это "стандарт обмена и блокировок" между 2-мя процессами. Скорость обмена упирается в скорость подготовки данных одним процессом и приемкой данных другим процессом.
59 H A D G E H O G s
 
17.02.16
14:22
(58) Речь идет о локальном ПК. Когда пробрасывается пайп до удаленного ПК - тут у нас все прелести tcp пакетов (копирование данных и разбивка по пакетам).
60 H A D G E H O G s
 
17.02.16
14:23
(57) Сложно. Пайпы - достаточно сложная штука из за того, что самому блокировки прописывать надо.
61 Ma3eIIa
 
17.02.16
14:27
(40) так не. так хоть опыт будет с ВК нормальный. да и за это еще денюжку получу. что можно сделать проще. я знаю. но хочю разобраться в этом. и отстоять цену вопроса за эту ВК. хотя можно и соврать. но тут будет совесть Чиста :)
62 Garykom
 
гуру
17.02.16
14:28
(56) "поддержка Shared Memory - появилась на движке начиная с 8.2.17 (ВНИМАНИЕ в конфигурации - не должен быть включен режим совместимости с предыдущими версиями движка), на предыдущих движках будет использоватся Naimed Pipes - тоже показывающий неплохие результаты))"
http://catalog.mista.ru/public/147259/

1С использует пайпы
63 Garykom
 
гуру
17.02.16
14:32
(57) а из 1С в эту ВК как данные передать быстро?
64 H A D G E H O G s
 
17.02.16
14:37
65 Serginio1
 
17.02.16
14:43
(63) Пишешь метод с 2 строковыми параметрам.
Первый это Название Метода
Второй параметры в виде JSON

Название пайпа передаешь при создании объекта.

На стороне сервиса пайпа анализируешь переданные данные и вызываешь соответствующие методы
66 Garykom
 
гуру
17.02.16
14:44
(64) если tcp/ip протокол стоит первым в настройках сервера 1С то с чего будут пайпы то юзаться?

и там такая реализация в 1С что на сокетах tcp/ip быстрее часто

ЗЫ и я же не отправляю дальше "интерфейс ЕГАИС" впаривать... еще 1С 7.7 с MS SQL умела по именованным каналам работать
67 Serginio1
 
17.02.16
14:44
(60) Это вам сложно. На WCF пишется все легко.
68 Serginio1
 
17.02.16
14:46
67+ другие способы не сильно трудные
https://msdn.microsoft.com/ru-ru/library/bb546085(v=vs.110).aspx
69 Serginio1
 
17.02.16
14:48
(65) Или все заваричиваешь в JSON и передаешь как строку
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший