在编写新的 c# 应用程序来替换 vb6 应用程序时,可以使用什么来替换 COM 对象?

When writing a new c# app to replace a vb6 app, what can be used to replace COM objects?

背景:

我有一个旧的 vb6 应用程序,我真的需要它离开我的生活。我喜欢用 c# 编写代码,想制作一个应用程序来替换旧的 vb6 应用程序。

vb6 应用程序有一个通过 IIS 安装的组件应用程序,主 GUI vb6 应用程序连接到该应用程序用于各种目的。 COM app/components 存在的原因是所有完成的事情都来自同一来源。

Ex:我正在远程工作,需要连接到只能从我的工作网络访问的 FTP 服务器。主 GUI 应用程序连接到 COM 对象,发出命令,然后该组组件从我的工作 network/ip(而不是我的家 network/ip)创建 FTP 连接。

问题:

在替换这个旧的应用程序 GUI 和 COM 对象时,c# 中的最佳方法是什么?我是不是还要用我最讨厌的那个旧的Component Services?或者是否有更新、更好的方法来完成同样的任务?

使用需要 COM 的 FTP 没有什么特别之处(当然用 C# 编写 GUI 也不需要 COM)。

如果我这样做:

确保通过适当的 interfaces/patterns 将 GUI 与后端通信分开,这样您就可以更轻松地替换东西 "future-proof" 您的应用程序。

编辑:

那么,您真正想要的是:我怎样才能拥有一个通过各种方式与后端对话的 GUI 前端?

所以,对此有很多答案,基本上可以归结为:不要那样做,"pick a lane and stick to it",或 "Use WCF"。

WCF(Windows通信框架https://docs.microsoft.com/en-us/dotnet/framework/wcf/whats-wcf ) is a back-end server side technology that supports multiple communication protocols simultaneously, but generally allows you to interact between client and server. SOAP was originally the popular choice, but it also supports Remoting (which you alluded to), you can send attachments via DIME which is then like FTP, or you can roll-your-own and do anything you want (e.g. using Capn Proto (https://capnproto.org/)发送二进制消息)。

或者,如果您可以避免尝试做任何事情,您可能想要研究 REST,而不是 Web API (https://msdn.microsoft.com/en-us/library/dn448365(v=vs.118).aspx ) 支持的 REST。这将允许您来回发送轻量级数据,现在通常 "the way it's done"。

祝你好运!