2008-08-07 5 views
8

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

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

ответ

6

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

+1

Этот блог больше недоступен – 2013-12-30 09:48:48

0

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

0

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

1

Ее стоит отметить, что ActiveMQ open source project определяет C# API for messaging called NMS, который позволяет разрабатывать против одного C#/.NET API, которые затем можно использовать различные передачи сообщений обратно заканчивается, такие как

  • ActiveMQ
  • MSMQ
  • TibCo's EMS
  • любой поставщик STOMP
  • любой поставщик JMS через StompConnect
0

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

4

MSMQ (Microsoft Message Queuing) может быть отличным выбором. Он является частью ОС и представлен в качестве дополнительного компонента (может быть установлен с помощью «Установка и удаление программ/Компонентов Windows»), что означает, что он бесплатный (как вы уже заплатили за Windows, конечно). MSMQ предоставляет API-интерфейсы Win32/COM и System.Messaging. Более современные Windows Communication Foundation (aka Indigo) queued channels также используют MSMQ. Обратите внимание, что MSMQ не поддерживается в домашних SKU для Windows (домашняя страница XP и Vista Home)

1

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

Смежные вопросы