我意识到这可能是主观的,但我真的需要一个答案,我似乎无法在论坛的其他部分找到足够接近它的东西.我读过一些人说,框架(任何MVC框架)可以掩盖太多的东西,而其他人则说它可以促进良好的实践.我意识到框架对于某个级别的程序员来说是很好的,但是个人的开始呢?是否应该专注于语言或一起学习?
我认为网络开发比任何人第一次开始进入时都要强大!阅读本文并知道它是全部可选的......但需要非常擅长你的工作.
我建议你先花时间学习你的语言.我建议学习C#只是因为它更具市场价值,并且通常直接支持大多数MS产品.通过学习C# - ASP.NET中的编程,控制台应用程序,服务器,服务,桌面应用程序等都将在您的掌控之中.您可以为大多数MS产品以及许多Linux类型平台编程.
一旦你有了这个,那么你可以转向网络编程,因为网络编程有一些复杂性,大多数其他环境没有.诸如会话,缓存,状态管理,跨站点脚本,样式,客户端与服务器端编程,浏览器支持,HTTP如何工作,获取与发布,表单如何工作,cookie等概念都位于需要单独学习的内容列表,更不用说学习ASP.NET基础框架和命名空间了.
一旦你掌握了编程语言,然后是网络编程的概念,我建议你暂停并学习数据库设计.不要担心性能......尝试先学好设计.接下来将有表现.Access(我知道亵渎)是一个很好的开始.初学者很容易使用.它可以轻松转换为更强大的SQL Server平台.至少学习一些SQL ...但我建议你学习胃可以处理的东西.我听说有人说SQL就像是数据库的汇编语言.减缓应用程序停顿的首要问题是糟糕的数据库设计和糟糕的查询.一旦你掌握了这些知识 - 把它塞进你的脑海,然后看看一个好的ORM.NHybernate目前可能是最好的,但基本学习者需要的更复杂.出于这个原因,我目前建议启动和运行LINQ to SQL,因为它非常容易使用.然后看看实体框架(虽然我仍然觉得它很糟糕......你应该等到EF 2.0 ...... ERRRRR ...现在4.0用.net 4.0发布).然后是NHybernate.
现在是时候开始了解Web开发所需的基础架构了.当你学习一些网络编程的东西时,你可能会碰到这个.但您需要了解DNS,IIS,负载平衡器,粘性路由,循环,群集,容错,服务器硬件设置,Web场,缓存场(MemCached Win32,Velocity),SMTP,MSMQ,数据库邮件排队等基础知识,很多人可能会说你不需要这个.那将有一些知识渊博的网络管理员来帮助你在这里.然而,他们通常知道影响他们的事情......不是你.你知道的越多,你对雇用你的公司就越有价值.
现在您可以了解最佳实践和设计模式的详细信息.了解基础知识,例如存储库模式,工厂模式,外观模式,模型视图演示者模式,模型视图控制器模式,观察者模式以及各种其他内容.请关注Martin Fowler和其他人的建议.看看控制反转,依赖注入,SOLID原理,DRY,FIT,测试驱动设计和域驱动设计等概念.在进入下一步之前,尽可能多地学习.
你现在可以考虑框架!首先使用ASP Classic创建一个基本应用程序(免费提供IIS!).这将为您提供一个没有多余装饰的Web开发环境的味道.看看ASP.NET网络表单(简要),看看MS如何通过隐藏所有复杂的东西(现在你知道如何通过阅读上述材料来自行管理!!!)来试图让事情变得更容易.现在您不再需要ASP.NET Web窗体.立即移动到ASP.NET MVC.MVC框架为您提供了创建易于管理的Web应用程序所需的全部功能.如果你构建了一些非常大的东西,那么纯粹的web开发框架就无法处理你需要的东西了.但是,对于此类UBER自定义方案,MVC更具可扩展性.
既然您已经完成了ASP.NET MVC之旅,那么您可以查看一下微软企业应用程序块(例如他们在MySpace中使用).看看Elmah错误记录(必须具备).了解如何为MVC站点构建自定义SiteMapProvider.如果你需要进入搜索的东西了解Lucene.NET.
如果你做到这一点......你准备好了解它自己的其余部分! 玩得开心. 对于一个对上述所有概念有所了解的人来说,这个空间有很大的空间.