问题:Access开发UI越来越慢,主要是由于链接的数据库表(位于网络驱动器中的文件,以及共享点列表)。另外,我知道Access并不是多用户资料的理想数据库。然后还有一些装饰性的东西,例如隐藏主“访问”窗口。我有适用于WinXP的代码,但是在Win7中,背景不再隐藏。总的来说,整个软件不是很专业。
我需要什么:我需要能够在Windows 7环境中没有任何管理员权限的情况下进行快速开发和部署。客户端需要能够以最小的努力(如果有的话)来更新其UI,这意味着它们不需要安装程序。不知道开发速度有多快?然后,我听说了诸如AppJS之类的东西,但这在设备(打印机)上能很好地工作吗?而且,所有数据都是机密的,因此所有内容都应在没有外部服务器和依赖项的情况下正常工作(将来的数据库服务器将在建筑物内部)。否则,我会喜欢Web浏览器环境,因为它可以在任何地方使用和开发。
我有什么选择以及为什么选择?还是应该使用MS Access? />
[编辑#1]客户端javascript
似乎一种选择是运行客户端javascript并使用它来连接到SQL Server。但是,我听说尽管有可能,但出于安全考虑,这也是一种不好的做法。尽管不安全的连接字符串和源代码在公司内部使用中不是一个大问题,但仍然是公司IT规则所不允许的。 UI开发也不会像Access那样快,尽管如果对JS足够熟练的话,UI开发仍然很棒。我会适当地尝试一些原型。
#1 楼
也许不是有史以来最伟大的解决方案,但是如果按照所需的努力衡量,最便宜的解决方案是将Access数据库转换为SQL Server,最好是转换为Microsoft SQL Server。在Microsoft Access'97和2000中,甚至可以最重要的事实:
MS SQL Server在运行单个CPU内核之前是免费的,直到不再运行它为止。用于为公司外部用户(与客户)建立连接,即以托管服务的形式。如果您将客户端服务器解决方案卖给其他人,则在相同条件下它仍然是免费的。也可以使用其他SQL服务器,但是您需要使用的“代码距离”更大。
基本上,您可以将Access客户端应用程序保留为原来的状态,除了更改连接字符串和调整不兼容的SQL命令之外
以后您可以重写您的客户端应用程序。
重点是,您不会立即被迫在客户端和服务器端进行重大突破。
大约12年前,我已经在一个应用程序中采用了这种方式(它是Access'97,SQL Server 2000)。我们首先迁移了数据,几个月后客户决定重写客户。没有严重的阻碍。
从那时起,我一直在维护/扩展一个编写良好的大型专业企业Web应用程序,现在我又回到了使用经典的窗口和表单编写二进制客户端的过程。我的主观结果是,使用Web应用程序时,开发效率较低(浏览器兼容性问题,浏览器中不受欢迎的后退按钮,调试更困难,UI控件非常有限),但是您获得的更好的可访问性(如果浏览器允许的话)会部分抵消。因此,我的主观意见是不要走网络应用程序之路,因为您可能需要更多的精力才能获得可比的结果。但是,如果您已经为此感到鼓舞,我仍然希望您在新应用程序中万事如意。
重新考虑您对“非常快速的开发”的要求:我相信非常小的解决方案是可能的。对于较大的应用程序,您需要仔细地编写基础(除非您是复制粘贴程序员),以管理不断增长的应用程序复杂性。编写它们通常与“快速开发”无关,因为打下坚实的基础不会立即产生新的画面,功能或其他结果。我已经看到一个应用程序在很大程度上是用快速开发编写的,但是现在它正在等待返工,因为牺牲了代码的合理性来“快速生成结果”,并且您会发现相同的代码经过细微的修改被复制并粘贴了100次。这是程序员的地狱,很难维护。 (如果此类代码需要更改或修正,则需要将其应用于100个地方。)
评论
感谢您的答复,这很可能是我会做的。该公司已经拥有SQL Server数据库,因此今年很可能会访问一个数据库。希望它还能加快Access的设计速度,因为SQL Server比慢速网络驱动器上的基于文件的数据库快得多。我也开始通过清理代码,使功能更智能和优化查询来调整应用程序。我也同意您的Web应用程序。尽管有一些不错的UI设计组件,但是它从来没有像Access那样简单,更不用说背景代码本身了。
– Merlac
2014年5月8日4:09
评论
您说:“否则,我会喜欢Web浏览器环境...”,但是您是否认为这不是互斥的选项集?本地Intranet站点是否可以解决机密性问题并同时为您提供您选择的开发环境?是的,但是本地Intranet站点不需要在建筑物中的某个地方运行Web服务器吗?目前,我只有共享的网络驱动器和用户计算机,它们将在夜间关闭。
您的系统已经不依赖于开启某些功能吗?您的共享网络驱动器是在客户端计算机上还是在中央计算机上?可以想象,您可以分发软件本身,就像在浏览器中使用文件路径打开html / js / css来运行该软件一样(如果仅使用客户端处理,则不需要Web服务器),这只会留下数据库。但是,您是否还没有系统充当数据库服务器?
我还没有数据库服务器,因为Access数据库是基于文件的。但是,我可能已经忘记了JS页面确实不需要Web服务器,因此也许我应该对此进行一些研究。