我和我的朋友正在开发一个项目,到目前为止这是输入:
以下是我们要实施的内容:
我的问题是“我们应该使用哪些技术来实现这些功能以及步骤是什么?”
到目前为止,我一直在研究ActiveX,使用SignalR创建HttpListener,使用自定义URL协议,所有内容都混淆了,所以我有点困惑。
我很感激有关这种情况的任何建议或意见。谢谢
更新
澄清:
该站点及其与DB的通信是用JavaScript,RubyOnRails和Python编写的,并且托管在* nix系统上。
通过应用程序查询命令轮询服务器对我来说似乎不合适,因为用户期望对他的行为做出快速反应。 显然,应用程序和服务器之间必然存在一些联系,问题是什么样的连接以及如何实现它
答案 0 :(得分:2)
我建议调查WCF。确保将WCF服务器配置为使用SSL(可能是双向),并且它应该是相当安全的。我假设你知道,或者可以找到如何创建安全的PKI凭证/证书。
您可以让您的Web服务器通过打开与WCF服务器的连接(可能是HTTP)并发出SOAP(或普通旧XML)请求来响应某些请求,WCF服务器会解释并使用该请求与现金机器进行交互
那么:
用户网络浏览器 - > Web服务器+ SOAP客户端 - > .NET驱动程序应用程序+ WCF服务器 - >取款机
首先,确定您的“服务合同”将是什么(即您希望您的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。