我是.NET的新手 - 我应该集中精力学什么,忽略什么?

19

那么,我有相当多的经验使用php和coldfusion编程驱动数据库的Web应用程序(不是同时,而是在不同的时间),现在我开始研究asp.net世界(我在工作中有一个全部为asp.net/c#的项目)。

我的问题是:似乎有很多东西可以陷入其中,如果我只是制作基于Web的应用程序(主要是CRUD类型的东西-没有什么费解的逻辑),我应该关注哪些主题?我只是不想走下某个兔子洞,后来发现它在开发社区中并不真正被广泛使用。在阅读一些书籍(ASP.net 3.5 step by step 和 ASP.net 3.5 unleashed)时,我发现一些领域会被解释,但在章节的末尾,它会说:“这些东西很酷,但不适用于多层应用程序...”

到目前为止,我看过的主题(似乎与我习惯构建的应用程序大不相同)包括:

  • 主控件
  • DataBinding
  • Linq to SQL
  • ASP.NET MVC
  • 模板和数据绑定表达式
  • asp.net控件
8个回答

22

好问题!我假设你可以随时掌握C#语法,所以我会着重介绍大局观。

想要开始一个WebForms应用程序,你必须了解页面生命周期和应用程序生命周期。这是你的首要任务。ASP.NET使用的模型基于Windows表单编程,这对于你如何思考整个软件开发流程有影响。现在,我假设你将构建一个WebForms应用程序,因为WebForms技术(在ASP.NET中)更加成熟,有更好的第三方支持,并且有更多文档资料。如果你倾向于MVC,那么请记住,良好的设计会是其中之一,MVC不是WebForms的一部分,而是它的替代品。

接下来,你需要做出一些决策。你会使用标准数据访问工具(例如SQLClient),制作自己的数据访问层(或使用DAL),还是使用linq to SQL?我说“决策”,因为团队中的每个人都必须达成共识。我强烈建议构建一个DAL,因为你可以根据自己的需求进行优化。Linq也很好用,但是有一些令人不安的迹象。协调、决策并坚持下去。

虽然不是强制性的,但你应该认真考虑将业务逻辑构建在单独的类库中(DLL)。Visual Studio/ASP.NET使得创建自己的类库并将其整合到解决方案中变得轻而易举。学会这样做,你将成为未来更好的开发者。人们通常根据这样一个观点来辩论,即它可以将UI和数据访问分离。虽然正确,但实际上优势在于未来当你准备学习和做单元测试时。只需要从一开始就假定你会将UI与逻辑分开,未来你会感激我的建议。

目前你可以(A)构建网页和(B)在其中显示动态的、基于数据库的内容。确保掌握用于填充它们的 GridView 和 ObjectDataSource 对象。注意:ObjectDataSource 是将数据从 Business Class Library 传输到 UI 的工具。如果不使用 Business Layer,则会直接从 UI 使用 SQLDataSource 或 LinqDataSource 对象访问数据。

现在不要就你的架构做出决定!

你现在需要决定是否要使用 Microsoft 的 WebParts、Login 和 Navigation 组件。它们锁定了你对站点导航、UI 等特定方法的选择,但如果适当的话可以节省大量时间。

一旦你知道自己是否会使用这些组件并且有机会熟悉它们,那么我建议你熟悉 Master Pages。我广泛使用它们,它们非常适合标准化整个站点的外观和感觉。

最后,每个专业的 ASP.NET 开发人员都必须派生出自己的 Page 类(例如,“MyPageClass”),以便他们可以封装页面级别的常见操作。例如,我构建了一个会话管理对象,这样我就可以以类型安全的方式访问所有常用会话变量。派生的页面类负责提供 sessionObj 实例,以便每个页面都可以在不进行任何其他工作的情况下访问它。

现在,你已经准备好开始构建企业级 web 应用程序了!


不错的写作...虽然我会说你最后一点在ASP.NET 1.0之外的重要性较小。 - alex
Alex - 你为什么说派生页面类的重要性较小?我很好奇! - Mark Brittingham
我认为母版页使得通过创建基础页面类获得的许多功能变得多余了。但这只是我的个人看法! - alex
1
Alex - 我不同意。从基本页面类派生的重点在于您可以访问变量和实用程序方法,就好像它们是您类的一部分。要访问主页中的变量/方法,您需要在ASPX页面中放置指令,然后通过变量引用主页。 - Mark Brittingham
母版页只是不同的 - 很好 - 但与基本页面类有不同的角色。 - Mark Brittingham

15

设计一个应用程序。你需要知道的内容应该相当快地浮现到顶部。


我完全同意。构建一个真正需要的应用程序,而不仅仅是标准示例应用程序。这样你就会遇到你真正需要学习的领域。 - Blounty
这是最好的建议。 - Robert S.
我同意这种看法,但是有一些东西你应该事先决定(如数据访问层、使用 MS WebParts、使用 MVC 等)。我在下面的回复中涵盖了它们。 - Mark Brittingham

4
我认为你的清单已经是一个不错的开始了。此外,如果您主要构建表格直接应用程序,则应查看VS2008 SP1中使用REST的“动态数据”示例应用程序。我倾向于避免WebForms模型并使用ASP.Net MVC。这对于测试更好,并且可以将业务逻辑与UI清晰地分离。另外,当你知道它的限制时,Linq-to-Sql是一个非常强大的工具。
我建议先使用ASP.Net MVC和linq-to-sql来制作样例以熟悉其基本操作。入门相当容易,学习足够的基础知识使其有用也不需要花费太长时间。
最好的学习方法是实践。
至于“我应该忽略什么?”:.Net Remoting和Web Services。这已被更强大的框架WCF所取代。

放弃使用.NET Remoting,转而使用WCF? - biozinc

2
如果你要开发Web应用程序,有一件事情是不应该忘记的,那就是了解WebForm的生命周期,同时你需要熟悉服务器端和客户端的工作方式。 然后你可以查看Master Pages,以在站点中获得统一的外观和行为,例如asp.net控件、用户控件等。 泛型、匿名方法等等,还有很多需要学习的东西。实际上,我尽力在利用空闲时间学习关于C#的新知识...还有很多要学...祝好运!

除非你使用MVC,否则你应该了解WebForm的生命周期。事实上,MVC的一个巨大优点是你不必了解所有这些琐碎的细节。 - Anthony

0

如果你的网站将会非常CRUD重,可以看看动态数据

如果你已经从其他平台获得了足够的知识,我也建议你看看像视图状态/控件状态这样的东西以及它们的工作原理。

你可以重复使用大部分来自其他平台的HTML / JavaScript知识。掌握主页面是必须的,当使用它们时,要了解页面生命周期发生了什么。

ORM / SQL注入/输入过滤也是你应该熟练掌握的内容。

如果你以前使用过MVC框架,那么就选择MS MVC,否则你可能需要等到你对它们感到舒适之后再深入研究。


0
  1. 先学习C#语言
  2. 选择CRUD面向对象的方法:选择Entity Framework(Microsoft建议使用)、Linq2SQL、Nhibernate(我个人的建议)。
  3. ASP.Net MVC+Nunit+JQuery+JSon对象。
    我还会考虑WCF,因为它变得越来越重要。

对于Web应用程序的一般架构和起始项目,有两个良好的起点:


0

我建议从基础知识开始学起。ASP.NET 2.0和3.5有许多强大的控件和“小部件”,特别是AJAX控件,但在没有理解ASP.NET中的基本CRUD网页之前,我发现尝试理清它们都很混乱——而这正是大多数真实项目所涉及到的。

.NET Web编程中的大多数问题和难以追踪的错误都归结于我未完全理解ASP.NET的基本知识,例如PostBack、ViewState、Refresh和ASP.NET数据绑定(基本手动编码方法,而不是2.0中的花哨无代码网格)——一旦你理解了这些内容,母版页、主题和AJAX就会变得相对容易。

我推荐Wrox Press的ASP.NET 2.0,或者Professional C# 2008。


很好的观点 - 我认为我遇到的最大问题是整个Viewstate的概念 - 它完全不像我以前做过的任何东西。谢谢! - Paul Mignard

0

说实话,有一件非常重要的事情就是要理解静态用法的意义以及它对周围事物的影响。如果你不了解并发、线程安全和竞态条件,那就不要使用静态。我之所以提到这个问题,是因为在过去的几个月里,我被卡在了修复与静态资源不正确使用有关的许多错误中。这可能被认为是一个高级话题,但理解它非常重要。


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