如何处理Intranet应用程序脱机工作

我开发了一个小型的费用报表系统,用来取代一个非常古老的excel文件。 设置非常简单:

-UI是jQuery,asp.net,简单的CSS

– 结束是sql server 2005

– 业务层还有一些额外的层次。

典型的分层应用程序。 它作为Intranet站点在IIS 6上运行。 那么使用excel表格要简单得多,当然这家伙似乎没有互联网连接,他怎么能提交他的费用报告呢?

我想到了一个序列化对象的离线系统,但这似乎有点复杂,因为最终这些序列化的对象需要返回到数据库层。 我正在想的更多的是告诉他们把一个excel电子表格提交给一个“pipe理员”,他们有一个互联网连接,并让他们把他/她的费用报告。 但是我担心“pipe理员”会讨厌这个。

即使我掀起一个桌面客户端应用程序,我仍然必须击中networking才能到达数据层。

任何其他的想法,如何处理那些不能VPN或上网的人,但一度喜欢他没有想到的excel应用程序?

我们在用户没有连接的情况下实施了一些解决scheme。 一个是WinForms应用程序,另一个是ASP.NET应用程序。 对于ASP.NET应用程序,我们将其修改为使用笔记本电脑或客户端PC上的IIS来运行,因为您可以在客户端操作系统上安装IIS。

我们最终使用的模式是在本地使用DataSet在客户端PC上保存/parsing数据,然后使用内置的DataSet.WriteXml方法将其序列化为XML。 然后,我们创build了一个“上传”屏幕(asp.net页面或WinForms页面),显示挂起的上传。 这将DataSet上传到ASP.NET Web服务。 由于DataSet对象是可序列化的,因此在Web服务中使用它是最less的工作量。 Web服务处理实际插入/更新数据库。

实际上它比听起来要less很多,而且这种模式对我们来说非常成功,所以它已经成为处理断开应用程序的标准方法。 这些应用程序的故障排除可以忽略不计,与我们尝试过的其他方法相比,这对我来说简单可靠。

您可以实施SQL Server合并复制。 有一点点的学习曲线,但我想了一下,并在几个星期内实施,所以它肯定是“可行的”。 你可以有一个桌面应用程序,更新一个SQL Server Express数据库,然后使用复制(可能是当用户连接到networking)使用复制同步更改。

如何合并重新合作
http://msdn.microsoft.com/en-us/library/ms151329.aspx

您可以将电子邮件xls文件的变体更改为pipe理员。 而不是pipe理员重新input数据,你可以让他们上传xls文件,你的系统可以parsing并input数据。 工作得很好,特别是如果xls格式是统一的。

使用Office工具包和macros在用户Excel应用程序中构build将数据导出到XML数据集并在机会允许时传输的function。 在服务器端构build一个适配器,用于在到达时读取这些XML文件,并根据需要插入适当的logging。