Является ли System.AddIn главным образом для облегчения использования Remoting или для этого сложнее? - PullRequest
2 голосов
/ 15 ноября 2009

Требуется не менее 7 сборок и ограничение модели данных моего AddIn типами данных, с которыми может справиться удаленное взаимодействие до того, как начинают работать функции изоляции домена приложения. Это так сложно! Блог команд System.AddIn подразумевает, что они пытались воссоздать ментальную модель COM, модель, которую я никогда прежде не понимал, и я не продаю ее преимущества. (Если COM настолько хорош, почему он мертв? - риторический вопрос.) Если мне не нужно отражать или взаимодействовать с устаревшим COM (как VSTO использует System.AddIn), возможно ли просто создать несколько классов, которые загружают загрузку в новый домен приложений?

Я могу написать код обнаружения самостоятельно, я делал это раньше, и наивная реализация довольно быстрая, потому что я не люблю перебирать сборки в GAC!

Итак, мой конкретный вопрос: могу ли я получить изоляцию AppDomain, которую AddIns предоставляют с несколькими фрагментами кода Remoting, и что бы это было?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Я не совсем уверен, что любой ответ на ваш вопрос соответствует условиям сайта - решения не существует.

Да, удаленное взаимодействие проще, поскольку оно сделано для вас. Тем не менее, он строго контролируется и, как вы определили, требует небольшой работы, чтобы соединить все это вместе. Кеш-файл, израсходованный процессом обнаружения, тоже вряд ли приветствуется.

System.AddIn отлично справляется с изоляцией, которая на самом деле является чем-то вроде задницы, чтобы собрать ее с нуля надежным и гибким способом. Он поддерживает межпроцессный хостинг и довольно простой переход пользовательских элементов WPF из одного домена в другой.

Однако следует помнить, что целевой аудиторией MAF являются не те, кто пытается соединить два приложения вместе. Он нацелен на разработчиков, которым нужны подключаемые, но безопасные системы (межпроцессный хостинг защищает корневое приложение от необработанных исключений, домены приложений позволяют выполнять потенциально сторонний код с определенной безопасностью). Из большинства сообщений направьте себя прямо к System.Runtime.Remoting или WCF.

Если вы хотите продолжить работу с System.AddIn, рассмотрите плагин конвейера для visual studio!

В заключение - вы можете получить изоляцию System.AddIn с помощью Remoting, но для получения достойной системы вам потребуется более нескольких фрагментов. Я пытаюсь воспроизвести его сам и отключаю все компоненты удаленного интерфейса - что System.AddIn делает без проблем.

1 голос
/ 28 марта 2010

После недолгой разминки с System.Add, я убежден, что она была добавлена ​​как одноразовое специальное решение для использования Microsoft. Я удивлен, что он поднялся до основной части .NET Framework. Похоже, он не обладает утонченностью и полировкой, необходимой для общего компонента платформы .NET.

Я бы хотел найти альтернативный способ создания управляемых надстроек .NET, который не требует особых усилий.

...