所以,我有相当多的使用php和coldfusion编程数据库驱动的web应用程序的经验(不是在一起,在不同的时间),我开始研究asp.net世界(我有一个项目即将到来)在所有asp.net / c#的工作中。)
我的问题是:似乎有很多的东西要陷入困境,如果我只是制作基于网络的应用程序(主要是CRUD类型的东西 - 没有精神错乱的逻辑)我应该关注哪些主题?我只是不想走下兔子的踪迹,后来发现它并没有被开发社区过多使用。在阅读一些书籍(ASP.net 3.5一步一步和ASP.net 3.5释放)我发现一些区域的主题将被解释,但在本章的结尾它会说“这东西很酷,但不是为了用于多层应用......“
到目前为止我看过的主题(看起来与我以前用于构建的应用程序有很大不同)是:
我知道这可能是一个广泛的问题 - 但这似乎是一个广泛的话题。
答案 0 :(得分:22)
好问题!我假设您可以随时选择C#语法,因此我将专注于全局。
要开始使用WebForms应用程序,您必须了解页面生命周期和应用程序生命周期。这是您的首要任务。 ASP.NET使用的模型基于Windows基于表单的编程,这对您如何考虑整个软件生产过程有影响。现在,我假设您将构建一个WebForms应用程序,因为WebForms技术(在ASP.NET中)更成熟,具有更好的第三方支持并且具有更多文档。如果你倾向于MVC,那么请记住,一个好的设计将是一个或另一个--MVC不是WebForms的一部分,它是它的替代品。
接下来,你有一些决定。您将使用标准数据访问(例如SQLClient)工具,滚动您自己的数据访问层(或使用DAL),还是使用linq to SQL?我说“决定”,因为团队中的每个人都必须在这一个上。我衷心建议您建立DAL,因为您可以根据需要对其进行优化。 Linq也不错,但有一些ominous clouds on the horizon。协调,决定并坚持下去。
虽然不是强制性的,但您应该认真考虑在单独的类库(DLL)中构建业务逻辑。 Visual Studio / ASP.NET使您可以轻松创建自己的类库并将其折叠到您的解决方案中。了解如何做到这一点,你将成为一个多年来更好的开发人员。人们通常会争辩这一点,因为它会将您的UI与数据访问隔离开来。虽然这是真的,但这并不是真正的优势 - 当您准备好学习并进行单元测试时,优势就会随之而来。刚开始假设你将UI从逻辑中分离出来,你会在路上感谢我。
此时,您可以(A)构建网页,(B)在其中显示基于数据库的动态内容。确保掌握GridView和用于填充它们的ObjectDataSource对象。注意:ObjectDataSource将数据从您的Business Class Library传送到您的UI。如果您不使用业务层,那么您将使用SQLDataSource或LinqDataSource对象直接从UI访问您的数据。
不要在你的架构上安定下来!
您现在需要决定是否要使用Microsoft的WebParts,登录和导航组件。这些可以锁定您对网站导航,用户界面等的特定方法,但如果合适,可以为您节省大量时间。
一旦你知道你是否会使用它们并且你有机会习惯它们,那么我建议你熟悉Master Pages。我广泛使用它们,它们非常适合标准化网站的整体外观和感觉。
最后,每个专业的ASP.NET开发人员必须派生他们自己的Page类(例如“MyPageClass”),以便他们可以在页面级别封装常见的操作。例如,我已经构建了一个会话管理对象,以便我可以以类型安全的方式访问所有常用的会话变量。派生的页面类负责提供sessionObj实例,以便每个页面都可以访问它而无需任何额外的工作。
现在您已准备好开始构建企业级Web应用程序了!
答案 1 :(得分:15)
设计一个应用程序。您需要知道的内容应该相当快地冒泡到顶部。
答案 2 :(得分:4)
我会说你的清单是一个非常好的开始。此外,如果您主要构建表直接应用程序,那么我将查看使用REST的VS2008 SP1中的“动态数据”示例应用程序。我倾向于远离WebForms模型并使用ASP.Net MVC。它更适合测试,并将业务逻辑与UI完全分开。另外,当你知道它的限制时,Linq-to-Sql是一个非常强大的工具。
我首先要使用ASP.Net MVC和linq-to-sql来构建一个示例,让你的脚湿透。它很容易上手,并且不需要花很长时间就能学到足够的基础知识来使它变得有用。
最好的学习方法就是去做。
至于“我应该忽略什么?”:。Net Remoting和Web Services。这已经被称为WCF的更强大的框架所取代。
答案 3 :(得分:2)
你不应该忘记审查的一件事,主要是你要开发一个web应用程序,是你应该知道webForm的生命周期,你也需要熟悉服务器端如何工作,客户端如何工作。 然后,您可以查看母版页,在您的网站,asp .net控件,用户控件等之间拥有相同的外观和行为。 泛型,匿名方法,还有更多需要学习的东西,实际上我正在尝试每次空闲时间学习一些关于C#的新东西...还有更多...... :)
祝你好运!!
答案 4 :(得分:0)
Web应用程序和启动项目的一般体系结构的两个良好起点是:
答案 5 :(得分:0)
我首先从基础开始。在ASP.NET 2.0和3.5中有很多强大的控件和“小部件”,尤其是AJAX控件,但我发现在没有先理解的情况下尝试对所有这些进行排序是很困惑的,如你所说' ASP.NET中的基本CRUD网页 - 无论如何,大多数真正的项目都将归结为。
我在.NET Web编程中遇到的大部分问题和难以追查的错误都归结为我没有完全理解像PostBack,ViewState,Refresh和ASP.NET数据绑定这样的ASP.NET基础知识(基本的手工编码方法,而不是2.0中花哨的无代码网格的东西 - 一旦你理解了那些东西,母版页,主题和AJAX的东西都很容易。
我推荐使用Wrox Press ASP.NET 2.0或Professional C#2008
答案 6 :(得分:0)
嗯,说实话,一件非常重要的事情就是了解静态使用的含义,以及它如何影响周围的事物。如果您不了解并发性,线程安全性和竞争条件,请不要使用静态。我之所以提到这一点,是因为过去几个月我一直在修复一些与静态资源无关的错误。这可能被认为是一个高级主题,但理解起来非常重要。
答案 7 :(得分:0)
如果您的网站非常CRUD,请查看Dynamic Data。
如果您已经从其他平台获得了足够的知识,我还会看看诸如viewstate / control状态以及它们如何工作之类的东西。
您可以从其他平台html / javascript重用大部分知识分子。 主页是要知道的事情以及使用它们时页面生命周期会发生什么。
ORM / SQL注入/输入过滤是您应该了解的内容。
如果您以前使用过MVC框架,那么请使用MS MVC,如果没有,那么您可能需要等到熟悉它们之后才开始使用它们。