Exe as Webservice Endpoint

时间:2018-02-02 08:32:03

标签: rest web-services

我有一个webservice端点,我很清楚如何正确实现它。 它似乎是一个参数化的exe文件,它返回一个XML Reply。 没有文档。

我习惯了肥皂,wcf和休息,但这对我来说完全不为人知,是否有人提供指导或最佳案例如何实施此类服务? 我可以通过HTTP GET使用它,但还有一些问题留给我:

我知道这些问题非常广泛......但我在interwebz中找不到任何关于它的内容。

  • 是否有一种安全的方式将exe文件发布为webservice?
  • 实施这样的界面是否有任何重大缺点?
  • 让我自己变成傻瓜,这只是一个别名?

示例网址: http://very.exhausting.company/Version/SuperStrange.exe?parameter=String

1 个答案:

答案 0 :(得分:4)

网络服务器

您所谓的Web服务端点只不过是在某个主机上侦听的Web服务器(通常为0.0.0.0)以及物理机或虚拟机上的某个端口,并对发送到该主机的端口的HTTP请求进行响应和Web服务器关心处理的URI。

任何Web服务器本身都是应用程序或应用程序的静态或动态组件,如以下示例所示:

  • JBoss,Glassfish,Tomcat等是应用程序,称为应用程序服务器,其中部署了实现Web服务器和相应端点的容器/ servlet /插件。这些侦听某些端口,暴露通用Web服务器将请求路由到这些容器及其servlet;
  • 在JVM上以java -jar开头的胖罐,它部署了一个vert.x顶点,其中vert.x HttpServer监听某个端口只不过是一个Web服务器; < / LI>
  • 解释器如node.js解析并执行基于express模块的JavaScript代码很可能会在某个端口上部署Web服务器;
  • 最后,使用C ++或Go等语言编写的静态或动态链接应用程序可以在某个端口上公开Web服务器列表。

以上所有情况都有不同的部署机制,但它们部署的内容基本相同:一个软件在某个端口上侦听HTTP请求,根据请求执行某些逻辑并将HTTP响应返回给调用者。 / p>

您的Windows exe文件很可能是提供Web服务器的静态链接应用程序。

<强>协议

因此,我们知道您有一个Web服务器,因为它对HTTP GET作出反应。它与REST,SOAP等有何关系?实际上,REST,SOAP等是更高级别的协议。 TCP是低级别的,HTTP基于此,您的服务器支持它。 REST,SOAP以及您提到的所有其他内容都是基于HTTP的更高级协议。所有你知道的是你的应用程序(Web服务器)支持HTTP,但你不知道它实现了哪种更高级别的数据交换协议。它肯定实现了一些,至少是一个自定义的,它的作者在客户端和这个应用程序之间交换数据。

您可以尝试对其进行反向工程,但目前尚不清楚如何找到所有可能的端点,参数,有效负载结构,已接受的标头等。基本上,您有一个Web服务器发布某种API,但是没有通用的方法来告诉API是什么。

安全

您周围的世界无需了解API的发布方式。您可以将上述4个Web服务器实现中的任何一个置于完全相同的防火墙或具有SSL终止的反向代理,仅通过SSL暴露一个主机和端口。因此,对于世界而言,无论是将其作为exe还是作为战争部署到JBoss中,安全性都没有区别。这并不是说你的exe文件是安全的:取决于它的实现方式,它可能允许各种攻击,但同样,对于任何机制都是如此。