Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们应该以什么顺序实现Asp.NETMVC应用程序_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 我们应该以什么顺序实现Asp.NETMVC应用程序

C# 我们应该以什么顺序实现Asp.NETMVC应用程序,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,这可能是一个奇怪的问题,但我只是想使用Asp.NETMVC启动一个新的中型Web应用程序 每个人对解决方案都有自己的方法,但总会有一些实践遵循 在使用Asp.NETForms应用程序时,我总是按照以下顺序工作 数据库 数据访问层(LinqToSql/Ado.Net实体等) BLL(业务逻辑层+业务对象) 前端(表格、设计等) 认证、测试(集成)等 (并行单元测试从BLL开始) 现在我已经完成了MVC书籍和教程,即将开始应用程序的工作。 数据库已经存在。我将为DAL(模型)使用LinqToSq

这可能是一个奇怪的问题,但我只是想使用Asp.NETMVC启动一个新的中型Web应用程序

每个人对解决方案都有自己的方法,但总会有一些实践遵循

在使用Asp.NETForms应用程序时,我总是按照以下顺序工作

  • 数据库
  • 数据访问层(LinqToSql/Ado.Net实体等)
  • BLL(业务逻辑层+业务对象)
  • 前端(表格、设计等)
  • 认证、测试(集成)等
(并行单元测试从BLL开始)

现在我已经完成了MVC书籍和教程,即将开始应用程序的工作。 数据库已经存在。我将为DAL(模型)使用LinqToSql

执行模型视图控制器应遵循什么顺序。我很困惑,因为所有的教程都有不同的方法

喜欢。有些从路由表开始,有些从控制器组件开始,然后触摸视图,然后建议将逻辑转换为模型,“如果控制器继续增长”

有些人教授如何为规范中的每个进程处理控制器-->视图-->模型集

我不确定什么是正确的方法。如果您能了解您用于实现组件/阶段的顺序,那就太好了。我也不确定启动单元测试的阶段

我已经试着让自己明白,如果不确定,请询问,欢迎您编辑标题或帖子本身,如果您觉得这样会更好

注意:将使用C#、Sql Server 2005、JQuery、CSS、Visual Studio 2008和一个由两人组成的团队,测试版和预期的几个版本(组件)。
谢谢

我倾向于从用户界面开始,然后反向工作。这样我就可以在构建应用程序时与用户和业务分析师一起工作。我已经概述了一般流程

ASP.NET MVC的真正好处是,您可以利用测试驱动设计非常干净地构建Solutions;因此,我建议您从测试开始,向后移动

这要看情况而定

  • 如果您已经有了数据库,那么就从数据库开始,这是应用程序的主要部分。在本例中使用实体框架,因为它更以数据为中心
  • 如果您有复杂的用户界面和可以向您提供反馈的用户,请从用户界面开始
  • 如果业务逻辑是王者,UI是二等公民,那么从实体开始。这将有助于TDD/DDD
  • 我想你可以把2/3合并在一起,然后在某个时候把它们整合起来。如果一个基于另一个(UI基于域对象,反之亦然),它们可能会相互影响,这不是一件好事。例如,我过去常常在域实体之后设计视图模型,这会导致复杂的视图/视图模型继承了许多域实体设计


    独立完成UI将有助于快速反馈和良好设计的视图和模型。独立完成领域级设计将有助于保持坚实的核心设计。独立地执行这两个操作将为您提供两个视角,这与立体视觉一样,可以提供整个画面的更多细节。这里的关键是域和UI开发人员与客户之间的通信

    当与我的团队成员坐下来研究他们分配给他们的某项功能的组成部分时,他们倾向于自上而下地工作,因为通过这种方法定义他们需要什么,他们会感到更自在

    我们采用TDD方法进行开发,在编写测试时,开发人员通常首先为他们的新控制器操作编写一个单元测试,说明其行为应该是什么,并从中得出所需的依赖项

    这可能涉及到创建新的类/方法,它们可以创建接口并将接口传递给控制器(大量使用IOC)

    这为他们提供了编写测试所需的下一级接口,然后采用同样的方法首先编写测试,计算出任何必要的依赖项(并在必要时创建它们)

    仍然可以针对这些接口的模拟版本编写测试,因此在您还针对这些接口编写测试之前,无需编写实现

    这意味着我们从上到下都有100%的覆盖率,结果往往是一个经过深思熟虑的问题解决方案


    当我处理一个问题时,我通常会从最底层开始,因为我已经在头脑中和纸上把它全部规划好了,但我可以看到上述方法的好处——不太可能落入YAGNI陷阱,最终只得到所需的代码。

    这是一个很好的观点。如果你已经理解了应用程序应该做什么,那么TDD或BDD工作得非常好,但一开始并不总是这样。因此,这取决于你来自哪里。值得指出的是,否则他们就会陷入过度思考和对实现的担忧之中,而实际上却一事无成。一旦代码编写完成,我们将分配时间作为任务的一部分进行重构,并确保没有出现重大问题。+1对于以如此好的方式解释代码,即使是非it人员也会理解,我们深表感谢。你值得在codeofrob跟随