Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp

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

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

А ты не интересовался Inter-Process Communication in Qt? Вон они пишут, что к D-Bus прикрутили систему слоты-сигналы. Ты же на Qt программируешь?
22 май 20, 11:43    [22137584]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav,
Я тоже чисто прочитал что в Qt сигналы меж процессов не работают.
22 май 20, 11:45    [22137586]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp
petrav,
Я тоже чисто прочитал что в Qt сигналы меж процессов не работают.

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

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)));

Может я что-то не понимаю...
22 май 20, 12:08    [22137601]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav,
ну, если не трудно то сделайте демку. Я не такой уж спец.
- два Qt приложения Сервер и клиент
- запускаем рядом в разных процессах
- в окошке клиента вводим 1234 и в окошке сервера это появилось.
А потом я попробую.
22 май 20, 12:18    [22137606]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp
petrav,
ну, если не трудно то сделайте демку. Я не такой уж спец.
- два Qt приложения Сервер и клиент
- запускаем рядом в разных процессах
- в окошке клиента вводим 1234 и в окошке сервера это появилось.
А потом я попробую.

Зайди в папку аля "Examples\Qt-5.10.1\dbus\". Там есть сэмпл "chat" и даже файл .pro есть, xml описание протокола.

DBUS_ADAPTORS += org.example.chat.xml
DBUS_INTERFACES += org.example.chat.xml
22 май 20, 12:25    [22137615]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav
"Examples\Qt-5.10.1\dbus\"
OK
Счас, добью protobuf и посмотрю. Спс.
22 май 20, 12:29    [22137620]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
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 ошибка:
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 тоже одну.
Если я не отлаживаю либу а отлаживаю экзешник это правильно?
22 май 20, 16:49    [22137810]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp

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

Конечно. Но я бы всё же разобрался что там происходит с макросом '_ITERATOR_DEBUG_LEVEL'. Это не сложно.
22 май 20, 18:18    [22137850]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
c Protobuf демкой вопрос решён - работает.

/*********.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;
}
22 май 20, 23:20    [22137998]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp,

Если по некоему каналу данных будут в произвольном порядке передаваться структуры Person, Cat, Dog. Эта проблема решена в protobuf?
22 май 20, 23:30    [22138003]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav,
Мне стыдно за либу но там нифига нет кроме сериализации.
То есть как из строки сделать классы там живые ...в оперативке.
ParseFromIstream(...
Всё
То есть ваш вопрос решается не в либе а в любом коде сервера.
Если передача асинхронно, то будет беспорядочно.
Если синхронна, то будем ждать ответа или освобождения канала.
Имхо

Сообщение было отредактировано: 22 май 20, 23:50
22 май 20, 23:46    [22138009]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav,
ну вот, я собираюсь qRPC либу посмотреть.
Говорят она в яндекс маркете)
Дак вот там генерируетя как синхронный так и асинхронный сервер-клиент.
Как раз ваш вопрос.
https://habr.com/ru/company/yandex/blog/484068/
автор
Еще одна фича gRPC — клиент и сервер генерируются при помощи proto-компилятора и gRPC-плагина на основе proto-описания. Есть возможность в моменте, когда пишется код, выбрать какой клиент будет использоваться. То есть выбрать асинхронный или синхронный клиент, в зависимости от того, какого рода код вы пишите.
23 май 20, 00:08    [22138014]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp
petrav,
Мне стыдно за либу но там нифига нет кроме сериализации.
То есть как из строки сделать классы там живые ...в оперативке.

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

Protobuf — это гугловская разработка? Через год они похоронят этот проект. У Гугла традиция убивать проекты. Что-то новое изобретут. У них есть деньги на переписывание своих проектов на другие либы. Есть ли эти деньги у тебя? Поэтому я и предлагаю что-то более стабильное: D-Bus + Qt. Но это, я опасаюсь, под Win будет сложно запустить. Но под Linux работать будет, слоты-сигналы.
23 май 20, 00:14    [22138017]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav,
Дык у тебя исходники. Хоть вечно работай.
Таки же как и DBus.
Только боюсь там транспорт писать надо. Опять просто расшаривает данные на 2 процесса. Я посмотрю позже.
Ну а бросает разработчиков не гугл а MS.
Вспомни COM, Сильверлайт, веб сервер единственный.
23 май 20, 09:02    [22138066]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp
petrav,
Дык у тебя исходники. Хоть вечно работай.

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

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

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

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

Ещё OLE и DDE. А они что IIS убили? Что-то сомневаюсь.
23 май 20, 10:01    [22138070]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
Алексей Роза
Member

Откуда: РФ
Сообщений: 144
petrav
А они что IIS убили? Что-то сомневаюсь.

Nginx всех убил.
Apache по инерции плывёт, но тонет каждый год.
а IIS даже не пытается всплывать.
2017

Сообщение было отредактировано: 23 май 20, 10:05
23 май 20, 10:04    [22138071]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
Алексей Роза
petrav
А они что IIS убили? Что-то сомневаюсь.

Nginx всех убил.
Apache по инерции плывёт, но тонет каждый год.
а IIS даже не пытается всплывать.
2017
нет
ASP Net core полностью без обратной совместимости.
Все проекты надо переписать с нуля.
Ну а там первый кроссплатформенный веб сервер kestrel.
MS поняло что упустило линукс
23 май 20, 10:09    [22138073]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav,
Что значит саппортить?
По русски это сопровождать?
Откройте выше ссылку. Там 3 файла cpp.
Любой заказчик лучше это возьмет чем наколенное поделие.
А либа 1 и либа 2 чем не равны?
23 май 20, 10:12    [22138074]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
Алексей Роза
Member

Откуда: РФ
Сообщений: 144
PetroNotC Sharp
Алексей Роза
пропущено...

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



зы: на ютубе, кстати, про protobuf много
слишком много для такой простой технологии, где "только сериализация"...
23 май 20, 12:01    [22138090]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
Алексей Роза,
"слишком много" это не инженерный термин. Перефразируйте свою мысль.
23 май 20, 12:50    [22138106]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49957

Алексей Роза
на ютубе, кстати, про protobuf много
слишком много для такой простой технологии, где "только сериализация"...

Ты ещё с порно сравни...

Posted via ActualForum NNTP Server 1.5

23 май 20, 13:33    [22138123]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
petrav
Member

Откуда:
Сообщений: 2074
PetroNotC Sharp

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

Тем что Qt у тебя уже есть, а добавляя ещё одну библиотеку — ты добавляешь новую зависимость.
23 май 20, 13:45    [22138130]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 4750
petrav,
Согласен. Если функционал требуемый одинаков в обоих, то D-Bus выигрывает.
Но решают что брать как и у тебя наверху.
Я готовлю аналитическую записку по вариантам А, Б, С.
Эта тема обзорная. По всему что есть межпроцессного.
Дойду и до D-Bus.
23 май 20, 14:22    [22138144]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
ъъъъъ
Member

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

Там нечего саппортить, протобуф - это идея. Масса самопальных реализаций для языков, не поддерживаемых гуглом.
23 май 20, 18:22    [22138251]     Ответить | Цитировать Сообщить модератору
 Re: Что выбрать для межпроцессного взаимодействия модулей приложений?  [new]
mayton
Member

Откуда: loopback
Сообщений: 46320
petrav
PetroNotC Sharp

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

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

Ну и что?
23 май 20, 18:25    [22138255]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
Все форумы / C++ Ответить