【问题标题】:How do I create a generic overall .NET programming structure for my company?如何为我的公司创建一个通用的整体 .NET 编程结构?
【发布时间】:2011-01-23 12:30:53
【问题描述】:

当没有现成的替代方案时,我所在的公司编写自己的业务数据应用程序。大多数时候是 - 登录屏幕 - 一些屏幕主要是 SQL Server 表的可视化 - 一些报告

过去他们使用的是 MS Access。这些并不完全是最优秀的编码人员,但他们大多了解如何构建数据库以及他们想要的 UI。

我们宁愿有一个通用的登录屏幕、菜单屏幕等,我们可以插入应用程序并开始使用。这应该有助于提高开发速度和可维护性。

当然,有不止一种方法可以做到这一点,而我们问题的核心似乎是数据访问。选项似乎包括:

1) GUI 数据集/表格适配器(如 ASP.NET 上的视频)向您展示了如何操作。我们中的一些人已经做了很多这样的事情。有利于开发速度。有时数据连接会在您不注意的情况下发生变化。巨大的方法签名(插入或更新时每个字段一个参数)很容易出错。有时参数检测不正确。动态参数(例如带有可选过滤器的报告)非常困难。

2) 非常结构化的 n 层样式。例如,网格的数据源是对象的集合。表示层调用对象 A 中的静态方法,该方法调用数据访问层方法,该方法为从数据库返回的每一行实例化 A。 A 需要为表中的每个字段提供 get/set 方法以及内部变量和构造函数变量。每个字段都被输入了很多次。没有什么是永远的。对这么简单的应用程序来说可能有点矫枉过正。

3) 通用表使用通用函数驱动所有内容,这些函数循环遍历字段列表以动态创建 UPDATE 和 INSERT 语句。选择主要是 SELECT * 类型的东西。快速发展,但缺乏强大的打字让我感到害怕。似乎 SQL 注入地雷无处不在,但我确信只需将引号加倍即可避免这种情况。

那里肯定有更多选择,但我不知道它们是什么。您对我/我们有什么建议吗?

【问题讨论】:

  • 只是好奇谁会否决所有这些好的建议,而无需费心解释。如果建议不好,至少让我们知道原因,以便我们学习。
  • 我的想法完全正确。我们的答案很相似,所以我投了你的票 :) 我相信动态数据和/或脚手架是他所追求的
  • @David Stratton:我也很好奇,至少可以说这种行为很奇怪。我投票结束整个问题,以阻止报复性投票。
  • 显然有人不喜欢 ORM。
  • 如果您没有 VS 2008(VS 2010 现已推出!),您肯定会错过很多。 IIRC 除了 DataSets 之外确实没有太多选择,尽管您可以将 NHibernate 与 XML 映射一起使用(不是 Fluent NHibernate)。

标签: .net data-access


【解决方案1】:

表适配器很古老。并不是说它们仍然没有用,但我不会在没有充分理由的情况下亲自使用它们。 Linq to SQL 正是为这种快速发展而生的。设置起来比数据集快得多,而且查询和更新也更容易。

还有 Entity Framework 和 NHibernate,但它们更针对大型以域为中心的应用程序,而不是快速而肮脏的数据访问/更新。

【讨论】:

    【解决方案2】:

    在这种情况下,您的问题似乎完全解决了数据访问问题,并且您提到了 .NET 领域中相当陈旧的方法。

    你看过LINQ-to-SQLLINQ-to-Entities吗?这两种技术都可以解决您的大部分问题(如果不是全部的话),如果您不使用基于 SQL-Server 的后端,后者是两者的唯一解决方案。

    【讨论】:

      【解决方案3】:

      1 & 2) 查看ASP.NET MVC

      3) 查看LINQ to SQL

      【讨论】:

        【解决方案4】:

        在我看来,您正在寻找某种脚手架工具。那里有很多。 SubSonic 肯定有一个。

        Here is a link from MSDN

        【讨论】:

        • 为什么投反对票?那篇文章的第一行说“软件开发中经常出现的任务是显示和编辑数据。ASP.NET 动态数据使您能够用最少的代码或没有代码创建数据驱动的应用程序。脚手架机制是动态数据中的一个重要特性这使您能够快速生成这些应用程序。”...这不正是您想要完成的吗?
        【解决方案5】:

        你看过Dynamic Data吗?对于几乎没有时间投入(如果数据库结构正确)的漂亮、干净的 DB CRUD 解决方案来说,这真是太棒了。

        您可以添加登录屏幕或仅使用 Windows 集成身份验证以保持一致性。

        此外,学习曲线几乎为零。我在观看介绍视频的 20 分钟内完成了我的第一个站点,它非常简单,即使是最基本的初学者级程序员也能做到。

        【讨论】:

        • 不是吗?它并不适合所有事情,但几乎我从事的每个项目都需要添加管理站点以对数据库进行后门访问,这是我选择的工具。当我第一次尝试时,我被震撼了。微软在这里做了一件好事!
        【解决方案6】:

        你见过ASP.NET Dynamic Data吗?

        【讨论】:

          猜你喜欢
          • 2011-02-26
          • 1970-01-01
          • 1970-01-01
          • 2017-03-15
          • 1970-01-01
          • 1970-01-01
          • 2015-05-25
          • 2011-06-08
          • 1970-01-01
          相关资源
          最近更新 更多