Что использовать для обмена сообщениями с помощью C#

StackOverflow https://stackoverflow.com/questions/4234

  •  08-06-2019
  •  | 
  •  

Вопрос

Итак, моя компания хранит большое количество данных в базе данных foxpro, и, пытаясь обойти снижение производительности при непосредственном обращении к ней, я подумывал о том, чтобы отправлять сообщения всем, что можно сделать асинхронно, для более быстрого взаимодействия с пользователем.Я начал смотреть на ActiveMQ но я не знаю, насколько хорошо C # справится с этим.Хочу услышать, что вы все, ребята, думаете.

Редактировать :Это будет веб-приложение.Все, что касается этого foxpro, работает довольно медленно (вероятно, потому, что человек, который настраивал его 10 лет назад, все испортил к чертовой матери, некоторые файлы таблиц невероятно большие).Мы реплицируем foxpro на sql каждую ночь, и большинство наших операций чтения данных проходят нормально, поскольку им исполнился день, поэтому мы фокусируемся на записи.кроме того, запись влияет на важную часть пользовательского опыта (покупку), мы сохраняем ее в sql, а затем просто сообщаем, чтобы она была введена в foxpro, когда это возможно.Я хотел бы, чтобы мы могли просто избавиться от foxpro, к сожалению, компания не хочет избавляться от очень старого программного обеспечения, которое они купили и которое зависит от него.

Это было полезно?

Решение

ActiveMQ хорошо работает с C #, используя Spring.СЕТЕВЫЕ интеграции и NMS.Пост с несколькими ссылками, которые помогут вам начать двигаться в этом направлении находится здесь.Также рассмотрите возможность использования MSMQ (пространство имен System.Messaging) или решения для асинхронного обмена сообщениями на базе .NET с вот несколько вариантов.

Другие советы

MSMQ (организация очереди сообщений Microsoft) может оказаться отличным выбором.Он является частью операционной системы и присутствует как дополнительный компонент (может быть установлен через "Установка / удаление программ / компонентов Windows"), что означает, что он бесплатный (при условии, что вы уже заплатили за Windows, конечно).MSMQ предоставляет Win32 /COM и Система.Обмен сообщениями АПИс.Более современная Windows Communication Foundation (она же Indigo) каналы , поставленные в очередь также используйте MSMQ.Обратите внимание, что MSMQ не поддерживается в артикулах Home в Windows (XP Home и Vista Home).

Стоит отметить, что Проект ActiveMQ с открытым исходным кодом определяет C # API для обмена сообщениями называется NMS это позволяет вам разрабатывать на основе единого C # / .Net API, который затем может использовать различные серверные части обмена сообщениями, такие как

  • ActiveMQ
  • MSMQ
  • Служба скорой помощи TibCo
  • любой поставщик услуг STOMP
  • любой поставщик JMS через Подключать

Возможно, вы захотите взглянуть на MSMQ.Он может использоваться .NET и VFP, но вам нужно будет переписать, чтобы использовать их.Вот статья, в которой рассказывается, как использовать MSMQ из VFP. http://msdn.microsoft.com/en-us/library/ms917361.aspx

Извините, если это не то, о чем вы просите...Рассматривали ли вы какой-нибудь скрытый кэш, который действует немного как "система корзин" при использовании асинхронных сокетов в c / c ++ с использованием winsock?В основном, он работает, принимая запросы и немедленно отправляя ответ обратно в веб-приложение, а когда ему, наконец, удается найти вашу запись, он обновляет ее в приложении с помощью AJAX или любой другой технологии по вашему выбору.Поскольку я не программист на C #, я не могу привести какой-либо конкретный пример.Надеюсь, это поможет!

Использует ли приложение Fox индексы .CDX?Если это так, вы могли бы повысить производительность, добавив индексы без необходимости изменять какой-либо программный код.Однако, если он использует индексы .IDX, изменение должно быть выполнено в самом приложении.

Поскольку проблема связана с записью, я бы больше смотрел в сторону > удаления< любые ненужные индексы в таблицах.Как это принято в СУБД, каждый индекс в таблице FoxPro замедляет операцию записи, поскольку индексы нуждаются в обновлении, и поскольку вы не читаете непосредственно из таблицы (или, предположительно, не запрашиваете напрямую), вам не понадобится очень много индексов.Возможно, вы также захотите взглянуть на любые триггеры или правила полей в таблицах, поскольку они могут замедлять операцию записи.Однако убедитесь, что ваша ссылочная целостность по-прежнему сохранена..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top