- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是一位经验丰富的 .NET 开发人员,主要从事网络表单方面的工作。我熟悉 MVC,但还没有在商业上使用它。我目前正在这方面进行一些 self 教育,并且对建筑主题的意见分歧有些困惑,让我在这个问题前加一个理解,即没有正确或错误的答案,但我只是在寻找什么是一个优雅的解决方案。
首先我会说我没有使用 Entity Framework 或任何类型的 ORM——我想直接实现我自己的业务对象和数据访问代码(使用 ADO、SPROCS 等)以确保它们是最佳的,这是个人喜好。这是我努力寻找一致信息的地方,因为大多数信息似乎都与 LINQ to SQL 或 Entity Framework 的使用有关。
我的申请由以下项目构成:
只有两个项目,因为我在解耦方面遇到了问题;这是我问题的根源。我的模型类库包含……
我遇到的问题是所有这些层之间的依赖关系。感觉一点都不对!
1.业务对象应该包含实现业务逻辑的方法,那么除了字段和属性之外,还有实现任何所需逻辑的方法吗?
2.存储库类执行数据访问代码但知道业务对象,这又感觉不对,数据访问代码应该位于它自己的类库中并且对对象一无所知?
3. Controller (在网络层)利用存储库接口(interface),但为什么呢?它们不应该包含业务逻辑,“模型”或业务对象应该? Controller 当然不应该包含业务逻辑,所以这也是不对的。我不希望存储库中存在业务逻辑,因为它们正在访问数据库。
我正在努力为应用程序寻找一个优雅的架构,只是一个关于如何实现我自己的对象、我自己的数据访问代码并确保应用程序松散耦合的基本轮廓。任何人都可以给我任何指导吗?
最佳答案
我建议对您的解决方案结构进行一些更改。
例如,项目的结构可以如下:-
这将是简单的 POCO,代表您的域数据和任何服务的接口(interface)。这里没有业务逻辑。只是简单的属性。
例如。
公共(public)类用户 { public int UserId { 得到;放; } 公共(public)字符串名称 { 得到;放; }
- Core
\Entities <-- Poco's
\Services <-- Interfaces for services
这将是您包含业务逻辑的地方。用户如何验证?我们如何计算订单何时应该自动存档或其他什么?一般来说,我不会在这里做任何数据库的事情。
这是您执行基本数据库操作的地方。你说你没有使用 L2S 或 EF 等。没有问题。我会认真认真地考虑使用 Micro-ORM,比如 Dapper或 Massive .
您正在进行单元和集成测试,对吗?我推荐 xUnit 或 nUnit 作为测试框架。
这是 MVC3 应用程序。我建议使用 StructureMap为您的依赖注入(inject)。 (您正在使用 IoC/DI,对吧?)
一开始您可能会想 -> 项目太多了,对吧?好吧,很容易将它分成两个项目。
Core Library、Services、Repository 都作为文件夹存在于 Web 应用程序项目中。
尽量不要过度设计 Visual Studio 解决方案。大多数人认为他们需要大量的项目和大量的抽象......因为他们认为其他人都在这样做,而且这是正确的事情。好吧,这种思路是在 2000 年代非常非常早的时候......并且在 2012 年 - 从那时起很多 shiz 都发生了变化。
尝试使用 DI/IoJ、NuGet 将这些库下载到您的解决方案中,Micro-OR/M 用于数据访问和测试项目。
一些项目要检查,关于:事物是如何布局的:
关于c# - 需要有关 ASP.NET MVC 3 体系结构的一些指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9087240/
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我遇到了这两个文档(它们是用意大利语写的,尽管代码注释是英文的): http://home.deib.polimi.it/brandole/acsocr/L13%20-%20Generic%20Ass
我的主要目标是提供一个用 jquery 编写的基于 solr 的搜索应用程序。 (不熟悉solr的,就假设它是一个可以返回搜索结果的rest api。)为了这个目标,我编写了许多小型应用程序和 ser
这个问题是关于选择“正确”类型的NoSQL数据库的,我希望甚至可以根据我将在下面列出的一些需求/用例以及当前正在使用的传统RDBMS解决方案,讨论特定的数据库以及它们为什么适用。地点。时间长了一点,但
在 Java 中我运行: System.out.println(Math.log(249.0/251.0)); Output: -0.008000042667076265 在 C# 中我运行:<- 已
我目前正在考虑通过 Redux 将 Context 实现到我们的一个应用程序中,但是,我似乎找不到任何关于什么是大型应用程序的最佳结构的信息? Redux 有一个定义的方法来创建 reducer、ac
我正在使用 mailcore 框架,但收到错误消息“archtecture x86 的重复符号”以及“找不到选项的目录” 下面是错误日志。 Ld /Users/user/Library/Develop
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 11 个月前关闭。 Improve t
假设我正在从 C++ 移植代码并需要在 C# 中模拟相同的位移技术: 每当我执行位移时,我是否必须考虑架构的 Endain-ness? 最佳答案 没有。位移是一种纯粹的代数运算。它不比乘以二更依赖于平
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
关于架构 XXX 的重复符号有很多问题,但我没有得到我的问题的答案。在我的场景中,我使用 Cocoapod,并导入 FMDB,但是当我集成另一个第三方 SDK 时,当我构建项目时,出现如下错误: 是否
我无法编译我的 Xcode 项目,它有重复的 ParseFacebookUtilsV4 问题 这是我的苹果 Mach-O 链接器错误: duplicate symbol _llvm.cmdline i
我对使用 MFC 的内置文档 View 体系结构的必要性有疑问。我得到了一个基于对话框的旧项目,我必须在其中用框架替换主对话框并添加功能区。它有一种文档 View 架构,创建时没有内置类,我更愿意在新
我正在构建一个协作创作工具,该工具允许用户共同编辑信息空间,该信息空间是节点和链接的可视化。一个客户端应用程序中所做的更改需要反映到所有其他客户端中。由于它是可视化的,因此可能需要经常更新潜在的大数据
如果我在 Windows(x86 和 x64)下的 .NET 上运行涉及 System.Double 的复杂计算,然后在 Mono(Linux、Unix 等)上运行,绝对有保证 以在所有情况下得到完全
当我使用 Xcode 4.6 编译我的 iPhone 应用程序时,我看到一个奇怪的错误代码: "duplicate symbols for architecture i386". 我知道这个关于文件名
我最近询问了 System.Double,并被告知计算可能因平台/架构而异。不幸的是,我找不到任何信息来告诉我这是否适用于 System.Decimal。 对于任何特定的 decimal 计算,无论平
我有一些实体,例如:Customers、Orders、Invoices。 对于它们中的每一个,我都将它们的CRUD 操作 和一些其他界面分组为:ISvcCustomerMgmt、ISvcOrderMg
这个问题有点像一个池。我们正在尝试在使用 LINQ to SQL 之类的 ORM 时确定最佳架构。我们正在定义的架构是用于其他应用程序将通过直接引用 DLL 或通过 Web 服务访问的框架。我们有 .
请就如何为 Java web 应用程序做“插件”架构提出建议。 目前我们在 Tomcat servlet 容器中使用非常简单和标准的 Spring+Hibernate+Struts 2。 (使用 ma
我是一名优秀的程序员,十分优秀!