10

我将构建一个内部的、偶尔连接的应用程序 (OCA)。你会建议我采用什么技术。

这是我的参数:

  1. .NET 商店(3.5sp1
  2. C# 后面的代码 ( winform,wpf,silverlight )
  3. SQL Server 后端(2005 或可能2008 待批准
  4. 独立开发者
  5. 单独的 SQL 管理员
  6. 低技术终端用户
  7. 5个分支机构的低带宽
  8. 这是一个 LOB 应用程序,但不是 POS。
  9. 大多数用户都有笔记本电脑,他们会带去会员之家
  10. 此应用程序的数据存储在 5 个单独的数据库中,但在一个 SQL 实例中。

我正在寻找关于选择哪条路径的具体建议。合并复制或同步框架数据库同步提供程序?订阅服务器上的 SQL Express 或 SQL CE?我可以为 DAL 使用 LINQ to SQL 吗?

Silverlight“离线/浏览器应用程序外”示例在这里可行吗?

这是我的第一个大型业务应用程序,因此欢迎任何有经验的评论。


根据此处的要求,提供有关数据类型的一些附加信息。我的用户是护士和社会工作者,他们去会员家中为他们创建“计划”或“健康评估审查”。这些是诸如药物列表或当前“提供者”列表之类的东西。实现成员目标的步骤或当前/过去诊断的列表。像这样的东西。

还有典型的会员姓名、地址、电话号码等。主要是一个便于报告的数据存储和检索应用程序。很少发生“处理”,护士和社会工作者在分配成员的团队中工作,所以我通常很少有交叉或潜在的数据冲突。护士和 SW 还负责 MCP(以会员为中心的计划)的不同领域


附加问题;如果我可以使用 SQL 2008,那么 Sync Framework 真的只是一个可行的选择吗?由于更改跟踪等....想法,似乎是这样的?

4

6 回答 6

4

一旦解决了变更检测和数据移动的问题,其他一切都变得微不足道。换句话说,像 WPF、Silverlight、Forms 甚至 WCF 这样的技术与您的主要问题是正交的,您的选择应该基于您的个人喜好和经验。真正要破解的难题是断开连接并同步更改。这留下了两个开箱即用的途径:同步框架或复制。

我想说,对于您的场景,绝对是Synch Framework。与所有形式的复制一样,合并复制是为连续连接但间断断开的系统而设计的。最关键的复制只能在静态名称上工作。从各种热点和 ISP 连接的笔记本电脑有一个讨厌的习惯,即每次连接都更改 FQ 名称。只有在使用某种 VPN 并且 VPN 通常是主要的支持问题时,复制才能克服这个问题。复制并不是为 OCA 系统的高移动性而设计的。

由于需要更改数据捕获更改跟踪,同步框架将迫使您使用 SQL 2008 后端,这两者都是 SQL 2008 独有的功能。

您仍然需要提前解决许多难题(身份验证、版本控制和升级、数据冲突解决策略、保护客户端上的数据以防意外媒体丢失等)

于 2010-01-20T18:56:47.647 回答
2

就个人而言,我会说:

  • .NET 3.5
  • WCF 数据服务(用于客户端应用程序和您的数据之间的通信)
  • SQL Server 2k5/2k8(你可以使用哪个)
  • Silverlight 不支持浏览器功能
  • VistaDB(在客户端本地存储数据,直到可以推送到服务器)
于 2010-01-20T18:40:04.517 回答
1

如果您在离线且未连接的情况下创建内容以及在连接时更新数据库,请使用唯一标识符作为密钥。

这将比使用自动增量键容易得多

于 2010-01-20T18:43:34.043 回答
1

在处理过偶尔连接的应用程序后,我建议您查看客户端计算机的 SQL Server CE,并使用同步服务来处理连接。这是一个很好的教程。

于 2010-01-20T18:47:35.203 回答
1

看来,你可以从头开始创建这些东西。

但是,这看起来非常像 CRM 应用程序,如果您可以找到一个企业软件包来执行此操作,而无需从头开始,而是修改其中一个配置以满足您的业务规则,我不会感到惊讶。

在以前的生活中,我是一个名为Siebel的东西的配置开发人员,它可能与您正在寻找的东西很接近。他们甚至有一个名为 Siebel Remote 的内置同步工具。

这可能比从头开始自己动手更便宜。

于 2010-01-20T19:00:54.130 回答
1

我为葡萄酒销售代表编写了一个接单程序。这是视频。 客户端软件使用单击一次安装。这也会安装 SQL Server Express 并加载数据库。我使用 Microsoft Sync Framework 将本地数据库与服务器上的数据库同步(请参阅视频的最后一部分。)

  • 现在有了强大的客户端,我看不出有什么理由不使用 SQL Server Express,它是免费的,有 4GB 的限制。

  • SQL CE 有太多的限制——没有存储过程是主要的。

  • 您将需要在任何地方使用 GUID 作为主键 - 请参阅新的 NewSequentialID()。

  • 我喜欢点击一次,它可以节省大量时间。

我很期待 Silverlight,但还没有时间研究它。不知道我现在是否会使用 Silverlight 来完成它。

说了这么多,对于没有经验的人来说,这不是一个项目。所以我也会得到一些非常有经验的帮助。

于 2010-01-20T19:08:02.240 回答