【问题标题】:POSTing to the web in Clarion [closed]在 Clarion 中发布到网络 [关闭]
【发布时间】:2009-11-25 10:25:04
【问题描述】:

我正在为客户开发一个 RESTful API。问题是,他使用的是一种相当晦涩的语言,叫做 Clarion。它是专有的和封闭的,文档不能在线免费获得。

每当我们讨论将数据从他的代码传递到我的代码并再次返回时,他都会开始谈论“ftp 文件上传”和直接服务器到服务器的 SQL。不用说,这些想法带回了过去糟糕日子的景象。我做了一些谷歌搜索,我找不到任何证据表明这种语言完全能够创建 HTTP Post 请求,更不用说使用 SSL 加密来保护它们免受窥探了。

我正在寻找足够具体的建议,以便我可以指导他完成交易。我特别想避免尝试通过 FTP 将 XML 请求作为文件传递,或者将它们写入磁盘并调用一些脚本。不用说,但我也对在我的服务器上运行专有的 clarion 服务器代码或 DLL 不感兴趣。

Clarion 是否能够生成 POST 请求?在 Clarion 中很难生成 XML 吗?是否有更简单/更容易使用的格式,我的客户可能会更成功?没有任何数据比键/值对更复杂。

我正在使用 python 编码,但如果有某种方法可以将数据传输到我的服务器,我可以反序列化任何合理的数据格式。

【问题讨论】:

  • Clarion 是一款出色的开发工具,您可以用它做任何您想做的事情。像 Bruce 所说的第三方工具可以加快流程并隐藏与编程相关的复杂性。最后,你会得到一个编译好的二进制文件,它可以分发到 Windows 机器上,并且运行稳定。

标签: http network-programming clarion


【解决方案1】:

我感觉到你的痛苦。系统之间的通信可能是一个主要的痛苦。不过好消息是 Clarion 可以处理 TCP/IP 和 XML(需要一点帮助),所以没有什么可以阻止您的 Clarion 同事。

为了全面披露,我应该指出我在这里有偏见 - 我将建议 Clarion 的人使用我创建的工具 - 但是有成千上万的 Clarion 程序员在使用它们,他们提供你的问题的答案,所以请原谅我。喜欢的请忽略。

在 Clarion 中有几个工具可以简化 TCP/IP 通信并启用 SSL。我制作的那个叫做 NetTalk (http://www.capesoft.com/accessories/netsp.htm)。

Clarion 盒子内还支持 XML,尽管它不必要地繁琐,因此他至少可以使用 2 个 xml 产品 - iqXML(免费)和 xFiles (http://www.capesoft.com/accessories/xfilessp.htm),旨在超快速。

同时使用 NetTalk 和 xFiles 可以轻松创建 SOAP 服务器或客户端。 (或者你喜欢的普通 HTTP 服务器和客户端。)有很多人这样做,所以绝对没有理由使用共享文件或 FTP 请求。我建议您轻轻地将您的 Clarion 朋友指向正确的方向。

如果您想通过其他 Clarion 开发人员来解决这个问题,请尝试 http://faq.clarionmag.com/(它使用 StackOverflow 引擎。)在 news.softvelocity.com 上也有许多活跃在 NNTP 协议(​​新闻)上的程序员(comp.lang.clarion 等)。

干杯 布鲁斯

【讨论】:

  • 谢谢布鲁斯!这正是我需要的答案,但(不幸的是)不能再接受。我想必须要投赞成票。我一定会传递这些信息,并感谢指向更活跃的 Clarion 社区的指针。
【解决方案2】:

我不会尝试用这种晦涩的语言完成更多工作,而是采用您暗示的方法:使用文件系统作为切换机制。

让他的代码输出文件到给定的文件夹;然后,有一个用“普通”语言编写的守护程序,定期监视该文件夹(cron作业等)。当出现新文件时,通过 HTTPS / 其他“正常”方式将其上传到您的其他服务器以执行任务。

这种方法遵循“本地化垃圾”理念 - 如果您无法摆脱垃圾,至少要确保它的“边界”明确。

【讨论】:

  • 这真的不是一个选项。我无法控制安装过程,因此无法让它变得比现在更复杂。
【解决方案3】:

信息希望是免费的。该语言可能是专有的和封闭的,但文档在线发布:

http://www.softvelocity.com/clarion/pdf/LanguageReferenceManual.pdf

看起来像是一种 Windows 3.1 老式报告生成语言,它能够与 DDE/OLE (!) 对话,但除此之外似乎没有任何外部通信功能。

所以不,Clarion 不能执行 POST 请求(通过第三方自定义控件/DDE 对话除外)。使用文件系统可能是一种安全的方法:它将客户端保持在熟悉的区域,并且最容易调试。但是,如果需要双向通信,您可能需要清除手册上的灰尘并采用 DDE 路线。这实际上取决于确切的要求(例如程序是批处理的还是交互式的?),但是从 1158 页手册中的第 935 页(附录 A)开始查找!

【讨论】:

  • 信息可能希望是免费的,但该手册适用于第 6 版,而不是第 7 版,并且现在大约有 6 年的历史。我认为版本 7 具有更多功能,但我没有它的文档。
  • 这里有一点,只是为了纠正一些可能的误解。 Clarion 是一种面向业务的语言,具有强大的 WRT 读写数据功能,因此不仅仅是一种报告生成语言。该语言起源于 DOS 大约 1984 年,Windows 版本大约在 1994 年推出。因为它是一种本地编译语言,它可以访问整个 Windows Win32 API,并且不限于您阅读的文档中的功能。因此,本机 Clarion 只需使用 Winsock API 或 WinINet DLL 即可执行 POSTS。
【解决方案4】:

我很晚才看到这篇文章,因为我今天才设置了 Stack Overflow 帐户。不过,我想对布鲁斯的回答发表评论。

Bruce 经营着一家第 3 方 Clarion add on maker 公司,并且总是会建议使用他们的产品。尽管它们真的很好,工作也很好,但我不禁指出标准的、开放的工具可以完成任何需要完成的工作。

例如,程序员可以使用“curl”http://curl.haxx.se/ 从程序与 Web 服务器进行通信。不仅是 Clarion 程序,而且是任何程序。除此之外,Clarion 确实可以访问所有 Windows API,而且只需编写代码,因此,套接字、http、mci 以及任何程序员都可以使用的任何东西。

需要从一个显然无法访问 smtp 功能的程序发送电子邮件?使用“布拉特”! - blat.net

想从网站下载一些文件? wget - gnu.org/software/wget

这些都是命令行界面。我建议那些不知道“界面”是什么意思的人去看看免费词典 - tfd.com/interface

问候

【讨论】:

  • 感谢您的回答,但正如我在问题中指定的那样,我正在寻找一个 NATIVE 解决方案。任何使部署变得更复杂的东西都没有了(curl、额外的命令行工具等)。另外,我不知道你为什么暗示我不知道接口这个词是什么意思。
猜你喜欢
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多