如何实现.net应用程序与网站的通信



我和我的朋友正在开发一个项目,以下是迄今为止的输入:

  1. 有一个类似CRM的网站,用JSm编写,有自己的DB、身份验证和一切,托管在*nix系统上
  2. 有一台控制提款机插入用户的电脑
  3. 有一个.Net应用程序,它是提款机驱动程序的包装器

以下是我们想要实现的:

  1. 用户在插入提款机的机器上安装.Net应用程序,并在网站上注册
  2. 每当用户点击网站上的按钮时,与user.Net相关的应用程序都会运行带有参数的方法(基于网站数据),与提款机交互(注册购买、打印支票等)
  3. 用户可以从另一台机器(而不是插入提款机的机器)登录网站,并且仍然可以向.Net应用程序发送命令
  4. 服务器和.Net应用程序之间的通信必须是安全的

我的问题是"我们应该使用什么技术来实现这样的功能,步骤是什么?"

到目前为止,我一直在研究ActiveX,创建HttpListener,使用SignalR,使用自定义URL协议,所有的事情都在我的脑海中混淆了,所以我有点困惑。

如有任何意见或建议,我将不胜感激。谢谢

更新:

澄清:

该网站及其与DB的通信是用JavaScript、RubyOnRails和Python编写的,并托管在*nix系统上。

对我来说,按应用程序轮询服务器以获取命令似乎不合适,因为用户希望对自己的操作做出快速反应。显然,应用程序和服务器之间必须有某种连接,问题是什么样的连接以及如何实现它

我建议研究WCF。请确保将WCF服务器配置为使用SSL(可能是双向),并且它应该是合理安全的。我假设您知道或能够了解如何创建安全的PKI凭据/证书。

您可以通过打开与WCF服务器的连接(可能是HTTP)并发出SOAP(或普通的旧XML)请求来让web服务器对某些请求做出响应,WCF服务器会解释该请求并使用该请求与提款机进行交互。

那么:
 nbsp;用户网络浏览器—>web服务器+SOAP客户端—>。NET驱动程序应用程序+WCF服务器—>提款机

首先,决定你的"服务合同"是什么(也就是说,你希望你的网络服务能够做什么),并为它创建一个接口:

namespace MyCashMachine
{
        [ServiceContract(Namespace = "http://example.com/CashMachine")] //Note that this is the xmlns-namespace used in the WSDL/schema, not your endpoint.
        public interface ICashMachineService
        {
            [OperationContract]
            void GimmehMoniez(int howMuch);
            [OperationContract]
            boolean UHazMoniez();
            [OperationContract]
            int GetMoniezLeft();
        }
}

然后实施您的服务!

namespace MyCashMachine
{
    /* Make the machine spit money! */
    public class CashMachineService : ICashMachineService
    {
        public boolean GimmehMoniez(int howMuch)
        {
            try {
                CashMachine.eject(howMuch); //I don't know what methods your driver exposes...
                return true;
            } catch (CashMachineException cme) {
                return false;
            }
        }
    }
/* and so on */
}

然后将WCF配置为在连接到提款机的机器上运行。为此,请参阅数百个教程中的一个,或阅读MSDN文档。

Ruby和Python中有一些库可以帮助您处理SOAP web接口,而不必从头开始构建SOAP请求。

您还可以将WCF配置为使用普通的旧XML。我建议您阅读一些教程,了解它的工作原理。这是一个非常陡峭的学习曲线,但一旦你的工具箱里有了这个工具,你就会发现它在用.NET.中的web服务做任何事情时都是必不可少的

关于WCF的REST/SOAP端点的这篇文章是一个很好的示例实现资源。

相关内容

最新更新