如何为我的公司创建一个通用的.NET编程结构?

4
我在一家公司工作,当没有好的现成选择时,我们会编写自己的业务数据应用程序。最常见的是: -登录界面 -某些屏幕主要是 SQL Server 表的可视化 -某些报告
过去,我们使用了 MS Access。这些开发人员并不是最高级的程序员,但他们大多都知道如何构建数据库以及 UI 所需要的内容。
我们希望有一个通用的登录界面、菜单界面等,可以将其插入应用程序中并立即开始使用。这应该有助于提高开发速度和可维护性。
当然,有更多方法可以实现这一点,而我们问题的核心似乎是数据访问。选项似乎包括:
1) GUI 数据集/表适配器,就像 ASP.NET 上的视频所展示的那样。我们中的一些人已经做了很多这样的工作。对于开发速度来说很好。有时候数据连接会在你没有注意到的情况下发生更改。巨大的方法签名(每个字段一个参数的插入或更新)容易出错。有时候参数检测不正确。动态参数(例如带有可选筛选条件的报告)非常困难。
2) 极度结构化的 n-tier 样式。例如,网格的数据源是对象的集合。表示层调用对象 A 中的静态方法,该方法调用数据访问层方法,后者为从数据库返回的每行实例化 A。A 需要为表中的每个字段拥有 get/set 方法、内部变量和构造函数变量。每个字段都需要进行多次类型确定。任何内容都没有绑定到任何内容。对于这种简单的应用程序来说,可能过度设计。
3) 通用表驱动所有操作,使用循环遍历字段列表动态创建 UPDATE 和 INSERT 语句。选择大多是 SELECT * 类型的东西。开发速度很快,但缺乏强类型使我感到不安。似乎 SQL 注入隐患无处不在,但我被保证只需将引号重复即可避免这种情况。
肯定还有更多的选择,但我不知道它们是什么。你有什么建议吗?

1
只是好奇,不知道是谁在投票否决所有这些好的建议而不费心解释。如果这些建议不好,至少让我们知道为什么,这样我们才能学习。 - David
我的想法完全一样。我们的答案很相似,所以我投了你的一票 :) 我认为动态数据和/或脚手架是他想要的。 - Cody C
@David Stratton:我也很好奇,这种行为很奇怪,至少可以这么说。我投票关闭整个问题,以防止报复性的负评。 - casperOne
显然有人不喜欢ORM。 - Aaronaught
喜欢这些建议,谢谢!在这些领域进行了一些初步研究,发现有一些令人兴奋的前景。我现在有一些新的研究项目了。我们一直在使用VS2005 .NET 2.0,但这似乎阻碍了我们的生产力。 - user285941
1
如果你没有VS 2008(现在已经有了VS 2010),那么你肯定会错过很多东西!如果我没记错的话,除了DataSets之外,实际上并没有太多选择,尽管你可以使用带有XML映射的NHibernate(而不是Fluent NHibernate)。 - Aaronaught
6个回答

5
你是否了解动态数据?它可以帮助你轻松实现一个漂亮、干净的数据库CRUD解决方案,几乎不需要任何时间投入(如果数据库结构良好)。你可以添加登录界面或使用Windows集成验证以保持一致性。此外,它的学习曲线几乎为零。我在观看介绍视频的20分钟内完成了我的第一个站点,即使是最基本的初级程序员也能轻松上手。

不是吗?虽然它并不适用于所有情况,但在我需要为数据库添加后门访问的几乎所有项目中,这是我首选的工具。当我第一次尝试它时,我感到非常惊讶。微软在这里做得很好! - David

3

2

听起来你正在寻找某种脚手架工具。市面上有很多这样的工具,SubSonic肯定有一个。

这里是MSDN的链接


1
为什么要踩这篇文章?该文章的第一行说:“软件开发中经常需要显示和编辑数据。ASP.NET动态数据使您能够创建无或极少代码的数据驱动应用程序。脚手架机制是动态数据中的一个重要功能,它使您能够快速生成这些应用程序。”……这不就是你想要实现的吗? - Cody C

1

0

Table Adapters已经过时了。并不是说它们没有用处,但我个人不会没有充分的理由就使用它们。Linq to SQL就是为这种快速开发而设计的。比数据集更快速地设置,并且查询和更新也更加容易。

还有Entity Framework和NHibernate,但这些更针对于大型领域中心应用程序,而不是快速脏数据访问/更新。


0
在这种情况下,你的问题似乎完全围绕着数据访问,并且你提到了.NET空间中相当古老的方法。
你是否看过LINQ-to-SQLLINQ-to-Entities?这两种技术都解决了你大部分甚至全部的问题,如果你没有使用基于SQL Server的后端,则后者是这两种解决方案中唯一的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接