专业开发人员通常应避免使用.Net框架的哪些组件?

时间:2009-04-19 22:27:11

标签: c# .net vb.net

.Net是一个庞大的框架,其中一些功能似乎针对初学者,或者如果涉及大量定制则会出现问题。那么.Net框架中的哪些功能你认为专业开发人员应该避免以及为什么?

例如,.Net有一个用于常见用户管理功能的向导。使用此功能是否适合专业用途或仅适合初学者?

每个答案需要一个组件/功能/类等,因此投票特定于单个项目。

9 个答案:

答案 0 :(得分:16)

键入的数据集
ASP.NET *视图控件
ASP.NET *数据源控件

答案 1 :(得分:9)

MS Ajax

jquery和其他js框架(如原型等)是一种更轻量级和灵活的替代方案。 MS Ajax控件最初看起来很棒,直到你真的需要一个超出控件范围的自定义行为。

微软本身已经在某种程度上认识到这一点,因为jquery将与即将推出的visual studio版本捆绑在一起,并支持intellisense。

答案 2 :(得分:4)

我认为通常大多数“幕后”做大量工作的控件/功能会带来很多麻烦。使用GridView没有问题,如果那个布局完全你想要什么 - 但它很少,并且Repeater可能是更好的选择。如果你想要对你的网站有ajaxy感觉,UpdatePanels可以为你节省很多工作,但与jQuery AJAX调用相比,他们很抱歉 - 很抱歉。您提到的用户向导在开发过程中非常有用,但如果项目中需要成员资格功能,则应将其构建为集成部分。

总而言之:专业程序员应该自己完成工作并编写专门满足客户需求的代码,并且只有在实际完全符合他们需要的情况下才能使用.Net Framework的现成部分。

答案 3 :(得分:1)

Thread.Abort的

以下是Ian Griffiths关于Why Thread.Abort is Evil的一篇优秀文章以及一些更好的选择。

答案 4 :(得分:1)

Linq To XML

XmlDocument / Xpath更易于使用,如果您希望使用强类型来解析文档,请使用xsd.exeXsd2Code

<强> 修改

你更喜欢哪一个?

IEnumerable<XElement> partNos =
    from item in purchaseOrder.Descendants("Item")
    where (int) item.Element("Quantity") *
        (decimal) item.Element("USPrice") > 100
    orderby (string)item.Element("PartNumber")
    select item;

或者,使用XmlDocument和XPath

var nodes = myDocument.SelectNodes("//Item[USPrice * Quantity > 100]");

答案 5 :(得分:1)

远程处理通常是一个很好的避免,至少如果你的目标是3.0或更高,因此可以轻松地在进程中托管消息传递端点。

答案 6 :(得分:0)

  

.Net是一个巨大的框架,其中一些功能似乎针对初学者,或者如果涉及大量定制则会出现问题。

“似乎是针对初学者”这才是真正的问题。

键入的数据集就是一个很好的例子。 VS为功能提供了一个简单的简单用户界面,只有初级者才能使用这些应用程序构建极其简单的演示应用程序和经验丰富的专业人员,他们了解ADO.NET对象模型的每个细微差别以及实际执行的类型化数据集。这两个极点之间的任何人都不应该触摸它,因为有一种很好的方法可以学习ADO.NET对象模型的每一个细微差别,并且键入的数据集不是它。

或者采取LINQ。在没有很好地理解IEnumerable<T>的情况下编写LINQ代码很容易。但是在没有这些知识的情况下编写可维护的LINQ代码并不容易。

答案 7 :(得分:0)

您可以将.NET视为具有多层的洋葱。例如,.NET compact framework是完整.NET的子集。此外,在.NET上以“扩展”的形式存在“额外”层,这些层是用于新功能的可选安装,这些新功能尚未成为.NET的一部分。微软发布的ASP.NET 3.5 Extensions现已被纳入.NET 3.51,这就是一个例子。

另一种思考.NET的方法是作为一组可以使用的“库”。例如,有一组或一些例程来支持RegEx。如果你想要或需要正则表达式,那么你使用这些函数,如果不是,你可以简单地忽略它们。 SImilary可用于三角函数或安全性。

所以我想这真的归结为你的应用需要什么?如果您正在进行科学编程,您可能需要trig功能。图形应用程序将需要控制台应用程序不会执行的功能。 Web应用程序可能不需要使用剪贴板功能等。

我真的不认为.NET中有任何错误的API,只是程序员以不恰当的方式使用它们。

答案 8 :(得分:0)

在WinForms库中有很多要避免的事情。

避免DataBinding到大多数标准WinForms控件。该区域有许多虫子会导致大量头部划伤。或者至少那是我的经历。 NumericUpDown是这个混乱的一个很好的例子。

在处理大型数据集时,还要避免使用标准的WinForms控件。它们进行大量数据复制,无法很好地处理大型数据集。

避免ListView处于“虚拟”模式,因为它充满了错误。

总的来说,我只是建议远离WinForms。如果您有选择去WPF,或者至少购买一个好的,受到良好支持(并且希望减少错误)的第三方表单库。