Что использовать для обмена сообщениями с помощью C#
Вопрос
Итак, моя компания хранит большое количество данных в базе данных 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 замедляет операцию записи, поскольку индексы нуждаются в обновлении, и поскольку вы не читаете непосредственно из таблицы (или, предположительно, не запрашиваете напрямую), вам не понадобится очень много индексов.Возможно, вы также захотите взглянуть на любые триггеры или правила полей в таблицах, поскольку они могут замедлять операцию записи.Однако убедитесь, что ваша ссылочная целостность по-прежнему сохранена..