【问题标题】:Setting up ASP.NET structure for code为代码设置 ASP.NET 结构
【发布时间】:2012-12-08 17:32:31
【问题描述】:

在开发 Web 应用程序时,我一直使用 C# MVC3 进行编码。但现在我想了解更多关于仅使用 ASP.NET 开发网站的知识。

但现在我想知道我的代码的好的设置是什么。对我来说,类似 MVC 的模式似乎是一个不错的选择。但显然 ASP.NET 没有任何路由器和控制器类。所以我猜人们在使用 ASP.NET 时有不同的方式来设置他们的代码。

所以我正在寻找有关如何开始使用此功能的更多信息。所以不是真正的 ASP.NET 基础知识,而是专注于良好代码设置的东西。

有什么好的教程/信息吗?

【问题讨论】:

  • MVC,太ASP.NET了。你的意思是你想使用 Web 表单而不是 MVC?您可以只选择 VS 中的 ASP.NET Web 窗体应用程序,也可以只选择没有项目的网站。但我认为MVC是更先进、更先进的技术。在 Web 表单应用程序中,您只需创建带有代码的页面。当然你可以使用层,将一些代码移动到库中。
  • 是的,我想使用 ASP.NET Web 应用程序,其中 Web 文件有代码隐藏文件。我知道 MVC 更高级,但我也想了解更多关于 ASP.NET Web 窗体的信息。特别是组织我的代码的好结构。如果有这样的事情。
  • 不确定代码结构,我认为这取决于网站的类型。 Web表单你应该知道的,就是ASP.NET页面生命周期:msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx
  • 新的 Microsoft Web 应用程序认证 (microsoft.com/learning/en/us/mcsd-web-apps-certification.aspx) 考试集包括 ASP.NET MVC 考试。 2010 年的等效版本更加面向 WebForms。这并不是说 Web Forms 不重要或将停止使用,但 Microsoft 显然正在将重心转移到 MVC 后面。在为 WebForms 放弃 MVC 之前,我会三思而后行。

标签: c# asp.net oop


【解决方案1】:

过去,在构建 ASP.NET 应用程序时,我发现 Model View Presenter 设计模式在将所有代码隐藏提取到表示层(与 Web 程序集无关的独立类库)方面非常有用。

这让我可以对所有演示者和逻辑进行单元测试,并将 ASP.NET 视为 IViews 的实现。

我通常会采用这种方法:

  • UI(Web 应用程序项目)
  • UI Common、控件等类库
  • 演示类库
    • Presenter 通常包含业务逻辑,它们与 ASP.NET 无关
  • 演示支持类库
  • 数据模型类库(EF、NHibernate 等)

根据应用程序,您可能需要在表示和数据模型之间建立一个单独的业务层,并从 Presenter 中获取逻辑。

【讨论】:

    【解决方案2】:

    基础 - “MVC”、“Web 表单”、“网站项目”、“Web 应用程序项目”都是 ASP.Net。您可以随意混合/匹配 - 例如我可以有一个包含 webform1.aspx 的 Web API 项目。您可以在同一个应用程序中拥有 vbhtml/cshtml (razor) 文件和 aspx 文件 (webforms)。我可以在 MVC 应用程序中拥有 Web 表单、通用处理程序等……等等。它们都在 ASP.Net 之下。

    其他答案为您提供了可用于 ASP.Net Web 应用程序/站点的结构 - 您会注意到它是“分层的” - 又名 - “业务层”、“数据层”等,它们也适用于 MVC .如果您超越了术语,我认为这都是关于“关注点分离”(也称为“分层”、可重用、可单元测试等)。

    【讨论】:

      【解决方案3】:

      其实如果你有足够大的网站,解决方案应该包括以下项目:

      1. Web 应用程序本身
      2. 业务逻辑层
      3. 数据访问层
      4. 实体(如果您使用实体框架)
      5. 也许是网络控制项目

      可能或多或少取决于您的网站。对于简单的网站,您只能拥有只有几个 aspx 页面的 Web 应用程序。

      不确定它是否回答了您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        • 2019-10-06
        • 1970-01-01
        • 2015-04-28
        • 2016-07-06
        • 2018-07-17
        相关资源
        最近更新 更多