2013-03-10 83 views
0

我即将开始为使用C#的组织开发项目。为了获得必要的数据,我必须从数据库获取数据,但是,即使创建应用程序,我也不会访问数据库。你可以认为这会带来一些挑战。访问PHP方法

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

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

+2

你在这里矛盾自己。您需要从您无权访问的数据库获取数据。 C#在这里出现在哪里?请详细解释架构。 – Cheesebaron 2013-03-10 18:29:24

+0

我完全不矛盾自己。一旦我收到数据,我就使用C#来处理数据。 – tylerbhughes 2013-03-10 18:51:02

+0

*是否有可能在PHP中创建一个接受字符串参数,然后以某种方式将字符串从C#传递到它的方法?* - 如果您可以使其有意义,那么我认为我们可能会在某处。 – Dan 2013-03-10 18:53:02

回答

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#应用​​程序/库也是如此,只要您使用某种客户端实现。

对您的问题的回答“是否有可能......”;当然是的,但是这是一个非常高的要求,实施将完全依赖问题领域。


作为一种改进方案(可能是太长时间评论)我目前工作的一个大规模检修项目。以前的开发者决定推出自己的一切。这对我意味着什么?我无法重用一盎司的代码库。他们推出了自己的安全策略。垃圾。

我就不多说了垃圾,因为我可以写更好我可能,但并不多),而是因为我知道更好。

我喜欢成熟的技术,它们很好地融合在一起,并且拥有大量的社区和开发者支持。当我遇到问题时,在文档和这里之间,我通常可以很快找到解决方案。此外,组件的问题被记录,修复,并且可以解决。

滚动你自己的不可或缺的组成部分(是他们的安全或其他)进行生产,尤其是当你知道你对待它就像一个学习的经验,是不负责任的。

+0

需要这样做的原因是数据库中包含的数据是未成年人的个人信息。通过不授予对数据库的权限,组织正试图防止不必要的数据访问。 是的,我觉得有API可用于这样的事情。尽管如此,如果你总是依赖第三方API,你并没有学到任何东西。我一直试图自己做第一次,然后任何时候我都创建了自己的API,或者我使用了第三方API。 – tylerbhughes 2013-03-10 19:16:38

+0

@RandomlyKnighted如果您正在从事涉及未成年人个人身份信息的项目,那么为了学习,我甚至不会考虑自己动手做任何事情。保存个人项目;使用完善的技术为这一个。 – Dan 2013-03-10 20:03:23