php - c#双向通信
本文关键字:双向通信 php | 更新日期: 2023-09-27 18:18:11
我正在创建一个连接到MySQL数据库的PHP网站。接下来,我将需要编写一个c#桌面应用程序,将使用相同的数据库。不幸的是,我不能从远程位置直接连接到数据库,我的托管公司也不允许SSH。
我有什么选择?如果托管公司支持。net,这就不是问题,但是我对PHP没有经验。我是否必须编写一个PHP服务(SOAP?),然后在我的桌面应用程序中使用它?此外,我如何从桌面应用程序与服务器通信?
感谢任何帮助!
根据安全要求,您可以在PHP中编写通用SQL执行页面,将SQL作为字符串参数,并将结果返回为字符串数组(可能需要一些元数据或其他东西)?
除此之外,我唯一能想到的就是某种网络服务。
SOAP也可以以两种方式工作,你可以从c#应用程序读取和写入,不需要在两端编写WebService,除非你需要通知你的c#应用程序关于服务器的事情(在这种情况下,你可以尝试从c#应用程序频繁轮询)
最好的选择是在PHP站点中创建一组RESTful服务。
要考虑的最重要的事情之一是REST更多的是按约定配置,并且不需要像SOAP这样的东西,这对于您的解决方案来说可能是绝对多余的。
你只需从PHP发送JSON和。net Windows应用程序将其解析为CLR对象。
一个示例场景是:
-
业务操作: http://yourdomainhere.com/API/Message/34894** 返回类似
{ "text": "hello world" }
的内容 。. NET客户端接收此JSON并使用JSON解析器,如Newton JSON解析器,您将这样做:
MessageDto dto = JsonConvert。DeserializeObject([从服务调用接收到的JSON]);MessageBox.Show (dto.Text);//这将显示"hello world"
这只是一个非常简单的例子,但它会让你知道接下来要做什么。
你可以使用WebRequest/WebResponse . net BCL类来查询你的REST API。
PHP只需要在输出流中发送一个包含JSON的web响应,仅此而已。没有SOAP,没有XML,没有复杂性。保持简洁。
我想下面的链接对你会有帮助的!
- 使用PHP/c#开发SOAP Web服务
你能做的是提供一些php包装器,你可以从你的c#代码访问。作为一个例子,你可以使用这个讨论,关于c#/PHP通信。
基本上你可以发送一个HTTP请求到PHP,然后用c#检索它的返回值。然后PHP将执行DB请求。如果你在网站上使用AJAX,它应该很容易使用相同的通信接口。
这是Matt Fellows回答的第一段。但是以什么形式将数据发送回应用程序呢?也许JSON ?
PHP webpage
<?php
$host = "host.host.com";
$user = "XXXXX";
$password = "XXXX";//plaintext :)
$connection = mysql_connect($host, $user, $password);
$database = "XXXXX";
$syntax = $_GET['syntax']; //www.example.com/help.php?syntax=DROP%20TABLE%20XXX
$result = mysql_query($syntax);
//somehow output the $result in C# readable form
?>