从.NET开始 – ASP.NET,WPF,Silverlight或命令行C#?

如果有人开始使用.NET框架,那么最可行的模板是什么? 可行性我指的是学习曲线最低,收益最高的那个。

从…开始:

  • C#中的命令提示应用程序?
  • 使用ASP.NET的Web应用程序?
  • XAML / C#中的Silverlight应用程序?
  • WPF / Winforms桌面应用程序?

我不想过多地关注某个特定的域,而是要学习.NET Framework 4.0中的所有内容。 以哪种顺序学习.NET会更好?

控制台应用程序显然是起点:用户界面是一个巨大的森林,在你开发出在荒野中寻找小径的能力之前,尝试通过它是没有意义的。 此外,没有什么可以学习做的控制台应用程序,这些应用程序不适用于您在C#中执行的所有操作。

之后的下一步是学习如何构建用户界面。 我会对那些暗示你选择WinForms的人提出异议:是的,那里有很多关于如何使用它的信息,并且有很多工具,最简单的是它很容易理解。 但是WinForms存在两个问题。

首先,WinForms很容易实现的很多东西实际上是非常糟糕的编程实践。 在同一个类中混合业务和表示逻辑是WinForms编程中的常态,并且需要花费大量精力来打破这种习惯,特别是因为数据绑定 – 将数据模型与表示分离的关键工具 – 在WinForms,虽然它是WPF架构的核心。 WPF还有很多东西需要学习 – 还有更多 – 但你最终会编写更好的程序。

其次,WinForms即将结束。 你不会看到微软投入更多资源来改进它。 他们完成了。 这并不意味着它不会对未来有用 – 它是 – 但它现在在软件开发生态系统中的整体渗透程度与它将来一样大。

使用WPF的另一个原因是,你学习使用WPF的大部分内容也适用于Silverlight,它打开了一扇永远关闭WinForms的大门。

就ASP.NET而言,这是您在需要之前不想学习的东西。

命令提示符可能是最容易的,因为你可以忽略消息和类似的东西,但你当然非常有限。 接下来是WinForms,这很容易,因为你可以很容易地跟踪状态。

但它可能取决于您当前的经验,如果您已经拥有一些Web体验,WebForms可能比WinForms更有意义,例如

您是否有需要或想要开发的应用程序?

如果你有,尝试定义一些细节,然后你将有一套你需要实现的目标。

一旦你有了这些目标,你就可以找出解决问题的最佳技术。

例如,如果你有一个相当静态的用户界面,WinForms可能会没问题,但是如果你想要整合动画和其他视觉效果,你应该看看WPF / Silverlight。

command line / console应用程序开始。

为什么?

首先,您的面向对象概念的实现是基础,但没有涉及Web应用程序/ Windows应用程序/服务的复杂性或者什么。

使用Console application模板进行编程将使您远离不必要的复杂性,并且您可以专注于框架和function的内部工作。

完成后并探索了诸如System.Collections等function/库之后,您应该根据您的兴趣和以前的开发经验从大量开发域中进行选择。

即Web应用程序开发/桌面开发或其他。

这将帮助您确定与您的兴趣并行的进一步细读的技术。 比如,如果您对Web应用程序开发感兴趣,可以使用Asp.Net WebForms / Asp.Net MVC等,并且不需要浪费时间在Windows Forms or WPF

希望这可以帮助

如果我在教新人(编程全新),那么我将从控制台应用程序开始。 这将使您有机会教授基本的OO编程概念,而不会增加GUI开发的复杂性或ASP.Net页面生命周期的潜在复杂性。

然后我将进入WinForms开发并从事事件驱动编程和GUI。

您已经了解哪些编程环境?

我将从一个标准的Windows应用程序(winforms)开始,因为您可以轻松地将可视组件拖放到窗口上,并且可以非常快速和轻松地创建一些交互。

虽然大多数项目都可以轻松创建并直接运行,但Web应用程序需要更多的基础结构和有关Web的知识。

“而且最好的意思是那个学习曲线最低,收益最高的那个。我不想过多地关注一个特定的领域,而是在.NET Framework 4.0中学到一些东西。 “

如果你已经在.NET中编程了一段时间,你知道如果我见过一个LOL,上面的两个句子是矛盾的。

上次我检查.NET包含:程序集y = 15.1x + 17.3 108

命名空间y = 51.6x + 51 361

类型y = 2249.3x + 626.9 14123

成员y = 21343x + 7951.3 136009

因此,即使您已经使用.NET全程编程一段时间,您也几乎不会刮擦表面! 你甚至没有提到你是否精通C#但是如果没有你可以阅读Petzold免费电子书以加快速度,因为这是最常用于Silverlight,ASP,WinForms编程的语言。 如果命令行感到厌烦,那么我就建议使用“Head First C#”一书 ,它将为您提供一个温和的C#介绍以及.NET的function。

对于最初的步骤,我建议使用命令行应用程序。

对于其他一切,请跟进WinForm应用程序。 他们在turorials等广泛的网络覆盖,并提供涵盖基本和高级C#function的广泛的问题和解决方案。

ASP.NET,Silverlight和WPF是这些基础知识(控制台和Winforms)的进一步扩展,它实际上添加了另一组框架库。 这些是您在管理基础知识后可以解决的锦上添花。

不要误解我的意思,你也可以学习Silverlight或WPF应用程序的基础知识。 但几乎所有使用C#开发过的人都知道WinForm,所以你更有可能找到你在网上(在SO或其他地方)遇到的难题的好答案。 这里有很多人比我更了解,他们可以帮助您探索.NET框架的深度

一旦你掌握了这些部分,随时可以探索新领域 – 很快你就会回答我关于WPF的问题,我对此一无所知;-)

以下是我根据您指定的标准进行的评估:

  • 命令行学习起来非常快,但是除了打印文本之外你不能做太多的事情,所以在玩了一些简单的程序之后你很快就会继续前进。

  • 只要您开始使用一些使用DataTemplates和ItemsControl的示例,WPF / Silverlight就是命令行之后的第二个最简单的命令行。 一旦熟悉了这些,您就可以专注于学习C#和.NET Framework基类库的复杂性,或者可以探索WPF的图形元素。

  • 要避免使用WinForms,因为它比WPF / Silverlight更难理解:在WPF / Silverlight中,您创建数据对象,然后绘制一个显示它们的视图,以及WPF / Silverlight处理所有定位和布局。 在WinForms中,您必须在数据对象和UI对象之间来回手动传输数据,并且必须明确定位所有内容。 对WinForms的其他攻击是它正在迅速变得过时,它会迫使你进入一些非常糟糕的编程实践。

  • 毫无疑问,ASP.NET拥有您列出的所有技术的最高学习曲线,我会尽可能地远离它!

当你准备从命令行gradle(可能会在一周之内),你是否选择WPF或Silverlight并不重要。 WPF稍微容易部署,技能转移得很好,所以我可能会从那里开始。

首先创建一个简单的WPF应用程序,该应用程序具有一个带有Button,ListBox和TextBox的单个窗口。 在UserControl中创建属性并绑定它们。 然后开始玩。 有许多演练可以帮助您入门。 我发现Adam Nathan的书“WPF Unleashed”对于初学者来说是一个很棒的资源。

如果可以的话,获取Expression Blend的副本。 您可以下载30天的试用版。 它非常有助于玩WPF的UI方面并了解它们的工作方式,尤其是资源,模板和动画。

最后一个提示:如果您发现包含此类代码的书籍或博客,请为您的生活而奔波:

 for(int i=0; i<10; i++) { Button b = new Button(); ... panel.Add(b); } 

(当然,除非作者仅使用这样的代码向您展示不该做的事情。)

我建议构建简单的命令行程序,以获得语言+ .NET框架的感觉。 然而,在UI驱动的世界中,这可能有点不令人满意。 许多基于UI的技术将向您介绍与外部框架集成的概念,这本身就是一项关键体验。 通常这是非常有益的,因为其他人已经完成了艰苦的工作,你可以只是玩得开心。

我个人最后会推荐ASP.NET – 这有点奇怪,你会养成坏习惯。

根据该建议,我会建议接下来使用WinForms,它会教你更多有关事件和UI交互的内容,但仍然没有严格的编码模式。 在我早期,我写了一些令人震惊的WinForms代码。 你有很多权力,但很少有指导。

我已经看到了WPF的一些很好的工作,但它需要大量的阅读。 至少作为一个起点,你通常可以用很少的代码制作一些高级设计 – 不会出错,你可以成长。

在使用控制台应用程序之后,我的第一个UI建议是ASP.NET MVC框架。 它易于编码,具有相当严格的设计模式,因此您不会出错,并且您可以在相对较短的时间内构建相当不错的网站。 与其他技术相比,我个人非常快速地选择了它,但发现可扩展性点对我很感兴趣。