.NET中ActiveX的替代方案是什么?

6
我知道有很多帖子讨论这个问题,但请允许我详细讨论我的问题。
在我们的项目中,我们使用了很多设备(摄像头、打印机、指纹设备、智能卡读取器)在桌面应用程序中,并且我们已经开发了使用它们的SDK来处理这些设备的C#组件。
现在的问题是,我们正在转向Web开发,我们应该将我们的WPF桌面应用程序转换为ASP.NET MVC Web应用程序,并且我们应该使用我们现有的设备组件。
从Web .Net应用程序处理设备的可能解决方案有:
1. 使用ActiveX(已死或即将死亡,需要一些COM经验和非常难以开发)。
2. 使用Silverlight(同样已死或即将死亡,非常有限,无法引用现有的C#组件)。
3. 使用Java Applets(需要一些Java经验,我们将重写现有的C#组件)。
还有其他解决方案吗,以便我们可以通过Intranet从ASP.NET MVC应用程序处理设备?

2
Java Applets在浏览器中已经失去了生命力。 - Snarf
https://dev59.com/q2cs5IYBdhLWcg3wPxce 的被接受的答案可能会有所帮助。 - Abbas Amiri
1
现在的问题是我们正在转向Web开发 - 没错。像这样需要硬件访问的情况下,Web“应用程序”并不适用。保留桌面应用程序,将Web用于其所设计的用途。 - Federico Berasategui
有解决方案了吗?我正在寻找相同的问题。 - Samra
2个回答

1
你可以为ChromeFirefox和Edge(即将推出)编写浏览器扩展程序。如果您需要针对所有浏览器进行目标定位,我不确定您能够获得多少代码重用,并且我不确定在扩展程序中运行任意代码以连接设备的范围有多大,但这是您应该研究的内容。然后,您可以让您的浏览器扩展程序与您的网页通信以传递所需数据。
您的用户需要安装其浏览器的扩展程序才能接收功能。

0

您仍然可以分发基于当前 WPF 应用程序简化版本的小型“辅助”应用程序。这些应用程序将执行设备访问,并直接与您的 Web 服务器通信。网站将作为接口。

这将允许您利用现有的设备通信代码。不足之处在于,它需要在客户端上进行单独安装,这意味着用户需要做更多的事情并且需要保持更新。


我认为这不是一个解决方案。仅仅为了使用糟糕的网络浏览器而将单个 .Net 应用程序分解为多个较小应用程序是一个非常糟糕的决定。 - Federico Berasategui
@HighCore 这是一个完全可行的替代方案,我见过公司使用它。它并不适用于每种情况,但它是一种可能的解决方案。 - mason
这种方法相对于完整的 .Net (WPF) 应用程序有什么优势呢? - Federico Berasategui
@HighCore,问题明确指出他们正在转向Web界面。我不知道为什么。这有很多优点。例如,也许您的网站应该与GPS设备通信,因此您可以利用现有的.NET代码执行同步,同时利用Web在任何设备上运行的能力,一次编写,到处运行。也许他的新老板喜欢Web。或者他们发现雇用Web开发人员比WPF更容易。就像我说的,我不知道转向Web的确切原因,但是稍微想象一下就会发现有理由。 - mason
@HighCore,如果你看不到网络的好处,那没关系。但你并没有为这个讨论做出任何贡献。我没有说.NET应用程序可以在任何地方运行,我说的是Web可以。例如,对于像跟踪慢跑一样的GPS应用程序,也许你想利用现有代码在Windows计算机上执行同步,但用户应该能够从任何计算机、平板电脑或手机上查看当天的情况。而且Web是一次编写,到处运行。现在你只需要一个应用程序,而不是为每个平台维护多个不同的应用程序。这种方法有很多优点。 - mason
@HighCore,我不知道你在说什么“用JavaScript黑客技巧”的事情。你在这里没有做出贡献。有一些原因可能会让人们想从WPF转换到Web应用程序,并且在某些情况下我的解决方案可能是合适的。如果你无法想象出这些情况,那没关系。但当你无法认识到它们的优点时,不要说“它很蠢”或“它很愚蠢”。 - mason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接