【问题标题】:I'm new to .NET - what should I concentrate on and what should I ignore? [closed]我是 .NET 的新手——我应该专注于什么,应该忽略什么? [关闭]
【发布时间】:2008-12-23 17:17:51
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# .net data-binding master-pages


    【解决方案1】:

    好问题!我假设您可以随时掌握 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 将数据从您的业务类库传送到您的 UI。如果您不使用业务层,那么您将使用 SQLDataSource 或 LinqDataSource 对象直接从 UI 访问您的数据。

    还没有解决您的架构问题!

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

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

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

    现在您可以开始构建企业级 Web 应用了!

    【讨论】:

    • 写得很好......虽然我会说你的最后一点在 ASP.NET 1.0 之外不太重要
    • Alex - 你为什么说派生一个页面类不那么重要?我很好奇!
    • 我认为母版页使通过创建基页类获得的大部分功能变得多余。但这只是我的 2 美分!
    • Alex - 我不同意。从基页类派生的要点是,您可以访问变量和实用程序方法,就好像它们是您的类的一部分一样。要访问母版页中的变量/方法,您需要在 ASPX 页面中放置一个指令,然后通过变量引用该母版。
    • 母版页只是不同 - 很棒 - 但与基页类不同,并且具有不同的角色。
    【解决方案2】:

    设计一个应用程序。您需要了解的内容应该很快就会浮出水面。

    【讨论】:

    • 我完全同意。构建一个执行您需要的实际应用程序。不仅仅是标准示例应用程序。然后你会遇到你真正需要学习的领域。
    • 这是最好的建议。
    • 我同意这种观点,但几项您应该预先决定(数据访问层、MS WebParts 的使用、MVC 的使用等)。我在下面的回复中介绍了它们。
    【解决方案3】:

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

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

    最好的学习方法就是去做。

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

    【讨论】:

    • 忽略 .NET Remoting 以支持 WCF?
    【解决方案4】:

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

    祝你好运!!

    【讨论】:

    • "你应该知道 webForm 的生命周期",除非你做 MVC。事实上,MVC 的一大好处是您不必了解所有这些琐碎的东西。
    【解决方案5】:
    1. 先学C#
    2. 选择面向 CRUD 对象的方法:选择是 Entity Framework(Microsoft 建议的选择)、Linq2SQL、Nhibernate(我个人的建议)。
    3. ASP.Net MVC+Nunit+JQuery+JSon 对象。
      我也会关注 WCF,因为它变得越来越重要。

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

    【讨论】:

      【解决方案6】:

      我会先从基础开始。 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 的想法 - 它完全不同于我做过的任何事情。谢谢!
      【解决方案7】:

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

      【讨论】:

        【解决方案8】:

        如果您的网站非常繁重,请查看Dynamic Data

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多