问题描述
|
如果我的措词不对,请先抱歉,因为我不太确定如何解释我想要的内容,所以我只描述最终结果。
我有一个名为socialcalc的基于PHP的excel工具(以前是wikicalc)。我想允许用户连接到数据库并将实时数据拖到工作表上(以便他们可以在其上运行计算)。
我知道可以肯定的是,socialcalc必须查询MysqL,但我正在尝试找出最有效的方法。允许它直接查询是否更好?还是应该让它查询数据库并得到一个xml文件?或者您建议采用什么其他方式是允许对数据进行读取访问的有效且安全的方式?
我们正在从头开始构建大量的ontop socialcalc,因此对所有解决方案都非常开放,但最终,我们希望它能为其他服务提供支持。
更新:为澄清起见,我正在寻找有关使用SOAP / XML的建议,而不是直接查询数据库或使用HTTP POST / GET等。您会建议哪种类型的服务层,或者在选择时要考虑哪些因素?
解决方法
“简单胜于复杂。”
您当然可以在应用程序和MySQL之间实现Web服务层,但是问自己为什么要这么做。您可能想要它是因为:
您计划在将来的某个时候更改后端系统,而又不想在前端应用程序中重构业务逻辑
您想要将后端数据公开给其他应用程序,并为此提供一个通用接口
您想在中间层实现smoe类的缓存/持久性策略
所有这些都是有效的,有充分的理由在应用程序和数据库之间使用Web服务层。当然,还有更多的正当理由。
如果您没有想到应该实现Web服务层的原因,那么就不必这么简单了。如果有充分的理由,您总是可以稍后决定。
编辑:
因此,您已经决定继续使用Web服务...恭喜!我认为在这种情况下,您应该查看两个关键框架以节省大量时间:
获得一个好的ORM框架,该框架可以生成绝大多数的CRUD逻辑。 Doctrine是PHP的流行选择。
使用Web服务框架来实现您的界面和业务逻辑。我过去使用Zend Framework做到了这一点,因为它们通过REST支持XML和JSON有效负载。如果您需要严格的数据验证要求,那么XML和SOAP就是很好的选择,但是如果您是唯一使用自己的Web服务的人,则无需知道自己的要求,就可以对自己施加这种限制。在这种情况下,JSON应该足够了。
顺便说一下,我已经在另一个先前的问题中通过Zend讨论了RESTful服务:
轻量级的RESTful PHP服务器
,我认为最好的方法是使用分步操作。
9月1日
让用户在自己的Excel工作表中选择要实现的数据。如何做到这一点取决于您。
第二步
将用户的选择提交到自己创建的SQL API。该API将检查输入是否有注射等,并会在检索数据时进行所有查询。
第三步
将检索到的数据发送到将创建excel文件的类。
第四步
将创建的Excel文件发送给用户。
其中最重要的部分是SQL api。这是一个类,处理来自用户的所有输入以及与数据库的通信。它可以使用普通的SQL语句,但是您可以使用它来验证所有数据。
希望这对您有用。