Перенос объектов между двумя независимыми приложениями (C #) - PullRequest
4 голосов
/ 08 апреля 2010

возможно ли перенести объект из одного приложения в другое (в C #)?

Я работаю с CAD API. Инициализация этого API занимает несколько секунд (10 - 15). Было бы хорошо, если бы я мог инициализировать объект только один раз в App1 и вызывать его из App2 всякий раз, когда мне это нужно.

Есть идеи? Спасибо!

Ответы [ 3 ]

6 голосов
/ 08 апреля 2010

Вы можете сделать это путем сериализации вашего объекта и использования любой формы межпроцессного взаимодействия для передачи данных, а затем десериализации их на другом конце.

Windows Communication Foundation специально подходит для этого типа сценария и обрабатывает большую часть сантехники для вас.

1 голос
/ 08 апреля 2010

Еще более простой возможностью, на мой взгляд, является использование разделяемой памяти. Это распространенный механизм межпроцессного взаимодействия под Windows. Возможно, вы захотите взглянуть на связанную статью CodeProject .

1 голос
/ 08 апреля 2010

Хотя предложение Рида совершенно хорошее, оно не может быть единственной возможностью, заслуживающей рассмотрения. 10-15 секунд инициализации довольно долго. Это может быть инициализация некоторых довольно больших, сложных структур данных, которые могут занять много времени для сериализации и десериализации. Если это так, возможно, стоит рассмотреть другую возможность, такую ​​как создание сервера COM (или DCOM) вне процесса, который выступает в качестве внешнего интерфейса для CAD API, а затем позволить и App1, и App2 работать с этим сервером в одно место. Это будет означать упорядочение и удаление всех данных, которые вы отправляете / получаете из CAD API, но в зависимости от того, сколько данных задействовано и (особенно) как часто вам нужно будет переключаться с их использования в App1 против App2, может иметь более низкие накладные расходы.

...