0

我即将开始为使用 C# 的组织开展项目。为了获得必要的数据,我必须从数据库中获取数据,但是,即使创建应用程序,我也不会被授予访问数据库的权限。您可以假设这会带来一些挑战。

在过去的一个项目中,我创建了一个 PHP 脚本,它为我访问数据库并以 JSON 格式返回数据。我也想这样做,不幸的是,我需要能够进行大约 100-120 个查询,因此为我需要的每个查询创建一个 PHP 脚本将非常耗时。

是否可以在 PHP 中创建一个接受字符串参数的方法,然后以某种方式将字符串从 C# 传递给它?如果是这样,那我该怎么做?如果我可以将字符串传递给脚本中的方法,那么它只需要 3 个方法(在 PHP 脚本中)就可以进行所有必要的查询。

4

1 回答 1

1

从 C# 应用程序/库调用 PHP 方法的简单示例将涉及使用WebRequestWebResponse类:

HttpWebRequest request = (HttpWebRequest) 
    WebRequest.Create("http://server/script.php?method=my_method");

HttpWebResponse response = (HttpWebResponse) request.GetResponse();

Stream stream = response.GetResponseStream();

使用流,您可以解析或反序列化响应,例如,如果它是 JSON 字符串。

此实现依赖于script.php使用method参数,并将调用委托给该方法;如果您愿意,可以使用伪路由。更多参数可以通过查询字符串传递,并由调用的方法使用。

另一个简单的例子:

$r = new Repository();
$d = $r->{$_GET['method']}();
echo json_encode($d);

但是,其中大部分可以使用现有技术来实现。将 PHP 方法公开为 API 已经过时了,并且存在大量 RESTful API 框架来加速此类应用程序的开发。使用 API 的 C# 应用程序/库也是如此,前提是您使用带有客户端实现的东西。

你的问题的答案,“有没有可能…… ”;当然可以,但是这是一个相当高的要求,实现将完全依赖于问题域。


作为一个详细说明(评论可能太长了),我目前正在开展一个大规模的大修项目。以前的开发人员决定推出自己的一切。这对我意味着什么?我无法重用他们的代码库。他们推出了自己的安全策略。垃圾。

我说垃圾不是因为我可以写得更好(我可能会,但不多),而是因为我知道得更好。

我喜欢成熟的技术,那些集成良好并拥有大量社区和开发人员支持的技术。当我在文档和此处之间遇到问题时,我通常可以很快找到解决方案。此外,组件的问题已记录、修复并且可以解决。

将自己的集成组件(无论是安全性还是其他)用于生产,尤其是当您知道自己将其视为学习经历时,是不负责任的。

于 2013-03-10T19:08:44.233 回答