c# - 将 C#(前端)连接到 apache/php/python(后端)

标签 c# php python web-applications data-structures

概述:我们希望编写一个 C# 用户界面来选择我们的 Web 应用程序的某些部分。这是针对非常严格的受众(例如内部受众)的。

我们的 Web 应用程序是使用 PHP 和/或 Python 编写的,并使用 Apache 作为 Web 服务器。

为什么?一个经过深思熟虑的 native Windows 界面有时比遵守网络浏览器强加的规则更有效。

问题:使用 HTTPS 在 C# 和 PHP/Python 之间进行通信的最佳方式是什么?我主要谈论的是每种语言中驻留的各种数据类型的序列化/反序列化和转换。

理想情况下,我们将在 C# 中使用强类型结构或对象,并在 PHP/Python 中创建适当的数据结构以用于此目的。代码生成器很好。

我看过Apache Thrift ,考虑扩展我们的内部数据库,审查 Google 的 Protocol Buffers 等...Thrift 看起来很有前途,但他们的文档非常稀疏。

  1. 将开发人员的开销降至最低至关重要。
  2. 保持合理的性能(尤其是在服务器端)非常重要。

欢迎对 XMLRPC、SOAP 或其他相关技术的实用性发表评论。

有什么指示吗?

最佳答案

我对 PHP 没有真正的经验,但我已经完成了大量由各种语言和环境中的前端客户端使用的 Python 后端 Web 服务。在我尝试过的所有技术中,SOAP 是唯一一种让我觉得很酸的技术——太多的“仪式”/开销。 (早在很久以前,我也尝试过 Corba,当我尝试在不同语言的独立实现之间进行互操作时,感觉并没有那么不同;-)。

XML-RPC、JSON 和 Protocol Buffer ,所有这些都被证明对我来说非常有用。

Protocol Buffer 是我们在 Google 中通常使用的内容,我不确定您是否发现有关它们的文档如此之少 - 请提出具体问题,我会看看我能做些什么来使我们的文档变得更好,正式或者非正式的!它们的主要优点是它们对线路非常“紧”——最小的开销和最大的灵活性。 JSON 也很棒——不仅仅是为了在 Javascript 客户端中易于使用:有时我也将它用作不同语言之间通信的默认格式,甚至在根本不涉及 JS 的情况下!

一旦您将 Web 应用程序设置为发出(例如) Protocol Buffer ,那么让它能够根据请求发出 XML 或 JSON 并不困难 - 一个 ?outputformat=JSON 额外GET 请求中的参数就足够了,选择正确的输出序列化器非常简单(在 Python 中,但我确信在 PHP 中也是如此)。

在我看来,在 C# 端“获取强类型对象”是您最适合在 C# 层完成的工作。没有直接的经验,但是,例如,我已经将 C++ 中 Protocol Buffer 的接收包装到工厂类中,这些工厂类产生完美形成的静态类型对象(或者当传入数据不符合语义时引发异常)正确的);我知道这对于 JSON 或 XML 来说不会更困难,而且我非常怀疑对于 Java、C#、Python(如果你关心的话)或任何其他在现实世界中有用的语言来说会更困难!-)

关于c# - 将 C#(前端)连接到 apache/php/python(后端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023187/

相关文章:

php - PHP框架的好处

python - 在 python 调试器中检查复杂变量,比如 pudb

c# - 为什么 Timer 让我的对象保持事件状态?

c# - 如何扫描网络上存在的无线设备

c# - 标准化 System.Decimal - 去除尾随零

c# - 如何使用 C# 在列表框中水平显示数组项?

php - 从 foreach() 循环和 print_r() 返回数组

php - Laravel 布局不起作用

python - 将 pandas 数据框与点积向量相乘时如何纠正形状未对齐?

python - 如何通过命令行为 python 脚本的函数提供参数?