适用于小型企业的数据驱动网站

时间:2009-07-15 02:02:27

标签: c# sql-server asp.net-mvc

我的客户拥有一个基于产品的网站,其中有数百个静态产品页面,这些页面由Microsoft Access报告生成,并通过FTP推送到ISP(这是一个旧设计)。我们正在考虑更复杂一点并创建一个数据驱动的网站,可能使用ASP.NET MVC。

这是我的问题。由于这是一个非常小的业务(少数员工),如果可以的话,我想避免像Web服务这样的企业模式。如何将批量风格的产品信息更新到网站?在SQL Server环境中,您不能只是推送数据库的新副本,对吗?

澄清:客户已经在他的工厂有一个系统,他保留了所有产品信息和规格。我想用ISP刷新数据库中的数据库。

9 个答案:

答案 0 :(得分:3)

您没有提到数据源究竟是什么,但其含义是它不在SQL Server中。如果是这种情况,请查看SSIS

如果SQL Server中的源数据,那么我认为您希望查看事务复制或日志传送以同步这两个数据库。

答案 1 :(得分:1)

如果您正在进行现代化改造,并且只有少数员工,为什么要将产品信息推出批量样式?

我不确切地知道“数据驱动”是什么意思,但为什么不允许ASP.NET应用程序直接查询SQL Server产品目录数据库?为什么要生成静态页面?


更新:好的,我知道,真正的问题是,如何更新在ISP上运行的SQL数据库。

答案 2 :(得分:1)

您可以创建管理面板,以便客户端可以直接在服务器上编辑数据。只要服务器每晚备份,让客户端将所有记录保存在服务器上是完全合理的。许多云和虚拟服务提供了简单的方法来执行复制备份。

此模型的另一个好处是,一次可以有多个用户添加或更新记录,从而使员工的可扩展性更高。同样,用户可以从拥有Web浏览器的任何地方登录,以添加新记录,修复旧记录中的错误等。

编辑:此方法假设您可以说服客户放弃其当前的数据输入系统,转而使用基于Web的集中管理面板。即使不是这种情况,SQL数据库也可以托管在服务器上,并且客户端的应用程序可以与之通信,因此您只使用一个数据库。从它的声音来看,它是一组您应该具有源访问权限的Access表单和宏。

答案 3 :(得分:1)

假设无法直接在遗留系统数据库(在Access中,或只是运行报告的Access)和网站上的SQL Server数据库之间同步数据(我不知道任何):

将数据“直接”推送到SQL服务器的问题是“旧”(已经在数据库中)记录将不会更新,而是被删除然后重新创建。这是外键的一个大问题。另外,我真的不喜欢给客户端任何访问数据库的想法。

因此,考虑到这一点,我发现最好的方法是编写一个相对简单的页面来获取上传的文件并更新数据库。该文件可能是CSV,可能是XML。经过几年来写这些页面的几次迭代之后,这就是我想出的:

  1. 显示文件上传框。

  2. 在下一页加载时,将文件保存到临时位置

  3. 遍历每一行(XML中的元素)并验证所有数据。外键,尤其是商业验证。您还可以验证标题行是否存在等。不要更新数据库。 3A。如果存在无效数据,请将错误消息保存到阵列
  4. 在循环结束时,显示视图。 4A。如果有错误,请显示错误消息列表并告诉他们重新上传文件。 4B。如果没有错误,请创建一个包含#2文件位置和确认标志

  5. 的链接
  6. 在提交了文件位置和确认标志之后,再次运行#3中的循环,但是有一个if(确认){}语句实际上对db进行了更新。

  7. 编辑:我看到了你的另一篇文章。我做的一个假设是数据库不一样。即,遗留应用程序将有一两个表。也许只是产品。但新应用程序将包含订单,产品,类别等。这将使“仅上传文件”变得复杂。

答案 4 :(得分:0)

为什么你需要推动任何东西?

您只需要创建网页的产品管理部分,其次是网页的面向公众的部分。这两个部分都会触及相同的SqlServer数据库。

答案 5 :(得分:0)

.Net能够监控数据库并检查更新。然后你可以运行一个查询来[推送]其他地方的数据。

或使用sql在相关表格上使用触发器推送数据。

这是你在找什么?

答案 6 :(得分:0)

您可以尝试动态数据Web应用程序。

答案 7 :(得分:0)

您应该拥有定期更新目标数据库中数据的服务。它可能会在源数据机器上运行(Access-DB所在的位置)

该服务可以使用SSIS或ADO.NET来写入数据。您可以通过Web执行此操作,因为您可以通过TCP / IP访问我认为的服务器。

请检查更新何时完成以及需要多长时间。如果你可以在晚上做更新你没事。如果不是,您应该检查,如果您仍然可以在导入期间访问网络。有时情况并非如此。

答案 8 :(得分:0)

使用wget将新数据文件推送到mvc应用程序,一旦操作收到数据,mvc app就会调用数据的处理/导入(如果你不想要长请求,可能在工作进程中)。