Tag: 体系结构

使用entity framework实体作为业务对象?

我正在使用来自Microsoft的entity frameworkO / R映射器,并将实体类(映射到数据库对象的生成类)用作业务对象。 这个可以吗? 请说明你的利弊。 在业务层和表示之间进行WCF通信的情况下,如何将这些对象作为数据成员发送?

存储库模式与“智能”业务对象

当涉及到在.NET上创build更大规模的企业范围应用程序(Winforms,WPF,ASP.NET)时,我看到两个主要的“思想stream派”。 一些人使用“存储库模式”,它使用知道如何获取,插入,更新和删除对象的存储库。 这些对象是相当“愚蠢的”,因为它们不一定包含大量的逻辑 – 例如它们或多或less是数据传输对象。 另一个阵营使用我称之为“聪明”的业务对象,知道如何加载自己,他们通常有一个Save(),可能是Update()甚至Delete()方法。 在这里,你真的不需要任何库 – 对象本身知道如何加载和保存自己。 最大的问题是 :你使用或喜欢哪一个? 为什么? 你在所有的应用程序中使用相同的方法,或者你有什么特别的标准来select一种方法吗? 如果是这样 – 这些标准是什么? 我并不是试图在这里开始一场火焰战争 – 试图找出每个人对此的看法,你的看法是什么,以及为什么你使用一种(或两种)模式。 感谢您的任何build设性意见!

数据库中的业务逻辑与代码?

作为一名软件工程师,我倾向于在应用程序层中编写业务逻辑,而通常只依赖于数据库而不是CRUD(创build检索更新和删除)操作。 另一方面,我运行的应用程序(通常是较旧的),其中大量的业务逻辑是用存储过程编写的,所以有人喜欢在数据库层中编写业务逻辑。 对于在存储过程中拥有和/或享有写/写业务逻辑的人,您使用这种方法的原因是什么?

WPF MVVM为什么使用ContentControl + DataTemplate Views而不是直观的XAML Window Views?

我有一个关于WPF中的MVVM的问题,正在驱动我batty。 为什么要这样做:? MainWindow.xaml: <Window x:Class="MVVMProject.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <ContentControl Content="{Binding}"/> </Grid> </Window> 把你的ExampleView.xaml设置为: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vms="clr-namespace:MVVMProject.ViewModels"> <DataTemplate DataType="{x:Type vms:ExampleVM}" > <Grid> <ActualContent/> </Grid> </DataTemplate> </ResourceDictionary> 并像这样创build窗口: public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); MainWindow app = new MainWindow(); ExampleVM context = new ExampleVM(); app.DataContext = context; app.Show(); […]

服务应该总是返回DTO,还是可以返回域模型?

我正在(重新)devise大型应用程序,我们使用基于DDD的多层体系结构。 我们有数据层(存储库的实现),领域层(领域模型和接口 – 存储库,服务,工作单元的定义),服务层(服务的实现)的MVC。 到目前为止,我们使用跨所有图层的领域模型(主要是实体),我们只使用DTO作为视图模型(在控制器中,服务返回域模型和控制器创build视图模型,并将其传递给视图)。 我读过无数关于使用,不使用映射和通过DTO的文章。 我知道没有任何明确的答案,但我不确定是否可以或不从服务返回到控制器的域模型。 如果我返回域模型,它仍然不会传递给视图,因为控制器总是创build视图特定的视图模型 – 在这种情况下,它看起来是合法的。 另一方面,域模型离开业务层(服务层)时,感觉不对。 有时候服务需要返回没有在域中定义的数据对象,然后我们必须添加新的对象到未映射的域,或者创buildPOCO对象(这很丑陋,因为有些服务返回域模型,有些有效地返回DTO)。 问题是,如果我们严格使用视图模型,将域模型一直返回给控制器是否可行,还是应该总是使用DTO与服务层进行通信? 如果是这样,可以根据需要调整域模型吗? (坦率地说,我不这么认为,因为服务应该消费域名。)如果我们应该严格遵守DTO,是否应该在服务层定义? (我是这样认为的)有时很明显我们应该使用DTO(例如,当服务执行大量的业务逻辑并创build新的对象时),有时很明显我们应该只使用域模型(例如,当会员服务返回贫血的用户s) – 创build与领域模型相同的DTO似乎没有什么意义) – 但我更喜欢一致性和良好的实践。 文章域与DTO vs ViewModel – 如何以及何时使用它们? (还有其他一些文章)与我的问题非常相似,但是它不能回答这个问题。 文章我应该用EF来实现仓库模式的DTO吗? 也是类似的,但是它不处理DDD。 免责声明:我不打算使用任何devise模式,只是因为它存在而且很花哨,另一方面,我想使用好的devise模式和实践,因为它有助于devise整个应用程序,帮助分离至less目前来说,即使使用特定的模式也不是“必要的”。 一如既往,谢谢。

福勒的“企业应用架构模式”仍然相关?

我正在考虑购买Martin Fowler的“企业应用架构模式”。 从我所能看到的,这似乎是一本好书,一本偏向于企业Java的build筑书 – 正是我所需要的。 然而,在电脑年代,这是相当古老的。 2003年是很久以前的事了,从那时起事情已经有了很大的进展。 所以我想知道有没有人可以告诉我:这本书还是相关的,值得一读吗?

像kayak.com网站如何聚合内容?

问候,我一直在想着一个新项目的想法,并想知道如果有人有任何想法如何像Kayak.com服务能够如此迅速和准确地聚集来自这么多来源的数据。 更具体地说,您认为Kayak.com是否与API交互,或者他们是否抓取/刮取航空公司和酒店网站以满足用户请求? 我知道这样的事情没有一个正确的答案,但我很想知道别人认为什么是一个好方法去做这件事情。 如果有帮助,假装你明天创buildkayak.com …你的数据从哪里来?

微服务authentication策略

我很难为微服务体系结构select体面/安全的身份validation策略。 我在这个主题上发现的唯一的SOpost是这样的:微服务架构中的单点login 我的想法是在每个服务(例如身份validation,消息传递,通知,configuration文件等)中为每个用户提供一个唯一的引用(在逻辑上与他的user_id相当),并且可以在login时获得当前用户的id 。 从我的研究中,我发现有两种可能的策略: 1.共享架构 在这个策略中,authentication应用程序是一个服务。 但每个服务必须能够进行转换session_id => user_id所以它必须是死的简单。 这就是为什么我想到Redis,它会存储关键字:value session_id:user_id 。 2.防火墙架构 在这种策略中,会话存储并不重要,因为它只能由validation应用程序处理。 然后user_id可以转发到其他服务。 我想过Rails + Devise(+ Redis或者mem-cached,或者cookie存储等),但是有很多的可能性。 唯一重要的是Service X将永远不需要authentication用户。 这两个解决scheme如何比较: 安全 稳健性 可扩展性 使用方便 或者,也许你会build议我在这里没有提到的另一个解决scheme? 我更喜欢解决scheme#1,但是还没有find太多的默认实现来保证我的方向正确。 我希望我的问题没有结束。 我真的不知道还有什么要问的。 提前致谢

为什么要将我的域实体与我的表示层隔离开来?

域驱动devise的一部分,似乎没有很多细节,是如何以及为什么你应该从你的界面隔离你的域模型。 我试图说服我的同事,这是一个很好的做法,但我似乎没有取得多大进展。 他们在演示和界面层中使用的领域实体。 当我向他们争辩说,他们应该使用显示模型或DTO来隔离域层和界面层时,他们反驳说他们没有看到这样做的业务价值,因为现在你有一个UI对象来维护以及原来的域对象。 所以我正在寻找一些我可以用来支持的具体原因。 特别: 为什么我们不应该在表示层中使用域对象? (如果答案是显而易见的,“解耦”,那么请解释为什么在这方面这很重要) 我们是否应该使用额外的对象或构造来隔离我们的域对象与接口?

在编写任何代码之前,您如何规划应用程序的体系结构?

我要做的一件事就是在编写任何代码之前计划应用程序的体系结构。 我并不是说收集需求来缩小应用程序需要做什么,而是有效地思考一个布局整个类,数据和stream程结构的好方法,并重复这些想法,以便我有一个可信的计划甚至在打开IDE之前的行动。 目前,只要打开IDE,创build一个空白的项目,开始写点东西,让devise从那里“长出来”,都很容易。 我收集UML是这样做的一种方法,但我没有经验,所以它似乎有点模糊。 在编写任何代码之前, 您如何规划应用程序的体系结构? 如果UML是要走的路,你可以推荐一个简洁而实用的小应用程序的开发者介绍吗? 我感谢你的意见。