替代问题标题: 我怎样才能将“这个软件让我毛骨悚然”转化为商业案例,以便高层管理人员不购买它?
我是一家小公司的 IT 部门负责人,这家公司经历了几年的持续增长。我们最初使用的是 QuickBooks,后来转向了另一种会计系统,现在我们正在寻找更全面、可定制性更强的中端 ERP 系统。我们目前正在评估一款用 Visual FoxPro 9 编写的 ERP 系统,我对它有一种不好的感觉,但我无法确切说明为什么会这样。
它由几个模块组成,我们感兴趣的是后台模块和 Web 模块。后台模块包含常见的 ERP 订单/履行/发货/会计功能。Web 模块由相同的 FoxPro DB 驱动,通过将 IIS 指向 .NET 组件,使用 UNC 路径从另一台机器打开数据库。我也不知道这一点,但目前这是一个单独的问题。
我担心的是,系统是通过执行以下操作来“安装”的:
1. Create a top-level folder on a server.
2. share that folder with appropriate users and groups as \\server\erp
3. unzip the .exe and dlls and \data folder in the shared folder
4. map \\server\erp to a drive on client computers
5. create a shortcut to the \\server\data\erp.exe on client desktops.
6. double click on shortcut! You’re ERPing! (after some other minimal setup)
.exe 使用对 \\server\data 子目录中文件的访问来填充表单等,就像往常一样。
我担心并发用户(25 个或更多)访问一个通过网络文件系统 (cifs) 访问文件以执行数据库功能的 .exe 似乎...可疑。我见过的其他每个系统都使用单独的数据库引擎,要么是自己开发的(这已经够糟糕了),要么是 SQL Server、Oracle、甚至 PostGreSQL 或 MySQL 之类的引擎来处理数据访问,但这个系统只是共享文件夹上的一个 .exe 文件,直接从每个客户端桌面上的该共享文件夹运行。这似乎效率低下,或者至少不够优雅,并且会导致大量额外的网络流量。.exe 大小约为 10MB,驻留在服务器上,打开驻留在相邻 \data 目录中的 .dbf 文件。供应商询问我们是否有千兆网络(我们有),这对他来说似乎非常重要...现在我明白他为什么要问了。
我没有深厚的开发背景,但我认为您应该有一个单独的数据库引擎,它通过命名管道或 TCP/IP 套接字与客户端通信,或者至少通过某种二进制网络协议与客户端通信。使用 netBIOS 共享(将 UNC 路径作为属性输入数据库)似乎是错误的,因为如果两个用户想要在 A/R 中打开同一个客户,您不会遇到文件锁定问题吗?我是不是太谨慎了?这真的是供应商所说的标准做法吗?我在像这样的大型会计系统方面没有太多经验。我们当前的软件包使用客户端-服务器模型,其中 DB 引擎处理文件,然后在其计算机上运行该软件的用户通过网络与其通信。我认为据称更先进的东西会有类似的界面,我错了吗?
答案1
您所描述的情况肯定会引起我的担忧,原因如下:
事实上,销售代表坚持要求为如此小的应用使用千兆网络。这可能最终不会对您的网络产生实际影响,但它会让我非常担心该应用程序的设计。50 个用户的 ERP 系统不应该给 10Mbit 线路带来麻烦,更不用说千兆线路了。
安装过程的安全隐患对我来说是一个交易破坏者。这是一个保存客户(以及可能的客户付款)信息的系统。用户将通过快捷方式启动一个 exe,这意味着在他们的工作站上将有 25-50 个此 exe 实例在用户凭据下运行。这些进程直接访问和写入同股。这意味着,根据设计,每个用户都必须拥有对整个数据库的直接读/写访问权限。从技术和安全合规性的角度来看,这很糟糕。
就我个人而言,仅从后一点来看,我会远离这个应用程序。我相信对合规领域(或 FoxPro)更熟悉的人可以进一步发表评论。
答案2
去过也做过。
我承认 VFP9 看起来有点过时,但它是经过验证的技术。
信不信由你:VFP9 在这样的设置下非常强大。它根本不像 msaccess。一开始我也对此表示怀疑,但实际上根本没有问题。
额外的好处是:只要没有用户打开该应用程序,您甚至可以对数据库进行基于文件的普通备份,如果您不是在经营一家 24/7 全天候营业的商店,那么这很好。
但是,您确实需要在客户端和服务器之间建立一个快速(至少 100 Mb)的 LAN。(看在上帝的份上,在服务器上放一个 1G NIC。)EXE 是本地的还是在服务器上并不重要,两者都可以正常工作。
正如其他人所说:对于非本地用户,您需要设置 WTS。建议在单独的机器上而不是在 VFP9 服务器本身上执行此操作。(当然,使用 Hyper-V 或 VMWare,两台机器都可以是同一物理机上的 VM。)
请注意,WTS 用户可能需要每个用户相当数量的 RAM。这在一定程度上取决于数据库查询的效率和应用程序的需求。
据我所知,100 到 200 MB 的工作集对于 vfp9 应用程序来说是相当正常的,其中大约一半将固定在物理 RAM 中。根据我的经验,如果用户不需要在 WTS 会话中运行太多其他内容,那么在 4GB RAM WTS 服务器上运行 20 到 30 个用户是可行的。根据您的应用程序需求,您的里程可能会有所不同。
答案3
我使用过 Visual FoxPro 9 ERP 软件包,其工作方式大致相同 - 在服务器上共享文件,多个客户端当地的EXE 和访问 SMB 共享的支持文件。ERP 中每个公司的数据集都是数百个 DBF 文件。
在性能方面,我们没有发现任何问题 - 我们有许多客户在相当标准的 Windows 服务器上运行 30 个或更多客户端,访问可能包含数百万行且超过 1GB 的 DBF 文件。如果 ERP 正确实施了索引和锁定,那么这些数字都很好。
是的,如果文件共享中充满了 DBF 文件,就会存在安全隐患。我想这取决于我们的 ERP 面向的客户类型,但在过去的 15 年中,我们拥有数千个站点,我个人知道由于这种设置而导致我们损失的站点数量可能总计有 20 个左右。使用终端服务也可以解决这个问题。
您也完全正确,您必须使用终端服务(可能通过 VPN)来远程运行它。
此外,如果您最终使用了有问题的 ERP,并且您拥有 Windows 7 机器和 Server 2008,请确保它们使用的是 SP1,因为 SMB 中存在一个错误导致索引文件损坏。