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
Asp.net mvc MVC站点架构_Asp.net Mvc_Asp.net Mvc 4_Architecture - Fatal编程技术网

Asp.net mvc MVC站点架构

Asp.net mvc MVC站点架构,asp.net-mvc,asp.net-mvc-4,architecture,Asp.net Mvc,Asp.net Mvc 4,Architecture,我正在使用MVC4构建一个在线产品 目前,我将该项目结构化为明显的xx.Web、xx.Data、xx.Services 以下是我想征求您意见的一系列问题: 1-对于数据层,我将使用Repository模式。我已经创建了一个.dbml,它将承载我的数据库表。我应该为每个表创建一个类,还是应该使用.dbml生成的类? 2-对于存储库接口,我应该将它们放在哪里?在不同的项目xx.Data.Common中,还是在xx.Data内的文件夹中 3-错误记录和安全代码在哪里?我已经为此创建了一个xx.Web.

我正在使用MVC4构建一个在线产品

目前,我将该项目结构化为明显的xx.Web、xx.Data、xx.Services

以下是我想征求您意见的一系列问题:

1-对于数据层,我将使用Repository模式。我已经创建了一个.dbml,它将承载我的数据库表。我应该为每个表创建一个类,还是应该使用.dbml生成的类? 2-对于存储库接口,我应该将它们放在哪里?在不同的项目xx.Data.Common中,还是在xx.Data内的文件夹中

3-错误记录和安全代码在哪里?我已经为此创建了一个xx.Web.Common项目

MVC应用程序的通用体系结构有什么指导原则吗?我的意思是,我做了一些研究,但你会被Ninject等扩展音淹没

我只想实施最佳实践。谢谢

有一个现成的最佳实践起始模板。然而,我认为我在网上看到的大多数解决方案都是过度设计的,并且是针对企业级站点的

如果你只是制作一个在线产品,那么一个简单的2-3层解决方案就足够了。从最简单的解决方案开始。如果需要,您可以随时向其添加或创建新层

1-对于数据层,我将使用Repository模式。我已经创建了一个.dbml,它将承载我的数据库表。我应该为每个表创建一个类,还是应该使用.dbml生成的类

如果您从一开始就构建web,我建议您使用Linq2Sql,因为Linq2Sql已经不再发展

您不需要将模型中的1:1映射到数据库表中,只需专注于设计域模型表,数据库就会自动生成。另外,无需将repositoty的1:1映射到table。您需要了解具有聚合和聚合根的存储库模式

2-对于存储库接口,我应该将它们放在哪里?在不同的项目xx.Data.Common中,还是在xx.Data内的文件夹中

应该有一个称为:xx.Domain的dll来放置域模型和存储库接口。通过这种方式,xx.Domain是不依赖于任何其他程序集的核心程序集

3-错误记录和安全代码在哪里?我已经为此创建了一个xx.Web.Common项目

应该有更多名为:xxx.CrossCuttings的dll用于日志记录和安全性

使用IoC容器在层和可测试性之间进行松散耦合


这不是MVC体系结构的一般准则,但保持代码简单、可维护和灵活是关键。

这就是我的想法。也许实现存储库模式和Ninject将是一个良好的开端。问题是你读了无数的解决方案,但你从来没有看到它在实际情况中的优势。掌握理论知识并不能教会我们如何或何时实现这些特性。不过谢谢你的提醒。+1谢谢你先选择最简单的路线。imho的一个好方法是关注代码的可维护性,这样就很容易添加新内容。