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

时间:2015-03-20 12:55:07

标签: c# wcf web signalr activex

我和我的朋友正在开发一个项目,到目前为止这是输入:

  1. 有一个类似CRM的网站,用JSm编写,带有自己的数据库,身份验证和所有内容,托管在* nix系统上。
  2. 将控制取款机插入用户的电脑
  3. 有一个.Net应用程序,它是现金机器驱动程序的包装器。
  4. 以下是我们要实施的内容:

    1. 用户在装有自动提款机的机器上安装.Net应用程序,并在网站上注册;
    2. 每当用户点击网站上的按钮时,与用户.Net应用程序相关联运行方法带有参数(基于来自网站的数据),与自动提款机交互(注册购买,打印支票等); < / LI>
    3. 用户可以从其他机器登录到网站,而不是插入自动取款机的网站,并且仍然可以向.Net应用程序发送命令;
    4. 服务器和.Net应用程序之间的通信必须安全。
    5. 我的问题是“我们应该使用哪些技术来实现这些功能以及步骤是什么?”

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

      我很感激有关这种情况的任何建议或意见。谢谢

      更新

      澄清:

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

      通过应用程序查询命令轮询服务器对我来说似乎不合适,因为用户期望对他的行为做出快速反应。 显然,应用程序和服务器之间必然存在一些联系,问题是什么样的连接以及如何实现它

1 个答案:

答案 0 :(得分:2)

我建议调查WCF。确保将WCF服务器配置为使用SSL(可能是双向),并且它应该是相当安全的。我假设你知道,或者可以找到如何创建安全的PKI凭证/证书。

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

那么:
用户网络浏览器 - &gt; Web服务器+ SOAP客户端 - &gt; .NET驱动程序应用程序+ WCF服务器 - &gt;取款机

首先,确定您的“服务合同”将是什么(即您希望您的Web服务能够做什么),并为其创建一个界面:

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配置为使用plain old XML。我建议您通过一些教程来探索它是如何工作的。这是一个非常陡峭的学习曲线,但是一旦你在工具箱中使用了这个工具,你就会发现它在使用.NET中的Web服务时是必不可少的。

示例实现的一个很好的资源是this post on REST/SOAP endpoints for WCF