Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 20 из 91

Тема: Вопрос форумным экспертам(программировани

  1. #1
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244

    Вопрос форумным экспертам(программировани

    Как известно на ск2тв, обитают настоящие эксперты практически во всех областях. И я не про тех кто вчера строил прогнозы по поповоду олимпиады, а сегодня уже разбирается в схемах поставки лосося в Россию, при санкциях.

    И так вопрос: есть несколько программ обменивающихся данными между собой. Сейчас обмен происходит через запись файла на диск. Есть предложение сделать обмен без сохранения на диск. То есть каким-то образом нужно передавать данные из одно программы в другую. Объем данных может измерятся гигобайтами.

    Вопрос в чем разбираться? Про что почитать? Я так понял что в виндовс это сделано через OLE технологию. Но есть ли какие-то готовые решения?Или я не прав и надо про другое читать? Работал ли кто-нибудь с таким?

  2. #2
    Активный участник Аватар для _Panzer
    Регистрация
    18.11.2013
    Сообщений
    3,061
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    И так вопрос: есть несколько программ обменивающихся данными между собой. Сейчас обмен происходит через запись файла на диск. Есть предложение сделать обмен без сохранения на диск. То есть каким-то образом нужно передавать данные из одно программы в другую. Объем данных может измерятся гигобайтами.
    Обмен данными может осуществляться через разделяемый ресурс. Таковым может быть, например, общая область памяти, сетевое соединение. Хорошим решением будет обмен данными через порты (сокеты) - это быстро, не слишком сложно в реализации, есть куча готовых библиотек и такое решение может быть по-умолчанию переносимо.

  3. #3
    lurk for IPC (inter-process communication)
    such troll. much wow.

  4. #4
    Активный участник
    Регистрация
    17.05.2010
    Сообщений
    2,756
    программа то на диске всё равно находится

  5. #5
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244
    _Panzer, Ну по возможности, хотелось бы чтобы эти данные были доступны из нескольких приложений. А не копировались бы из одно области видимости в другую.

    А на сколько я понимаю в сокетах, именно будет проихсодить копирования. Но я запомню.

    - - - Добавлено - - -

    Цитата Сообщение от Sader Посмотреть сообщение
    программа то на диске всё равно находится
    Нет в оперативной памяти.

  6. #6
    Активный участник Аватар для Teodorka
    Регистрация
    22.04.2013
    Адрес
    скамейка на Патриарших
    Сообщений
    1,624
    А в чем смысл? Это повысит производительность?
    Я от жизни смертельно устал,
    Ничего от нее не приемлю,
    Но люблю мою бедную землю,
    Оттого, что иной не видал.
    Хоронили ск2тв, порвали два баяна

  7. #7
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244
    Teodorka, Да, запись чтение с диска, происходит очень долго.

    - - - Добавлено - - -

    Teodorka, НУ и прост ов теории хочу разобратся. Как вот ctrl+c в одной программе нажимаешь и вставляешь в другую. Или перетаскиваешь файл мышкйо в другую программу. Насколько я понимаю это именно оно.

  8. #8
    Активный участник Аватар для GorBushka
    Регистрация
    16.12.2013
    Сообщений
    3,083
    Спалланцани, один черт, данные должны быть в памяти, хоть в какой. Если перезапись на жесткий диск долгая, то нужно их хранить в оперативке во время работы, время доступа к ней на порядки меньше времени доступа к харду. Или SSD поставить.

    - - - Добавлено - - -

    то есть, перед тем, как программа сможет воспользоваться данными, они в любом случае должны где-то быть записаны.

  9. #9
    Активный участник Аватар для ilyuzhko
    Регистрация
    02.08.2010
    Адрес
    Троллололэнд
    Сообщений
    1,558
    SOAP не подходит?

  10. #10
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244
    GorBushka, Логика понятна. В данном случае, речь идет о нескольких программах. А не одной программе с единым адресным пространством.
    Нет возможности напрямую обращатся к памяти другой программы. Но какая-то возможность организовать обмен данными существует. Вот и вопрос а что прочитать то по этому поводу.

    - - - Добавлено - - -

    Цитата Сообщение от ilyuzhko Посмотреть сообщение
    SOAP не подходит?
    Насколько я понимаю, это стандарт самих сообщений, а не то как их передавать. То есть это более высокий уровень.
    И хотелось бы чтобы прогарммы имели доступ, к какой-то памяти. А не пересылать. Хотя можно и пересылать.

  11. #11
    Активный участник Аватар для _Panzer
    Регистрация
    18.11.2013
    Сообщений
    3,061
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    _Panzer, Ну по возможности, хотелось бы чтобы эти данные были доступны из нескольких приложений. А не копировались бы из одно области видимости в другую.
    Клиент-серверная архитектура.

  12. #12
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244
    Цитата Сообщение от _Panzer Посмотреть сообщение
    Клиент-серверная архитектура.
    Это очень широкое понятие. Хотелось бы более конкретно.

  13. #13
    Активный участник Аватар для _Panzer
    Регистрация
    18.11.2013
    Сообщений
    3,061
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Как вот ctrl+c в одной программе нажимаешь и вставляешь в другую. Или перетаскиваешь файл мышкйо в другую программу. Насколько я понимаю это именно оно.
    Это обмен сигналами (сообщениями).

    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Нет возможности напрямую обращатся к памяти другой программы
    Есть, но в твоём случае это не то.

    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Вот и вопрос а что прочитать то по этому поводу.
    Гугли готовые примеры для языка X и изучай код.

  14. #14
    Активный участник Аватар для GorBushka
    Регистрация
    16.12.2013
    Сообщений
    3,083
    Спалланцани, с чего ты взял, что обмен происходит через запись данных на жесткий?
    Вообще, решение, где, как и когда использовать память ( процессорный кэш, оперативку или хард ) при обеспечении параллельной работы нескольких процессов или программ - это все иключительно уровень ядра операционной системы и ниже, вплоть до контроллеров шины и отдельных устройств. На уровне программиста-прикладника это не решается. Откуда ты знаешь, что система работает неоптимально?

  15. #15
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244
    GorBushka, Есть код исходный, и спецификаций. Исторически так сложилось, что разные модулю программы были реализованы именно как разные программы, и так и развивались. Возможности переписать код с нуля, и обьеденить в единую программу нет. А вот убрать запись на диск есть.

    Скорость программы видна на уровне тестов, замеряем сколько времени уходит на запись чтение.

  16. #16
    Сделай через Shared Memory или Named Pipe/Local Domain Sockets. Способов межпроцессорного взаимодействия множество, у всех есть свои плюсы и минусы и своя область применения. Если у тебя сейчас через общий файл сделано и ты находишь, что тебе не хватает производительности, то переделай через Shared Memory, это потребует минимальных изменений архитектуры ПО и должно теоретически работать быстрее. Если тебе стало не удобно пользоваться самой концепцией файла (мало ли, может все упирается в локи, которые также будут и у Shared Memory), то попробуй локальные сокеты (см. первое предложение, вторую часть). Дальше - больше, открывай в вики топик про IPC и смотри, что еще есть по этой теме.
    Последний раз редактировалось Heart; 21.08.2014 в 15:59.
    such troll. much wow.

  17. #17
    Активный участник
    Регистрация
    17.05.2010
    Сообщений
    2,515
    Цитата Сообщение от Спалланцани Посмотреть сообщение
    _Panzer, Ну по возможности, хотелось бы чтобы эти данные были доступны из нескольких приложений. А не копировались бы из одно области видимости в другую.

    А на сколько я понимаю в сокетах, именно будет проихсодить копирования. Но я запомню.

    - - - Добавлено - - -



    Нет в оперативной памяти.
    Хранить на одной базе не варик?

  18. #18
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244
    Цитата Сообщение от DieMust Посмотреть сообщение
    Хранить на одной базе не варик?
    Именно это я и хочу. Только нужно чтобы эти базы не сохраняли на диск сами ничего.

  19. #19
    Активный участник Аватар для _Panzer
    Регистрация
    18.11.2013
    Сообщений
    3,061
    Цитата Сообщение от GorBushka Посмотреть сообщение
    решение, где, как и когда использовать память ( процессорный кэш, оперативку или хард ) при обеспечении параллельной работы нескольких процессов или программ - это все иключительно уровень ядра операционной системы и ниже, вплоть до контроллеров шины и отдельных устройств. На уровне программиста-прикладника это не решается.
    Жжёшь, дружище

    - - - Добавлено - - -

    Цитата Сообщение от Спалланцани Посмотреть сообщение
    Именно это я и хочу. Только нужно чтобы эти базы не сохраняли на диск сами ничего.
    Тогда используй in memory database. SQLite хорошо подойдёт.

  20. #20
    Активный участник
    Регистрация
    26.02.2011
    Сообщений
    9,244
    Тогда используй in memory database. SQLite хорошо подойдёт.
    Запомню.

Страница 1 из 5 123 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вопрос экспертам(MFC)
    от Спалланцани в разделе Софт
    Ответов: 12
    Последнее сообщение: 23.07.2014, 22:24
  2. Ответов: 6
    Последнее сообщение: 26.03.2014, 16:51
  3. Загадка скучающим экспертам ( экономическая )
    от _Panzer в разделе Политика: новости и дискуссии
    Ответов: 15
    Последнее сообщение: 24.03.2014, 19:41
  4. Вопрос скучающим экспертам (юридический)
    от _Panzer в разделе Политика: новости и дискуссии
    Ответов: 12
    Последнее сообщение: 23.03.2014, 23:02
  5. Ответов: 18
    Последнее сообщение: 01.02.2012, 11:25

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •