Вызов компонента .NET 4.0 с помощью .NET 1.1

Я работаю в финансовой организации, в команде, которая занимается "домашней" корпоративной составляющей. Этот компонент был создан с использованием .NET 1.1, и другие команды часто используют его, особенно вместе с устаревшими системами (теми, которые все еще находятся в .NET 1.1)!

Теперь мы хотим обновить этот компонент до .NET 4.0, чтобы мы могли использовать некоторые новые функции (на самом деле мы хотим использовать Websphere MQ, и его библиотека .NET была построена поверх .NET 2.0). Однако мы не можем просто изменить время выполнения нашего компонента, потому что наши внутренние клиенты не могут позволить себе обновление своих систем.

Итак, нам нужно, чтобы компонент .NET 1.1 работал как прокси для некоторой службы, встроенной в .NET 4.0. Вот откуда у меня возник вопрос: как можно сделать эту интероперабельность? Мой первый ответ заключался в использовании .NET Remoting 4.0 для связи этих двух частей. Хотя мы можем использовать службу WCF с привязкой HTTP (компонент .NET 1.1 использует ее как веб-службу ASMX), .NET Remoting доказал свое преимущество в производительности по сравнению с предыдущим решением, но это устаревшая структура (http: //msdn.microsoft.com/en-us/library/kwdt6w2k.aspx).

Я хотел бы знать, есть ли у вас, ребята, другая идея для этого взаимодействия. Есть ли способ вызвать службу WCF с привязкой netTCP клиентом .NET 1.1?

Большое спасибо!


person Fabio    schedule 24.03.2011    source источник


Ответы (2)


Реальное решение состоит в том, чтобы избавиться от проблем, которые заставляют вас использовать неподдерживаемое программное обеспечение (.NET 1.1). Тогда вам не придется делать такие ужасные вещи, как следующие:

  1. Создайте библиотеку классов .NET 4.0.
  2. Добавьте ссылку на службу в службу WCF.
  3. Создайте классы и интерфейсы, которые можно использовать для вызова службы WCF.
  4. Выставляйте их как COM-классы и интерфейсы
  5. Пусть ваш код .NET 1.1 использует COM-объект и выполняет вызовы через него.

  6. Было бы так: «сравните количество усилий, которые вы только что потратили на то, чтобы заставить работать устаревший неподдерживаемый код, с объемом новой полезной работы, которую вы только что сделали».

Обратите также внимание на то, что этот метод совершенно справедливо помещает .NET 1.1 в ту же категорию, что и классический ASP, с точки зрения его способности использовать современное программное обеспечение, такое как WCF.

Наконец, обратите внимание, что я не нашел способа заставить клиент WCF в этой ситуации использовать файл конфигурации. Пришлось настроить это в коде.

person John Saunders    schedule 24.03.2011
comment
Я пробовал этот подход, но помещал библиотеку .NET 4 в пакет COM+ (ситуация, которую мы попробовали и поняли, что в .NET есть ошибка, поэтому объекты в 4.0 не выпускаются COM+, даже вызывая Dispose), я не знал, что это работает без COM+. Я собираюсь тщательно проанализировать это решение, чтобы подтвердить, соответствует ли оно нашему сценарию, хотя я думаю, что да! Большое спасибо, Джон. - person Fabio; 25.03.2011
comment
Между прочим: Реальное решение состоит в том, чтобы избавиться от проблем, которые вынуждают вас использовать неподдерживаемое программное обеспечение -› Я думаю, что мне придется убить некоторых людей, чтобы сделать это :-) Как я уже сказал, я не горжусь использования устаревших технологий, но мы ищем способ избавиться от них. - person Fabio; 25.03.2011

Есть ли причина, по которой вы не можете портировать компонент и иметь две версии (версию 1.1 и версию 4.0)? Это позволит устаревшим приложениям продолжать использовать этот компонент, но ваш материал 4.0 может использовать более новую версию без всей сложности, необходимой в предлагаемом вами решении.

Различные версии сборок .net могут хорошо сочетаться друг с другом, вы не обязаны иметь только одну версию компонента.

person Tridus    schedule 25.03.2011
comment
Привет, Тридус. Нам нужно использовать некоторые функции, которые недоступны для среды выполнения .NET 1.1, поэтому нам нужен этот прокси. [] - person Fabio; 25.03.2011