Вызов компонента .NET 4.0 с помощью .NET 1.1 - PullRequest
2 голосов
/ 25 марта 2011

Я работаю в финансовом учреждении, в команде работаю над «самодельным» корпоративным компонентом. Этот компонент был построен с использованием .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?

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

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

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

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

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

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

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

1 голос
/ 25 марта 2011

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

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

...