简体   繁体   English

学习C#,ASP.NET 3.5 - 我应该学习什么顺序/要跳过什么?

[英]Learning C#, ASP.NET 3.5 - what order should I learn in / what to skip?

There's a lot to C# & ASP.net. C#和ASP.net有很多东西。 Where should I start? 我应该从哪里开始? What should I not bother focusing on? 我不应该关注什么?

Should I learn Winforms then WPF? 我应该学习Winforms然后学习WPF吗? Ditto for webforms / Silverlight? 同样适用于webforms / Silverlight? Should I learn ASP.MVC or classic ASP.NET? 我应该学习ASP.MVC还是经典的ASP.NET? If both, which first? 如果两者兼而有之?

In the either/or cases - which will make more sense having known the other first? 在这两种情况下 - 首先知道另一种情况会更有意义吗?

What major .NET feature(s) should I learn upfront that will open the doors of understanding to what lies ahead? 我应该提前学习哪些主要的.NET功能,这将打开理解未来前景的大门?

I am deliberately not mentioning fundamentals like value / reference Types, Classes, object-oriented concepts, etc since they should come first, before specifics. 我故意不提及价值/参考类型,类,面向对象概念等基础知识,因为它们应该在特定之前首先出现。 Here, I am interested in specifics. 在这里,我对具体细节感兴趣。

[edit - added detail of what my goals are] Good points raised - "what do I want to write"? [编辑 - 增加了我的目标的细节]提出的好点 - “我想写什么”?

Basically, an intranet application that monitors a set of documents and implements a workflow as a change control process. 基本上,Intranet应用程序监视一组文档并将工作流实现为更改控制过程。 The app will also audit the documents and report problems, self-correcting common errors. 该应用程序还将审核文档并报告问题,自我纠正常见错误。 A lot of the parameters will need to be end-user definable and pluggable. 许多参数需要是最终用户可定义和可插拔的。 The document format needs to be adaptable to different proprietary formats although they are fundamentally the same. 文档格式需要适应不同的专有格式,尽管它们基本相同。 The app will be very modular. 该应用程序将非常模块化。

I'm leaning towards a web interface because the client specs & admin rights will vary - a browser is really the only thing I can count on. 我倾向于Web界面,因为客户端规格和管理员权限会有所不同 - 浏览器实际上是我唯一可以信赖的东西。

As you can see, it's a bit of everything. 如你所见,这是一切。

What do you want to write? 你想写什么? If you want to write a Windows client-side app, look into WinForms and WPF (no real need to learn WinForms before WPF, other than the way that a lot of tutorials/books will probably compare WPF concepts with WinForms concepts). 如果你想编写一个Windows客户端应用程序,请查看WinForms和WPF(在WPF之前不需要学习WinForms,除了许多教程/书籍可能将WPF概念与WinForms概念进行比较的方式)。 If you're looking at a web app, then ASP.NET or ASP.MVC - I don't know whether you really need the "normal" ASP.NET before MVC. 如果您正在查看Web应用程序,那么ASP.NET或ASP.MVC - 我不知道您是否真的需要MVC之前的“普通”ASP.NET。

Silverlight is a bit of both, in a way - rich client probably talking to a server for interesting data etc. Silverlight在某种程度上是两者兼而有之 - 富客户端可能正在与服务器讨论有趣的数据等。

Before learning any of these though, I suggest you learn the fundamentals which are one step up from the topics you mentioned - things like how text works in .NET (including encodings and regular expressions), I/O, perhaps threading. 在学习任何这些之前,我建议你学习一些基础知识,这些基础知识是你提到的主题的一步 - 比如文本在.NET中是如何工作的(包括编码和正则表达式),I / O,也许是线程。 Oh, and LINQ :) There are a few books which are very good on this front: 哦,还有LINQ :)这方面有一些非常好的书:

I had the same question when I moved from Classic ASP to .NET 2.0... .NET is huge: so where should I start? 当我从Classic ASP转移到.NET 2.0时,我遇到了同样的问题...... .NET非常庞大:那么我应该从哪里开始呢?

What i did was put my hand dirty and started slow, take a project (in my case was a very important project - a finance web app that would cover and automatize all 4 persons work) and start to implement, every time I didn't know how to accomplish something or I had an idea in ASP but not in ASP.NET I would go to www.asp.net or 4GuysFromRolla website and search for examples, copy/paste, understand what I was doing and ... continue to the next wall. 我所做的就是把我的手放得很脏,开始慢,拿一个项目(在我的情况下是一个非常重要的项目 - 一个财务网络应用程序,将覆盖并自动化所有4个人的工作)并开始实施,每次我没有知道如何完成某些事情或者我在ASP中有一个想法,但不是在ASP.NET中我会去www.asp.net4GuysFromRolla网站搜索示例,复制/粘贴,了解我在做什么并继续...下一堵墙。

Took me 6 month to have everything up and running but was worst it! 花了我6个月的时间让一切运转起来,但最糟糕的是它! now that passed almost 3 years I know I did the right choice but back then ... I was scared! 现在已经过了差不多3年,我知道我做了正确的选择,但当时......我很害怕!

now... you refer .NET 3.5, it has a bunch of new things like extensions, linq, etc... I would go by the simple part and when the times comes, "maybe I can use LINQ here, let me search how to use it on this part" 现在......你指的是.NET 3.5,它有很多新的东西,比如扩展,linq等......我会按照简单的部分来看看,当时代到来时,“也许我可以在这里使用LINQ,让我搜索一下如何在这部分使用它“

hope you follow your own path and buy some reference book so you can read something new and have a reference whenever you need "ahhh, I read this somewhere in the book, let me search... where was it?" 希望你按照自己的方式购买一些参考书,这样你就可以阅读新的东西,并在需要时提供参考“啊,我在书中的某个地方读到这个,让我搜索一下......它在哪里?”

I bought Professional ASP.NET from Wrox as a reference book, and even today I go there to see new things, even when I'm started to use .NET 3.5, the idea is there, there is only a new way to accomplishing it. 从Wrox购买了Professional ASP.NET作为参考书,即使在今天我去那里看新东西,即使我开始使用.NET 3.5,这个想法就在那里,只有一种新方法来实现它。

I would recommend learning whatever you are interested in. Pick a "pet project" and try to create it using one of the technologies you listed. 我建议学习你感兴趣的任何内容。选择一个“宠物项目”并尝试使用你列出的技术之一创建它。 If you enjoy making windows desktop style applications, then go with WPF or WinForms. 如果您喜欢制作Windows桌面风格的应用程序,那么请使用WPF或WinForms。 If you enjoy the idea of making rich desktop style applications on the web, then go for Silverlight. 如果您喜欢在网络上制作丰富的桌面风格应用程序,那么请选择Silverlight。 There will be a ton of overlap. 会有很多重叠。

But in terms of core .NET Development, if I were starting off fresh, I'd recommend learning ASP.NET MVC first, as it will give you a good basis for things like: Designing for Testability, coding without ViewState, SEO-friendly URLs, etc.. 但就核心.NET开发而言,如果我刚刚开始,我建议首先学习ASP.NET MVC,因为它将为你提供一个很好的基础:可测性设计,没有ViewState编码,SEO友好网址等。

It depends (awful response, I know, but let me explain) 这取决于(可怕的反应,我知道,但让我解释一下)

Are you going to do any windows forms development? 你打算做任何Windows窗体开发吗? You mention C# and ASP.NET, so to me it sounds like you are doing Web-based programming. 你提到C#和ASP.NET,所以对你而言,这听起来像你在做基于Web的编程。 If so, skip Winforms and WPF for now. 如果是这样,请暂时跳过Winforms和WPF。

Silverlight is worth checking out, but it is still fairly new so I'd make it a 2nd priority. Silverlight值得一试,但它仍然相当新,所以我把它作为第二优先。

Now to the MVC or Web forms question. 现在来到MVC或Web表单问题。 MVC gives you total control over the HTML, CSS, and Javascript that is emitted, but requires more work, whereas Web forms gives you ease of development but without 100% control over the markup that is emitted. MVC使您可以完全控制发出的HTML,CSS和Javascript,但需要更多工作,而Web表单使您可以轻松开发,但不会100%控制发出的标记。 You can do lots with Web forms and the introduction of MVC doesn't threaten the future of Web forms. 您可以使用Web表单进行大量操作,并且MVC的引入不会威胁Web表单的未来。 MVC is very new so things are changing but eventually I see them both living happily side by side. MVC是非常新的,所以事情正在发生变化,但最终我看到他们俩幸福地生活在一起。

Regarding learning .NET in general, I've heard great things about a book called CLR via C# which will go over all the fundamentals and inner workings of .NET. 关于一般学习.NET,我听说过一本名为CLR的书,通过C#,它将涵盖.NET的所有基础知识和内部工作原理。

Definitely learn the fundamentals (like you already mentioned) like how the CLR handles types, garbage collections, security, "AppDomains", threading, etc. 绝对要学习基础知识(就像你已经提到的那样),比如CLR如何处理类型,垃圾收集,安全性,“AppDomains”,线程等。

For ASP.NET, learning the "page life cycle" and "control life cycle" are essential. 对于ASP.NET,学习“页面生命周期”和“控制生命周期”是必不可少的。 Also, session state and data binding are probably good things to understand. 此外,会话状态和数据绑定可能是很好的理解。

I wouldn't worry about WinForms, WPF, or Silverlight for now. 我现在不担心WinForms,WPF或Silverlight。 They won't directly help with ASP.NET and are relatively easy to pickup after you've learned the CLR and .NET Framework fundamentals. 他们不会直接帮助ASP.NET,并且在学习了CLR和.NET Framework基础知识之后相对容易获取。

What is your primary objective - learning for fun or hireability? 您的主要目标是什么 - 学习乐趣或可租用性? If you're a student and years out from worrying about a career in programming then I will strongly echo the idea of picking a project about something relatively simple that you're interested in and then just doing it. 如果你是一名学生并且多年不担心编程职业,那么我将强烈反映选择一个项目,这个项目是关于你感兴趣的相对简单的事情,然后就是这样做。

Say you want to create an application that will track your video games collection. 假设您要创建一个跟踪您的视频游戏集的应用程序。 First you'll need a way to store the information - this will be a combination of c# and some persistence strategy like mySql or SQL Server or XML. 首先,您需要一种存储信息的方法 - 这将是c#和一些持久性策略(如mySql或SQL Server或XML)的组合。

Then you'll need a way to present your collection and interact with it - adding, deleting and editing objects and persisting the changes. 然后,您将需要一种方式来呈现您的集合并与之交互 - 添加,删除和编辑对象并持久保存更改。 In this step, use every presentation technology that you're interested in - WPF, WinForms, Asp.net, asp.net with MVC, Silverlight - whatever you're interested in. As you learn to do one, you'll learn techniques you'll need to use in the next. 在这一步中,使用您感兴趣的每种演示技术 - WPF,WinForms,Asp.net,带有MVC的asp.net,Silverlight - 无论您感兴趣的是什么。当您学会做一个时,您将学习技巧你需要在下一个使用。

Don't pick just one - play with all the ones you have any interest with at all. 不要只选一个 - 玩你感兴趣的所有人。

Now, if you're primarily interested in what skills will get you hired the quickest, I'd say look at your market, but it's probably going to be straight ASP.Net skills that will be the most in demand - or at least that's what it looks like from my perspective. 现在,如果你主要感兴趣的是什么技能会让你获得最快,我会说看看你的市场,但它可能是直接的ASP.Net技能,将是最需要的 - 或至少是从我的角度看它是什么样的。 In a couple of years it may well be ASP.Net MVC skills. 在几年内它可能是ASP.Net MVC技能。 In some markets though you'll have an easier chance of getting VB6 work. 在某些市场中,您可以更轻松地获得VB6的工作。 It all depends on where and when you're looking. 这一切都取决于你在哪里和什么时候看。

I highly recommend the following books, for learning about whats new in ASP.NET 3.5 我强烈推荐以下书籍,以了解ASP.NET 3.5中的新功能

Sometimes videos might help. 有时视频可能有所帮助 I learnt everything I needed to know to start off with from a set of video tutorials from Total Training which is here . 我意识到,我需要知道与从总培训一组视频教程是开始一切都在这里 Pricey if you buy the disks but there is a cheaper online only option. 如果您购买磁盘,但有一个更便宜的在线选项,价格昂贵。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM