powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что выбрать для межпроцессного взаимодействия модулей приложений?
25 сообщений из 145, страница 3 из 6
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960640
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

потом возможно ZeroMQ.
Ты про него что там есть вызов методов?

Я просто пробежался по описанию protobuf, почитал твои посты и задал вопрос.

А ты не интересовался Inter-Process Communication in Qt? Вон они пишут, что к D-Bus прикрутили систему слоты-сигналы. Ты же на Qt программируешь?
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960642
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Я тоже чисто прочитал что в Qt сигналы меж процессов не работают.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960653
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Я тоже чисто прочитал что в Qt сигналы меж процессов не работают.

А я по документации и примерам (D-Bus Chat Example) вижу что работают. Я правда не уверен, что это будет работать под Win. Но у меня собралось, запустилось и написало, что не может подключиться к сессии D-Bus.

Код: plaintext
1.
2.
3.
4.
org::example::chat *iface;
iface = new org::example::chat(QString(), QString(), QDBusConnection::sessionBus(), this);
QDBusConnection::sessionBus().connect(QString(), QString(), "org.example.chat", "message", this, SLOT(messageSlot(QString,QString)));
connect(iface, SIGNAL(action(QString,QString)), this, SLOT(actionSlot(QString,QString)));


Может я что-то не понимаю...
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960658
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
ну, если не трудно то сделайте демку. Я не такой уж спец.
- два Qt приложения Сервер и клиент
- запускаем рядом в разных процессах
- в окошке клиента вводим 1234 и в окошке сервера это появилось.
А потом я попробую.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960666
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
ну, если не трудно то сделайте демку. Я не такой уж спец.
- два Qt приложения Сервер и клиент
- запускаем рядом в разных процессах
- в окошке клиента вводим 1234 и в окошке сервера это появилось.
А потом я попробую.

Зайди в папку аля "Examples\Qt-5.10.1\dbus\". Там есть сэмпл "chat" и даже файл .pro есть, xml описание протокола.
Код: plaintext
1.
2.
DBUS_ADAPTORS += org.example.chat.xml
DBUS_INTERFACES += org.example.chat.xml
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960670
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
"Examples\Qt-5.10.1\dbus\"
OK
Счас, добью protobuf и посмотрю. Спс.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960795
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Вот так счас делается бинарник CMake через студию.
Появилось понятие Проект CMake.
https://docs.microsoft.com/ru-ru/cpp/build/get-started-linux-cmake?view=vs-2019

вроде работает.
Нужно правой кнопой на проекте и buid - libprotobuf.lib = появится в Users....
............
Но при переключении конфига exe с release на debug ошибка:
Код: plaintext
Error	LNK2038	mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in project-name.obj	project-name	D:\project-name\libprotobuf.lib(common.cc.obj)	1
Либу я сделал одну в режиме release и прописал в проект exe тоже одну.
Если я не отлаживаю либу а отлаживаю экзешник это правильно?
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960825
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Либу я сделал одну в режиме release и прописал в проект exe тоже одну.
Если я не отлаживаю либу а отлаживаю экзешник это правильно?

Конечно. Но я бы всё же разобрался что там происходит с макросом '_ITERATOR_DEBUG_LEVEL'. Это не сложно.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960924
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c Protobuf демкой вопрос решён - работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
/*********.proto*****************************
syntax = "proto2";
package pack.my;
message Person{
  string name = 1;
}
**************************************/
#define WIN32_LEAN_AND_MEAN

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <winsock2.h>
#include <windows.h>
#include <ws2tcpip.h>
#include <conio.h>
#include "addressbook.pb.h"
#include "addressbook.pb.cc"

#pragma comment (lib, "WS2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")

using namespace std;
using namespace pack::my;

void savePerson(const char* fname, const Person& person) {
	fstream out(fname, ios::out | ios::trunc | ios::binary);
	if (!person.SerializeToOstream(&out))
		throw runtime_error("savePerson() failed");
}

void loadPerson(const char* fname, Person& person) {
	fstream in(fname, ios::in | ios::binary);
	if (!person.ParseFromIstream(&in))
		throw runtime_error("loadPerson() failed");
}

int main(int argc, char* argv[]) {
	GOOGLE_PROTOBUF_VERIFY_VERSION;

	Person person;
	person.set_name("aaa");
	cout << "Saving Person..." << endl;
	savePerson("12345678.dat", person);

	cout << "Loading Person..." << endl;
	Person person2;
	loadPerson("12345678.dat", person2);
	cout << "----> PRINT Person class: " << person2.name() << endl;
	cout << endl;
	// Optional:  Delete all global objects allocated by libprotobuf.
	google::protobuf::ShutdownProtobufLibrary();

	return 0;
}
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960929
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Если по некоему каналу данных будут в произвольном порядке передаваться структуры Person, Cat, Dog. Эта проблема решена в protobuf?
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960935
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Мне стыдно за либу но там нифига нет кроме сериализации.
То есть как из строки сделать классы там живые ...в оперативке.
ParseFromIstream(...
Всё
То есть ваш вопрос решается не в либе а в любом коде сервера.
Если передача асинхронно, то будет беспорядочно.
Если синхронна, то будем ждать ответа или освобождения канала.
Имхо
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960940
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
ну вот, я собираюсь qRPC либу посмотреть.
Говорят она в яндекс маркете)
Дак вот там генерируетя как синхронный так и асинхронный сервер-клиент.
Как раз ваш вопрос.
https://habr.com/ru/company/yandex/blog/484068/
авторЕще одна фича gRPC — клиент и сервер генерируются при помощи proto-компилятора и gRPC-плагина на основе proto-описания. Есть возможность в моменте, когда пишется код, выбрать какой клиент будет использоваться. То есть выбрать асинхронный или синхронный клиент, в зависимости от того, какого рода код вы пишите.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960942
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Мне стыдно за либу но там нифига нет кроме сериализации.
То есть как из строки сделать классы там живые ...в оперативке.

(Развёл руками)

Protobuf — это гугловская разработка? Через год они похоронят этот проект. У Гугла традиция убивать проекты. Что-то новое изобретут. У них есть деньги на переписывание своих проектов на другие либы. Есть ли эти деньги у тебя? Поэтому я и предлагаю что-то более стабильное: D-Bus + Qt. Но это, я опасаюсь, под Win будет сложно запустить. Но под Linux работать будет, слоты-сигналы.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960981
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Дык у тебя исходники. Хоть вечно работай.
Таки же как и DBus.
Только боюсь там транспорт писать надо. Опять просто расшаривает данные на 2 процесса. Я посмотрю позже.
Ну а бросает разработчиков не гугл а MS.
Вспомни COM, Сильверлайт, веб сервер единственный.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960985
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Дык у тебя исходники. Хоть вечно работай.

Ты считаешь, что сможешь саппортить разработку Гугла? Это хорошо, что ты так считаешь, смелость и безбашенность города берёт.

PetroNotC Sharp
Таки же как и DBus.
Только боюсь там транспорт писать надо. Опять просто расшаривает данные на 2 процесса. Я посмотрю позже.

Какой транспорт, когда там явно написан в примерах межпроцессный вызов сигналов-слотов и, очевидно, кодогенерация по xml описанию протокола взаимодействия. Не смотри. :)

PetroNotC Sharp
Ну а бросает разработчиков не гугл а MS.
Вспомни COM, Сильверлайт, веб сервер единственный.

Ещё OLE и DDE. А они что IIS убили? Что-то сомневаюсь.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960986
petrav
А они что IIS убили? Что-то сомневаюсь.

Nginx всех убил.
Apache по инерции плывёт, но тонет каждый год.
а IIS даже не пытается всплывать.
2017
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960988
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
petrav
А они что IIS убили? Что-то сомневаюсь.

Nginx всех убил.
Apache по инерции плывёт, но тонет каждый год.
а IIS даже не пытается всплывать.
2017
нет
ASP Net core полностью без обратной совместимости.
Все проекты надо переписать с нуля.
Ну а там первый кроссплатформенный веб сервер kestrel.
MS поняло что упустило линукс
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39960989
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Что значит саппортить?
По русски это сопровождать?
Откройте выше ссылку. Там 3 файла cpp.
Любой заказчик лучше это возьмет чем наколенное поделие.
А либа 1 и либа 2 чем не равны?
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39961003
PetroNotC Sharp
Алексей Роза
пропущено...

Nginx всех убил.
Apache по инерции плывёт, но тонет каждый год.
а IIS даже не пытается всплывать.
2017
нет
ASP Net core полностью без обратной совместимости.
Все проекты надо переписать с нуля.
Ну а там первый кроссплатформенный веб сервер kestrel.
MS поняло что упустило линукс

YouTube Video
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39961018
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза,
"слишком много" это не инженерный термин. Перефразируйте свою мысль.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39961028
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Розана ютубе, кстати, про protobuf много
слишком много для такой простой технологии, где "только сериализация"...

Ты ещё с порно сравни...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39961031
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

А либа 1 и либа 2 чем не равны?

Тем что Qt у тебя уже есть, а добавляя ещё одну библиотеку — ты добавляешь новую зависимость.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39961039
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Согласен. Если функционал требуемый одинаков в обоих, то D-Bus выигрывает.
Но решают что брать как и у тебя наверху.
Я готовлю аналитическую записку по вариантам А, Б, С.
Эта тема обзорная. По всему что есть межпроцессного.
Дойду и до D-Bus.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39961113
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
Ты считаешь, что сможешь саппортить разработку Гугла? Это хорошо, что ты так считаешь, смелость и безбашенность города берёт.

Там нечего саппортить, протобуф - это идея. Масса самопальных реализаций для языков, не поддерживаемых гуглом.
...
Рейтинг: 0 / 0
Что выбрать для межпроцессного взаимодействия модулей приложений?
    #39961117
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
PetroNotC Sharp

А либа 1 и либа 2 чем не равны?

Тем что Qt у тебя уже есть, а добавляя ещё одну библиотеку — ты добавляешь новую зависимость.

Ну и что?
...
Рейтинг: 0 / 0
25 сообщений из 145, страница 3 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что выбрать для межпроцессного взаимодействия модулей приложений?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]