2010-04-07 2 views
4

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

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

Любые идеи? Благодаря!

ответ

6

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

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

+0

+1 для ссылок и хорошо продуманный ответ – 2010-04-07 21:09:47

+0

Большое спасибо за ваш ответ. Изучит это :-) – iDog

1

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

+0

«Возможно, это инициализация некоторых довольно больших сложных структур данных, которые могут потребовать довольно много времени для сериализации и десериализации». ----- Да, это то, о чем я тоже беспокоился. Так как сериализация и десериализация могут занять 10 секунд. Но я попробую. – iDog

1

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

+0

Спасибо за ссылку! – iDog

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