我需要创建一个webapp来显示并允许编辑一组数据。
此数据包含在Access数据库文件中,由另一个应用程序(桌面应用程序)使用。
我正在评估执行这项工作的最佳方式。
不幸的是,我的目的是迁移到另一个数据库解决方案(rdbms,如MySQL或Postgres)被客户拒绝。
此处的问题是如何在服务器和执行同样使用此数据的应用程序的桌面之间保持数据完整性和同步。
我需要做的就是,读取数据,存储编辑或新数据,向授权用户提供一个界面来查看这个新插入的数据 - 验证它 - 并将其导入原始访问数据库。
我找到了以下可能的解决方案(更新桌面mdb副本),但每个都有利弊:
你知道其他一些方法可以帮助我完成这项工作吗? 我定位于客户端 - 服务器模型,如果这会更昂贵,但这是我看到的唯一方法。
您是否看到了目的解决方案的其他优点/缺点?
我没有选择PL来开发它,但我想使用PHP和/或Python。 远程环境(用于服务器)可以是Windows或* nix(首选)。
感谢。
答案 0 :(得分:2)
第一个想法:
exposes the machine to unauthorized access
这不是一个真正有效的论点。您放在互联网上的所有内容都会暴露出来。它不能通过SSL / TLS进一步保护。例如,甚至可以通过SSH隧道保护RDP。
在我看来,最简单的方法和最优雅的方法是使用Web服务(SOAP)。使用类似Python或Java的方法编写在Access数据库上执行插入/更新的服务器代码。从工作代码生成WSDL。从WSDL中,您可以为PHP / Python生成客户端。现在,您所要做的就是编写使用PHP / Python客户端的Web界面。
对于使用SSL的安全性和基本身份验证应该足够(例如,在Python的情况下由SOAPpy支持)。
您可以使用pyodbc
连接到Access数据库。
答案 1 :(得分:1)
您可以使用2 db并同步更改它们之间的某种Web服务。 分离Web服务器Db(您可以使用现代的mysql或其他)和当前访问Db 您应该使用http方法中的时间戳构建一种Rest Api,以针对GET方法返回新的或更改的记录,使用DELETE方法删除等。 然后你可以在每一侧查询另一方的新记录的预定作业(与json一起转移),从而使记录保持相对不同步。
您可以通过仅在特定端口中公开应用程序数据库来处理安全性,并且仅对来自Web应用程序服务器IP地址的http查询进行处理。还使用http auth,哈希等。 如果这不是一个重负荷,高并发性的应用程序(我想它不是因为你使用访问作为Db),这应该有用。
你可以用任何python webframework构建这种mini-api,比如turbogears 2.1,django或像bottle或者烧瓶这样的迷你框架
p.s如果你更喜欢python(以及为什么你不会)直接使用pyodbc,使用python漂亮的orm - sqlalchemy要好得多
答案 2 :(得分:1)
我认为这是如何工作的,取决于身份验证问题和需要审核数据的用户数量。
我问的原因是什么?
您可以考虑使用Access 2010和Office 365.这允许您将表链接到云,但实际上这些表也在Access桌面的本地缓存。这意味着使用了数据的实时复制同步,这对于Access 2010来说是自动的(因此您不必编写任何代码)。
这意味着在运行Access桌面应用程序时,您可以拔下网络上的插头,它将继续运行。您有wifi或连接的瞬间,然后更改本地同步到Office 365.更好的是您现在可以在Access中构建Web表单。
触摸或编辑的数据(或任何一方的新记录)将从管道下载到本地计算机。因此,您在Access客户端中添加了reords,Web用户也将看到这些新的reocrds。
因此Access 2010现在具有网络发布功能,这适用于新办公室365.价格从每月6美元起。如果只是为了少数用户,那么让他们使用同一个帐户登录!这意味着您可以在比发布此帖子更短的时间内完成所有操作并且每月少于10美元!
对于那些不知道的人,Access 2010具有Web发布功能。当您发布Access窗体时,然后转换为.net窗体(zammel / XAML)窗体,并将代码转换为JavaScript。因此表单代码实际上运行浏览器端。
由于系统在办公室365上运行,因此您使用了一些重型熨斗,理论上您可以扩展到数百万用户进行此设置。当您将Access应用程序发布到Office 365时,那么在服务器端您不再使用mdb或Access文件,而是使用所谓的Access Web Services。这些表实际上变成了SharePoint列表的等值。 SP 2010的新功能是这些列表现在具有级联删除等关系功能。
这个系统真正的美妙之处在于你可以在Access中编写,创建和完成所有工作,而无需学习或触摸任何种类的服务器端技术。这是我的简短视频,在中途我只使用Web浏览器运行Access应用程序。
http://www.youtube.com/watch?v=AU4mH0jPntI
不需要activeX甚至Silverlight。事实上,我的Access应用程序在iPad上使用safari Web浏览器运行良好。
因此,您可以考虑继续使用Access,并使用新的Access 2010功能将您的应用程序发布到Web上。