Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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# 我使用的是什么建筑模式/设计?_C#_Asp.net Mvc - Fatal编程技术网

C# 我使用的是什么建筑模式/设计?

C# 我使用的是什么建筑模式/设计?,c#,asp.net-mvc,C#,Asp.net Mvc,我的许多企业应用程序都包含多个c#解决方案的架构,如下所述 我有一个类库,其中包含表示信息的类和接口。例如,一个类表示用户并包含适当的属性。类似于structs。我的任何其他项目都可以引用此项目,以便全局了解它们之间传输的对象。这个项目几乎没有逻辑。我称之为我的“存储库”。 我有一个单独的解决方案来处理对持久性的访问。它几乎只是包装了从持久性源(数据库、网站、文件等)收集数据的调用。它接收的信息集被格式化到我的“存储库”的类中。这个项目几乎没有逻辑。我称之为我的“持久性访问”或“数据访问”。此解

我的许多企业应用程序都包含多个c#解决方案的架构,如下所述

我有一个类库,其中包含表示信息的类和接口。例如,一个类表示用户并包含适当的属性。类似于structs。我的任何其他项目都可以引用此项目,以便全局了解它们之间传输的对象。这个项目几乎没有逻辑。我称之为我的“存储库”。

我有一个单独的解决方案来处理对持久性的访问。它几乎只是包装了从持久性源(数据库、网站、文件等)收集数据的调用。它接收的信息集被格式化到我的“存储库”的类中。这个项目几乎没有逻辑。我称之为我的“持久性访问”或“数据访问”。此解决方案还包括大部分集成测试,可能还有一些单元测试

我有一个单独的解决方案,它组织了逻辑类和方法。每当客户应用程序(webservice、wpf、web、android)需要由我公司的业务需求确定的逻辑输出时,就会在逻辑上将一个方法组织成一个或多个此类。此项目调用我的“持久性访问”,可以以泛型类型/集合的形式接收和输出,也可以以我的一种“存储库”类型的形式接收和输出。根据业务需求,该项目包含多个类和几乎所有的企业应用程序逻辑。我称之为我的“业务逻辑”。此解决方案还包括大部分单元测试,可能还有一些集成测试

我有一个asp.net web应用程序项目。我的web应用程序有javascript、css、aspx、codebhind文件,以及其他一些自然附带的基础知识(一些ashx)。如果页面需要逻辑或数据来确定页面上显示的内容,代码隐藏文件将调用“业务逻辑”来进行这些确定。asp.net aspx对象唯一要做的就是格式化这些信息。我将这些页面中的每一页称为“视图”或“视图模型”。此应用程序包含的测试很少,因为它主要是aspx、xhtml、css和codebehind中的几个受保护事件处理程序。(可能对ashx文件进行一些测试。)

我的困惑是:在ASP.Net Web开发术语中,我想说我使用的是模型-视图-控制器体系结构。但是我没有使用MicrosoftMVCWeb应用程序,因为我想将我的业务逻辑完全从网站中分离出来


那么说我使用MVC正确吗?我以前创建过MS MVC Web应用程序,但对于可能不止一次使用业务逻辑的复杂项目(这是其中的大多数),我使用了我描述的这种体系结构。或者,我使用的是其他一些预先命名的架构吗我想知道架构模式名称,因为它与Web开发有关。因此,MVVM本身听起来与我无关。

您有一个MVC前端

您的体系结构是N层的(明确的分离..但由责任而不是物理位置分开。这将是N层的)

您的域通常被称为“贫乏的域模型”
——它在域中没有实际的业务逻辑。所有逻辑都驻留在服务中

是的,说“使用MVC”是正确的。。因为在讨论web应用程序时,这通常指的是前端设置。MVC通常不是解决方案范围内使用的术语。。虽然从技术上讲,它可以以这种方式应用,但通常不是(在ASP.NET世界中)


如果您要向某人解释您的设置,我会说:“我有一个N层解决方案,其中层被分离为具有ASP.NET MVC前端的程序集。”.

根据您的描述,很难判断您是否在使用MVC体系结构。您的体系结构可能不是任何具有通用名称的体系结构


如果您使用的是ASP.NET web表单,那么您的应用程序可能不是MVC,因为您的控制器(最有可能是您的代码隐藏文件)与您的视图紧密耦合,即您的aspx文件

ViewModels通常是POCO对象,其中包含从应用程序传递到视图的数据,因此在调用aspx pages ViewModels时,听起来有些不对劲。视图-是的,视图模型-不确定。此问题似乎与主题无关,因为它没有描述可以解决的特定问题。它更适合@MattJohnson,你说得对。如果这件事必须改变,我会理解的。谢谢,西蒙。即使知道这些实践,我也没有把它们放在一个简短的描述中如此雄辩。对,但我的控制器不在代码背后。codebehind将控制器层作为外部逻辑层调用,并且没有耦合。在这种情况下,如果您可以区分M、V和C,并且它们不是紧密耦合的,那么它就是MVC。这里有一个关于MVC和MVP的非常好的讨论值得一读