- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在避免在 .net arch/n-tier 架构上编写看起来像是另一个线程的内容,但请耐心等待。
我希望像其他人一样,在选择用于企业应用程序的架构时,仍然不是 100% 满意或不清楚根据当今的趋势和新兴技术采取的最佳方法。
我想我正在就 您 在使用当今 .NET 技术的大部分方面构建企业应用程序时选择的方向和体系结构实现以及您将采取的方向征求大众社区意见。我最好就我和我的问题提出这个问题,以免这太含糊了;我想改进我的架构以改进,并且真的很想听听你们对我即将编写的技术列表的看法。
欢迎您提出任何和所有最佳实践和架构模式,如果您之前已经为类似类型的设置创建了解决方案,那么您可能遇到或克服了任何陷阱或警告。
这是我最新项目中采用的技术列表,是的,除了 WPF 几乎所有技术:)
要考虑的实用程序和其他组件:
我目前在 n 层架构中运行它。采用基于服务的设计模式,利用请求/响应(不确定它的正式名称)和存储库模式,我的大部分结构是从 Rob Conery's Storefront 中采用的.
我想我或多或少对我的大部分层级感到满意(实际上只是 DAL 我有点不安)。
在我结束之前,这些是我在当前架构中面临的真正问题:
鉴于使用 LINQ to SQL,我是否应该拥有自定义数据访问层存在很大的问号。我应该直接在我的服务/业务层中执行 LINQ to SQL 还是在存储库方法中的 DAL 中执行?您是否应该在每个存储库方法调用(使用 using())中创建一个新的数据库上下文实例?还是类构造函数中的一个/通过 DI?
您认为在使用 LINQ to SQL 时我们真的可以使用 POCO(普通旧 CLR 对象)吗?我很乐意看到一些示例,因为我遇到了问题,这对 WCF 工作特别方便,因为我显然不能通过网络传输 L2S 对象。
自己创建一个 ASP.NET MVC 项目非常清楚地显示了您应该采用的设计模式,方法是在 View 中保留 View 逻辑,在模型中保留调用服务/业务方法的 Controller ,当然还有您的数据访问,但是对于较大的项目,尤其是在共享数据访问的情况下,您会放弃“模型”方面吗?您会采用什么方法来获取数据?
感谢您听我说完,并希望看到关于架构的示例代码库以及它是如何拆分的。如前所述,我已经看过 Storefront,但我还没有真正了解 Oxite,但只是认为它会对我自己和每个人都有好处。
在 DAL 要点中添加了附加问题。/15:42 GMT+10
最佳答案
回答您的问题:
我应该直接在我的服务/业务层中执行 LINQ to SQL 还是在存储库方法中的 DAL 中执行? LINQ to SQL 只有在您的数据库一对一映射时才有意义1 与您的业务对象。在大多数企业情况下情况并非如此 Entities比较合适。
话虽如此,LINQ 通常非常适合直接在您的业务层中使用,因为 LINQ 提供程序(无论是 LINQ to SQL 还是其他) 是您的 DAL。 LINQ 的好处在于,它允许您在业务层中比 DAL.GetBusinessEntityById(id)
更加灵活和富有表现力,但是接近金属的代码使 LINQ 和传统的 DAL 代码工作被封装远离你,具有同样的积极效果。
您认为在使用 LINQ to SQL 时我们真的可以使用 POCO(普通旧 CLR 对象)吗?如果没有关于 LINQ to SQL 的 POCO 问题的更多具体信息,很难说.
对于较大的项目,您会放弃“模型”方面吗 MVC 模式通常比 ASP.NET MVC 的表面观察可能暗示的要广泛得多。根据定义,无论您选择用于连接到应用程序中的数据支持,都将成为您的模型。如果那是利用 WCF 或 MQ 连接到企业数据云,那就这样吧。
关于c# - 使用 LINQ to SQL 的 .NET 架构的最佳设计实践(需要 DAL?我们真的可以使用 POCO 吗?要采用的设计模式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732573/
我正在尝试在两个表之间进行空间连接: 表 1:397265 个特征(在 geom 字段上有 gist 索引) 表 2:73 个特征(在 geom 字段上有 gist 索引) 表 1 和表 2 具有相同
我正在尝试在两个表之间进行空间连接: 表 1:397265 个特征(在 geom 字段上有 gist 索引) 表 2:73 个特征(在 geom 字段上有 gist 索引) 表 1 和表 2 具有相同
枚举类型的值是该类型的静态变量。 据我所知,变量是由引用变量引用的,但没有新的运算符来实例化枚举对象。但这就像初始化数组一样吗? 这是对还是错? 最佳答案 是的,枚举类型的文字是 public sta
我阅读了有关关闭 zsh 自动更正以完成命令的所有提示。但是,它们并没有完全发挥作用。我试过 DISABLE_CORRECTION="true", unsetopt correct, unsetopt
我知道这个问题是 answered before ,但给出的答案并不是完整的故事: 我进入了 Firefox 的 Options->Content 并删除了除德语/德国之外的所有语言,navigato
我知道用汇编语言编写任何内容或将汇编语言添加到任何程序都会损害其可移植性。但是,有多糟糕呢?我的意思是,现在基本上所有 PC 都是 x86 或 x64,对吧?那么,如果我将汇编嵌入到 C 程序中,为什
我正计划构建一个 Web 服务客户端,它始终检查数据库中的某些记录,并根据数据库内容的结果在每个时刻及时执行某些决策。 所以我在想,我怎样才能让客户端一直运行呢? 我唯一想到的就是无限循环。像这样的东
我无法获取小部件的实际背景颜色。在我的特殊情况下,我在使用 QTabWidget 中的小部件时遇到了问题。 这是在 Windows7 上。所以经典小部件有一些灰色背景,而选项卡中的小部件通常用白色背景
请不要将我指向How to wrap preference title?因为它不适用于(正如我评论的那样)您使用 @strings/ 的情况对 strings.xml 文件的引用。 如果你使用 and
情况如下: 已知hdfs是仅附加的(本身没有更新)。 配置单元将数据写入其位于hdfs中的仓库。 可以在配置单元中执行更新 这意味着写入了新数据,旧数据应该以某种方式标记为已弃用,然后在某个时间将其清
在javascript中删除cookies的方法是将过期日期设置为过去。现在这实际上并没有删除 cookie,至少在 Firefox 中是这样。这只是意味着 cookie 将在浏览器关闭时被删除。 这
我需要终止一个卡住的线程,我将 IsBackground 设置为 true 但它仍然存在。线程的属性: ThreadState = AbortRequested IsBackground = true
在逻辑中,以及在 *ahem* 正确设计的编程语言中,将 boolean 值与 true 进行比较总是多余的,即 a == True 应该简单地替换为 a 。 (类似地, a == False 由 n
我一直在努力寻找一个好的定义,并理解线程到底是什么。 看来我一定错过了一些明显的东西,但是每次我读到什么是线程时,它几乎是一个循环定义,la“线程是一个执行线程”或“一种划分运行任务的方法” ”。呃呃
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
是否可以在 MAC 上以真正的全屏模式运行 IntelliJ Idea? 没有工具栏、侧边栏、按钮,只有代码。 如果可以,请告诉我。 最佳答案 您可以通过禁用以下项目在 View 菜单中执行此操作:
考虑以下代码: case class Vector3(var x: Float, var y: Float, var z: Float) { def add(v: Vector3): Unit =
我试图确认这个说法是否属实: 模型包括: 持久层:本质上是 DAO + 表示表的类 + DTO 服务层:DAOS + 一些逻辑的组合 您能否也引用/支持您的回答?我相信我在Spring Framewo
给定代码: #include struct X {}; struct Y1: virtual X {}; struct Y2: virtual X {}; struct Y3: virtual X
从这个其他QUESTION他们谈论 Bjarne Stroustrup 是如何说的,就像比 int 窄的整数数据类型(例如 short)被提升为 int,float 被提升为 double。但是,与i
我是一名优秀的程序员,十分优秀!