我目前正在开发一个企业 Intranet 应用程序。我希望能够让用户安装 Windows 服务或某种可以与我们当前正在构建的 ASP.NET 网站交互的程序。
目标是单击网站上的按钮并允许它与当前用户的计算机进行通信,从而允许我创建 Outlook 电子邮件草稿以及其他只能使用本地安装的程序才能完成的任务。
我怎么能做到这一点?理想情况下,我们需要它在所有浏览器上工作,或者至少在 IE、Chrome 和 Firefox 上工作。
创建一个在本地运行的“worker”程序并将其与某些文件扩展名(例如 *.sbonskosky)相关联。
当您的 Web 应用程序想要向本地程序发送一些工作时,让它生成一个 *.sbonskosky 文件,该文件使用浏览器下载并由相关程序“执行”。类似于当浏览器要求“打开或保存”PDF 并且您选择“打开”时,它会启动 Acrobat。
如果您可以将客户端操作系统限制为 Windows,那么 ClickOnce 就是您的最佳选择。所有主流浏览器都支持它。
基本上,您创建一个桌面应用程序并让它从服务器部署。当在客户端时,应用程序可以与所有本地组件交互,因为它在本地特权用户上工作。
我现在用我们的网站和客户端计算机做类似的事情。基本上,我们拥有的是一个 DLL,它通过安装程序安装到我们的每台客户端计算机上。然后在我们的网页上,有一个通过JNI调用DLL的小程序。当用户单击某个按钮或链接时,小程序与 C++ DLL 对话,后者调用 C# DLL 来执行客户端代码。
由于您在用户机器上运行了一个应用程序,因此您可以在该应用程序中托管 WCF 服务并将其绑定到特定端口(例如 44444)。然后从您的 Web 应用程序发送 http 请求到 localhost:44444。因此,当用户单击网页上的按钮时,它会向本地计算机上运行的服务器发送请求。希望这可以帮助。