.Net Remoting без использования .Net Remoting? - PullRequest
3 голосов
/ 22 мая 2009

Я после некоторого совета больше всего на свете.

У меня есть следующий пример:

Appication1.exe - Имеет объект MyList

Application2.exe - Необходимо получить доступ к MyList и взаимодействовать с объектом, как если бы он был создан из Application2.

Должен ли я использовать .NET Remoting (то есть 2.0) или WCF или другой стек технологий? Какие рамки доступны для поддержки этого? Каковы преимущества / недостатки каждого?

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

Ответы [ 4 ]

8 голосов
/ 22 мая 2009

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

Однако существуют десятки способов переноса данных из одного приложения в другое, и все они имеют свои плюсы и минусы. Полное обсуждение всех этих методов выходит за рамки этого комментария. Можете ли вы добавить более подробную информацию о вашем сценарии использования? Какие данные находятся в этом списке, насколько они велики, откуда они взялись, какие изменения вносятся, нужно ли приложению 1 видеть эти изменения, собирается ли приложение 2 отправлять данные в другое место, когда оно сделано и т.д ...

3 голосов
/ 22 мая 2009

Я предполагаю, что Приложение 1 - это производственное приложение, а Приложение 2 - вспомогательное приложение только для разработки. Если это так, ваша цель должна состоять в том, чтобы минимизировать или устранить любые дополнительные издержки в Приложении 1, связанные с поддержкой Приложения 2. Так что WCF, который является очень тяжелым, должен быть исключен как опция. Удаленное взаимодействие также добавляет накладные расходы.

Вы можете сериализовать объект - возможно, XML подойдет для этого?

В этом вопросе слишком много переменных, чтобы ответить на него полностью. Можете ли вы предоставить больше информации о Приложении 1 и Приложении 2? Куда они бегут? Часто ли интересующие вас объекты меняются? Как они сохраняют государство?

1 голос
/ 22 мая 2009

Сложно сказать. WCF, безусловно, возможно. Вы, конечно, должны контролировать оба приложения и изменить App1 для поддержки (в модели push или pull) передачи данных в App2. Если вам не обязательно нужен обмен данными по требованию, вы можете рассмотреть базу данных как способ передачи данных esp. если App1 уже записывает некоторые данные в базу данных. Тогда вы можете заставить App2 взять нужные данные оттуда. Или вы могли бы даже использовать файловую систему, если обмен случается не часто. Сериализуйте список и возьмите его с App2. (Я только предлагаю это, потому что, похоже, вы пытаетесь подключить инструмент разработки к тому, что уже существует).

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

0 голосов
/ 22 мая 2009

Я думаю, что разумным выбором является использование .NET Remoting. Вы должны были бы раскрутить веб-сервис на Application1 для Application2, чтобы поговорить с. Единственным реальным недостатком является то, что «MyList» должен быть отмечен с помощью MarshalByRefObject. MSDN говорит, что Remoting теперь легенда (.NET 3.0) в пользу WCF. Но, насколько я знаю, Remoting - единственная игра в городе для общения между приложениями.

...