通过.NET 1.1调用.NET 4.0组件

时间:2011-03-24 21:33:58

标签: wcf .net-4.0 .net-1.1 .net-remoting

我在一家金融机构工作,在一个团队中,他负责管理一个“自制”的企业组件。这个组件是使用.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来统一这两个部分。虽然我们可以使用通过HTTP绑定公开的WCF服务(.NET 1.1组件使用它,因为它是ASMX Web服务),但.NET Remoting已证明其性能优于先前的解决方案,但它是一个遗留框架(http: //msdn.microsoft.com/en-us/library/kwdt6w2k.aspx)。

我想知道的是,如果你们有另一个想法来做这个互操作。有没有办法调用.NET 1.1客户端使用netTCP绑定公开的WCF服务?

非常感谢!

2 个答案:

答案 0 :(得分:2)

真正的解决方案是克服迫使您使用不受支持的软件(.NET 1.1)的问题。然后你就不必做下面的可怕事情了:

  1. 创建.NET 4.0类库。
  2. 向WCF服务添加服务引用。
  3. 创建可用于调用WCF服务的类和接口。
  4. 将它们公开为COM类和接口
  5. 让您的.NET 1.1代码使用COM对象并通过它进行调用

  6. 将“比较您在尝试使用过时的不受支持的代码工作时花费的精力与您刚刚完成的新的有用工作量”。

  7. 另请注意,就使用WCF等现代软件的能力而言,这种技术非常正确地将.NET 1.1置于与Classic ASP相同的类别中。

    最后,请注意我还没有找到一种方法让WCF客户端在这种情况下使用配置文件。有必要在代码中配置它。

答案 1 :(得分:1)

您是否有理由无法移植组件并拥有两个版本(1.1版本和4.0版本)?这将使旧版应用程序继续使用该组件,但您的4.0版本可以使用更新的版本,而不会出现您提议的解决方案中所需的所有复杂性。

.net程序集的不同版本可以很好地相互配合,您不必只拥有该组件的一个版本。