我的许多企业应用程序都包含多个c#解决方案的架构文本,如下所述。
我有一个类库,包含表示信息的类和接口。例如,一个类表示用户并包含适当的属性。与结构相似。我的任何其他项目都可以引用此项目,以全面了解它们之间传输的对象。这个项目很少或没有逻辑。我称之为"存储库。"
我有一个单独的解决方案来处理对持久性的访问。它几乎只是调用从持久性源(数据库,网站,文件等)收集数据的包装器。它收到的信息集被格式化为我的"存储库"的类。这个项目很少或没有逻辑。我称之为"持久访问" 或"数据访问。"该解决方案还主要包括集成测试,也可能包括几个单元测试。
我有一个单独的解决方案,它为逻辑组织了类和方法。每当客户应用程序(webservice,wpf,web,android)需要由我公司的业务需求确定的逻辑输出时,方法在逻辑上组织成一个或多个这些类。这个项目调用我的"持久访问"并且可以以通用类型/集合的形式或以我的"存储库"之一的形式接收和输出。类型。该项目根据业务需求包含多个类和几乎所有企业应用程序的逻辑。我称之为"业务逻辑。" 此解决方案还主要包括单元测试,也许还有几个集成测试。
我有一个asp.net Web应用程序项目。我的Web应用程序有javascript,css,aspx,代码隐藏文件,以及其他一些自然伴随这些东西的基础知识(一些ashx)。如果页面需要逻辑或数据以确定页面上显示的内容,则Code Behind文件会调用"业务逻辑"做出那些决定。 asp.net aspx对象唯一做的就是格式化这些信息。我将这些页面中的每一个称为" views" 或" ViewModels。" 此应用程序包含非常少的测试,因为它'主要是aspx,xhtml,css和代码隐藏中的一对受保护事件处理程序。 (可能对ashx文件进行了一些测试。)
我的困惑是这样的:在ASP.Net Web开发术语中,我想说我使用的是模型 - 视图 - 控制器架构。但我不使用Microsoft MVC Web应用程序,因为我想将我的业务逻辑完全从网站中分离出来。
说我使用MVC是正确的吗?我以前创建了MS MVC Web应用程序,但是对于可能有多个用于业务逻辑的复杂项目(大多数都是这样),我使用了我所描述的这种架构。或者,我使用其他一些预先命名的架构吗? 我想知道与Web开发相关的架构模式名称。 因此,MVVM本身并不直接与我相关。
答案 0 :(得分:7)
你有一个MVC 前端。
您的体系结构 N-Layer (明确分离..但由责任分隔,而不是按物理位置分隔。这将是 N-Tier )。
您的域通常被称为 Anemic Domain Model - 域中没有实际的业务逻辑。所有逻辑都存在于服务中。
是的,说你"使用MVC" ...是正确的,因为这通常是指谈论Web应用程序时的前端设置。 MVC通常不是一个在解决方案范围内使用的术语。虽然它在技术上可以以这种方式应用,但它通常不是(无论如何在ASP.NET世界中)
如果您要向某人解释您的设置,我会说:"我有一个N层解决方案,其中图层被分成具有ASP.NET MVC前端的程序集。"。
答案 1 :(得分:0)
根据您的描述,很难判断您是使用MVC架构还是否使用MVC架构。您的体系结构可能不是具有通用名称的任何体系结构。
如果您使用的是ASP.NET Web表单,那么您的应用程序可能不是MVC,因为您的控制器 - 很可能是您的代码隐藏文件与您的View-您的aspx文件紧密耦合。