Nano Hash - криптовалюты, майнинг, программирование

Вызов работающего приложения C # из VBA

У меня есть код VBA, который должен взаимодействовать с запущенным приложением C #. Как бы то ни было, приложение C # работает как служба и предоставляет интерфейс через удаленное взаимодействие .net.

Я разместил вопрос относительно конкретной проблемы, с которой я уже столкнулся (От VB6 до .net через COM и удаленное взаимодействие ... Какой беспорядок!), но я думаю, что моя структура может быть неправильной ...

Итак, я делаю шаг назад - как лучше всего это сделать? Одна вещь, которую стоит принять во внимание, - это то, что я хочу вызвать работающее приложение, а не просто вызвать предварительно скомпилированную DLL ...

01.04.2010

Ответы:


1

Раньше я делал нечто подобное с помощью очереди сообщений Microsoft. Оба языка / платформы могут читать / писать в очередь.

В моем сценарии у нас была устаревшая база данных Access, которую нам нужно было поддерживать. Мы хотели отойти от него и заменить его более надежным .NET-решением. Чтобы получить данные в реальном времени из текущей системы в новую систему, мы добавили код VBA для записи данных в очередь сообщений. Затем мы написали службу Windows на C # для обработки этих данных в новой системе.

Я не совсем уверен в том, что вы делаете, так что это может не подходить, но я подумал, что упомяну об этом.

01.04.2010
  • Привет, спасибо за предложение. Если нет другого пути, я бы предпочел не писать / поддерживать какой-либо код VBA. Для этого решения мне нужно было бы определить кучу типов сообщений и написать код на обоих концах (c # и vba), который будет упаковывать / распаковывать сообщения. 01.04.2010

  • 2

    Я придумал решение, используя мою исходную структуру ...

    То есть приложение VBA вызывает приложение-оболочку COM, которое переводит все типы из .Net в безопасные типы COM. Затем эта оболочка вызывает основную службу, используя удаленное взаимодействие .net.

    Проблема, с которой я столкнулся, заключалась в том, что общие библиотеки DLL между оболочкой и службой должны были находиться в папке C: \ Program Files \ Microsoft Office \ Office12 (вместе с msaccess.exe).

    Пока я использовал метод AssemblyResolve для предоставления библиотек DLL во время выполнения, это не сработало ... Так что пока мне просто нужно скопировать библиотеки DLL в папку - далеко не элегантное решение, но, по крайней мере, связь работает сейчас.

    01.04.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..