19

所以,我有相当多的使用 php 和 Coldfusion 编程数据库驱动的 Web 应用程序的经验(不是一起,在不同的时间),我开始研究 asp.net 世界(我有一个项目正在工作这都是asp.net/c#。)

我的问题是:似乎有很多东西要陷入困境,如果我只是制作基于 Web 的应用程序(主要是 CRUD 类型的东西 - 没有令人费解的逻辑),我应该关注哪些主题?我只是不想在以后发现它并没有被开发社区过多使用的东西。在阅读一些书籍(ASP.net 3.5 一步一步和 ASP.net 3.5 释放)时,我发现了一些领域的主题将被解释,但在本章的末尾会说“这东西很酷,但不适合在多层应用程序中使用..."

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

  • 母版页
  • 数据绑定
  • LINQ转SQL
  • ASP.NET MVC
  • 模板和数据绑定表达式
  • asp.net 控件
4

8 回答 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 将数据从您的业务类库传送到您的 UI。如果您不使用业务层,那么您将使用 SQLDataSource 或 LinqDataSource 对象直接从 UI 访问您的数据。

还没有解决你的架构!

您现在需要决定是否要使用 Microsoft 的 WebParts、Login 和 Navigation 组件。这些将您锁定在站点导航、UI 等的特定方法中,但如果合适的话,可以为您节省大量时间。

一旦你知道你是否会使用这些并且你有机会习惯它们,那么我建议你熟悉母版页。我广泛使用它们,它们非常适合标准化网站的整体外观。

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

现在您已准备好开始构建企业级 Web 应用程序!

于 2008-12-23T17:47:37.763 回答
15

设计一个应用程序。你需要知道的应该很快就会浮出水面。

于 2008-12-23T17:26:09.520 回答
4

我会说你的清单是一个很好的开始。此外,如果您主要构建直接表应用程序,那么我会查看使用 REST 的 VS2008 SP1 中的“动态数据”示例应用程序。我倾向于远离 WebForms 模型并使用 ASP.Net MVC。它更适合测试,并且清晰地将业务逻辑与 UI 分开。此外,当您知道它的局限性时,Linq-to-Sql 是一个非常强大的工具。

我将首先使用 ASP.Net MVC 和 linq-to-sql 构建一个示例,让您的脚湿透。它很容易上手,并且不需要很长时间就可以学习足够的基础知识以使其有用。

最好的学习方法是做。

至于“我应该忽略什么?”:.Net Remoting 和 Web 服务。这已被称为 WCF 的更强大的框架所取代。

于 2008-12-23T17:23:07.890 回答
2

你不应该忘记回顾的一件事,主要是如果你要开发一个 web 应用程序,你应该知道一个 webForm 的生命周期,你还需要熟悉服务器端是如何工作的,如何客户端工作。然后您可以查看母版页,以便在您的站点、asp .net 控件、用户控件等之间有一个共同的外观和行为。泛型、匿名方法,还有很多要学习的东西,实际上我正在努力学习每当我有空闲时间,C# 都会有一些新的东西......还有更多...... :)

祝你好运!!

于 2008-12-23T17:24:22.567 回答
0
  1. 先学C#
  2. 选择一种 CRUD 面向对象的方法:选择是 Entity Framework(微软建议的选择)、Linq2SQL、Nhibernate(我个人的建议)。
  3. ASP.Net MVC+Nunit+JQuery+JSon 对象。
    我也会关注 WCF,因为它变得越来越重要。

Web 应用程序的一般架构和一个起始项目的两个很好的起点是:

于 2008-12-23T18:16:53.490 回答
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

于 2008-12-23T18:26:43.220 回答
0

好吧,老实说,真正重要的一件事是了解静态使用的含义,以及它如何影响周围的事物。如果您不了解并发、线程安全和竞争条件,请不要使用静态。我只提到这一点是因为在过去的几个月里我一直在修复很多与未正确使用的静态资源有关的错误。这可能被认为是一个高级主题,但理解它非常重要。

于 2008-12-23T20:40:55.790 回答
0

如果您的网站非常繁重,请查看动态数据

如果您已经从其他平台获得了足够的知识,我还会看看诸如视图状态/控制状态之类的东西以及它们是如何工作的。

您可以从其他平台 html/javascript 重用您的大部分知识。母版页是要知道的事情,以及使用它们时页面生命周期会发生什么。

ORM/SQL 注入/输入过滤是你也应该熟记的东西。

如果您过去使用过 MVC 框架,那么请使用 MS MVC,如果没有,那么您可能需要等到对它们感到满意后再深入研究。

于 2009-01-17T14:17:17.510 回答