Skip to main content
 首页 » 编程设计

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

2024年02月24日31luoye11

概述:我们希望编写一个 C# 用户界面来选择我们的网络应用程序的一部分。这适用于非常拘束的观众(例如内部)。

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

为什么?一个经过深思熟虑的原生 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 buffers,所有这些都证明对我很有用。

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

一旦您将 Web 应用程序设置为发出(比如说) Protocol Buffer ,一点都不难让它能够根据请求发出 XML 或 JSON - 一个 ?outputformat=JSON extra GET 请求中的参数就足够了,选择正确的输出序列化程序非常容易(在 Python 中,但我敢肯定,在 PHP 中也是如此)。

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