2011-08-19 37 views
7

我在工作中继承了一些程序,其中原作者使用Microsoft Visual Studio的数据组件(数据集,数据适配器等)在内部创建设计环境(从工具箱或使用向导)。这产生了一些半定制的(专用于数据)类,并且还将SQL代码放入设计器生成的类中。 (我一直倾向于要么明确地拥有一个数据集,要么创建自己的专用类来存放数据,并隐藏底层数据层的复杂性)。但是,这并不是我所习惯的做法。使用Visual Studio设计器组件对数据有什么优缺点

有没有人有一些很好的见解或链接讨论使用Visual Studio数据组件的优点和缺点? (注意,原作者也没有做出彻底的评论,并且为我的口味写了一些不太容易解释的“聪明”的代码,所以我并不倾向于认为他知道任何比我好)

我想另一种要求是这样的:是否使用数据设计器组件导致代码是“遵循最佳实践”,是可维护的等?这看起来对我来说并不是这样,但我正在寻找专家的意见。

[编辑:添加澄清意图的一些背景]

如果我是正确的(它看起来像我)关于使用设计器组件实在是最适合的原型,等等,那么我将不得不去与原始开发者和我的经理进行一些艰难的对话。所以我想在我的问题中增加更多关注“讨论正反两方面的链接”......我正在寻找一些我可以用来支持我声称这种开发/代码风格不是最适合生产使用......谢谢。

回答

3

一般可视化组件是一次性的应用,POC的和spike应用,即原型。这是有几个原因的;他们非常迅速地聚在一起,但是维持一个完整的恶梦。我不确定你的应用程序的规模,但如果是我,我会争辩说,在目前的形式下,拥有成本会随着时间的推移而增加,因此会更多地考虑DDD的发展风格。将数据层绑定并将其替换为良好的实体ORM; NHibernate(首选)或实体框架4(更容易进入)。放下'聪明的代码'并开始使用Kiss, Yagni, dry mantra

  1. :如果你想在这方面看起来有些多读)

    在下面的,它可能很难让他们看到了光明,但一旦开始花费不到他们会喜欢你吧Skill Matter是训练设施运行公开会议和播客的负荷,你可以看

  2. 一本好书,两者开发的和管理者读的是Ship IT,它着眼于好项目的做法。作为对务实的书架
  3. Martin Fowlers' blog做任何事情的所有事情DDD
  4. Ayende's blog是万物伟大的地方NHibernate的
  5. stackoverflow.com,这个地方的岩石
+0

谢谢,这是很好的建议和我已经相信的东西。当我对开发人员说“你看,我需要改变...” – Aerik

+0

同意你有什么参考可以帮助我吗?可视化数据库组件不应该用于“真实”应用程序中。但是,用ORM替换这些数据比用仍然使用ADO.NET DataSets/DataTables的数据类替换可视数据库组件要复杂得多。这里的区别是几个小时的工作。 – MusiGenesis

+0

尽管我还是很希望,但它依然不像权威(关于使用设计器组件的优点和缺点 - 很多其他信息,谢谢),但我很欣赏所有的反馈和链接。实际上,来自这个社区并且相当一致的答案本身是非常有说服力的,即使没有权威的引用也是如此......无论如何,我认为这是最好的答案,所以我在这里奖励赏金。感谢大家对此主题的意见。祝我好运。 – Aerik

1

VS数据组件的目的是快速应用程序开发。从这个角度看你可以看到它的优点和缺点:

优点:快速发展,不需要太多的编码和知识。适用于未来不会改变的小应用。

缺点:打破层应用程序设计逻辑(在这里添加所有这样的设计优点)结合在一个文件中。 因此几乎不可能动态替换数据源。使更复杂的大型应用程序支持。 DI,TDD - 它使用它神秘的东西。

其实这是一个非常广泛的问题。 我建议你阅读更多关于N层应用程序开发和测试驱动开发

希望这有助于

+0

谢谢 - 我喜欢直截了当的利弊答案。 – Aerik

0

我个人认为你肯定是在正确的轨道,但imho它真的取决于你已经有什么,以及计划对于产品的未来。

我已经看到了正如你所谈论的那样使用的生产代码,并且工作正常,并且易于维护。 来自Telerik等非常大的公司的模块甚至有很大的下降,这些都属于您正在讨论的相同类型的开发。

我认为对于您的雇主而言真正重要的因素是:您可以用什么来以最快最有效的方式完成工作。我想说的是,总的来说,直接开箱即用的“拖放”工具对于长期的企业级应用程序来说并不是很好。

这是Charles Petzold撰​​写的一篇文章,可能为您提供更多“专家”证书信息。

http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

0

我甚至不会去那么远,说设计师DB组件是良好的的POC或原型。这些组件在Visual Studio中主要是作为框架的销售推销,所以微软可以说“哇,看看用.NET创建一个数据驱动的应用程序是多么容易!”恕我直言,它们应该在多年前被移除。

然而,不要混淆ADO.NET设计者组件(即数据表,数据集,的DataReader,DataAdapters等)本身。由于您继承的应用程序是围绕设计器组件构建的,这意味着它也基本上是围绕ADO.NET组件构建的。你可以(也应该)摆脱设计器组件,但你也不一定会摆脱ADO.NET。

相关问题