标签: onion-architecture

流利的NHibernate和NLog

我的流畅配置中出现了一些模糊错误的问题.我已经读过,设置日志记录解决方案将帮助我解决问题.我想使用NLog.我知道我需要使用Common.Logging 2.0和NHibernate.IInterfaceLogger来启动并运行它.我只是不确定如何将各个部分组合在一起.我的系统基于洋葱架构.我为NLog设置了Logging服务,我有自己的界面,但是我对于将所有这些绑定在一起的地方有点困惑.我的Fluent NHibernate配置存在于我的Data项目中.我假设我想把所有这些绑在一起.

对此的任何想法都会很棒!我有点迷路了!

c# nlog fluent-nhibernate onion-architecture

4
推荐指数
1
解决办法
2691
查看次数

洋葱架构 - 服务层责任

我正在学习Jeffrey Palermo的Onion Architecture两周多了.我按照本教程创建了一个测试项目.在学习期间,我在SO上遇到了这个问题.根据公认的答案,有人nwang建议像GetProductsByCategoryId这样的方法不应该在Repository中,而另一方面则Dennis Traub 建议它是Repository的责任.我在做的是:

我有一个通用存储库Domain.Interface,我有一个方法Find:

public interface IRepository<TEntity> where TEntity : class
{
     IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> filter = null);
     .......
     .......
     .......
}
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个BaseRepositoryInfrastucture.Data:

public class RepositoryBase<TEntity> : IRepository<TEntity> where TEntity : class
{
     internal readonly DbSet<TEntity> dbSet;
     public virtual IEnumerable<TEntity> Find(
            Expression<Func<TEntity, bool>> filter = null)
     {
            IQueryable<TEntity> query = dbSet;

            if (filter != null)
            {
                query = query.Where(filter);
            }
            return query.ToList();
     } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc design-patterns repository-pattern onion-architecture

4
推荐指数
2
解决办法
4128
查看次数

MVC洋葱架构,一些问题

我正在使用Asp.net MVC 5,Web Api 2和Entity Framework创建一个项目.我正在使用Onion架构进行设计,因此我有一个DAL,Service和UI层.

我的DAL层包含UnitOfWork和Repositories,我的Service层包含业务案例的服务.

但我有以下问题:

  1. 我在哪里使用工作单元保存(或提交)方法?,在服务层或UI层?如果我在服务层使用它,我该如何处理跨多个服务的案例?

  2. 如果服务层返回DTO或者映射应该在UI层中完成,我正在使用DTO进行webapi操作吗?

  3. DTO应该在单独的项目中还是在UI项目中?如果他们在一个单独的项目中,我应该使用MVC属性进行验证吗?

c# asp.net-mvc n-tier-architecture onion-architecture asp.net-web-api

4
推荐指数
1
解决办法
1897
查看次数

洋葱六边形结构依赖混淆

我在理解六边形(端口适配器)体系结构中依赖的含义时遇到问题.

他们在这里有很好的照片.我没有看到的是与n层结构有什么区别(实现).

在洋葱/十六进制架构中,内层应该独立于外层,但它是如何实现的(请注意我的java/spring背景)

在N层中,您可以自动连接第N + 1层组件.我看到依赖的方向,但你怎么能还原它: - /

如果我要打电话给外层,我会使用界面.所以界面在内层,在外层实现.现在我独立于外在.就是这个?这是关于API的位置?

无论如何,hex/onion应该独立于依赖性解析,所以它是否意味着我不应该使用@Autowire,@ Inject等?

非常感谢您提前澄清.

java architecture spring dependency-injection onion-architecture

4
推荐指数
1
解决办法
1552
查看次数

洋葱架构:核心与域名

我研究洋葱架构相当一段时间,现在,我已经分析了几样VS的解决方案,但还是无法明白之间的差别Core,并DomainOnion Architecture.

  • 解决方案中,Core(项目)位于Domain(解决方案文件夹)中.
  • 这里没有Core,只有Domain
  • 在Jeffrey Palermo的CodeCampServer示例应用程序中,Core内部有Domain.所以,基本上,它看起来像CoreDomainServices.
  • 这个xDriven项目Core中分为Core.ApplicationCore.Domain

我完全糊涂了.你能解释一下我,什么是之间的实际差异Core,并Domain在这样的架构?

我有这样的课程.简单的棋盘游戏,如井字游戏.它绝对是无处不在的语言,所以我应该Entities在Domain内的文件夹中创建吗?Core中的域名本身?

public class Game
{
    public GameState State { get; set; }
    public Board Board { get; set; }
    public IEnumerable<Player> Players { get; set; }

    public bool Move(int playerId, int field)
    {
        //Check if Player's move will finish game. …
Run Code Online (Sandbox Code Playgroud)

.net c# domain-driven-design onion-architecture

4
推荐指数
1
解决办法
5035
查看次数

MVC如何与Onion架构共存?

我看到有人建议将 MVC 与洋葱架构一起实施。但两者如何共存呢?它们不是两种不同的架构吗?例如,Onion设计中的Controller在哪里?

我理解不止一种设计模式的组合,因为它们服务于不同的目的(行为、创建等),并且可以在系统的不同模块中独立实现,但我不知道如何实现两种不同的架构。

architecture model-view-controller design-patterns software-design onion-architecture

4
推荐指数
1
解决办法
1895
查看次数

在EF7中使用dbset和mappers有什么区别

我开始工作,.net coreEntityframework 7Onion Architecture!我阅读了教程,我认为这是学习以下主题的最佳案例。但是本教程的一部分在我的脑海中提出了一个大问题。就像您在此链接页面上看到的一样;在数据层,我们有一些类是我们的模型!

public class User : BaseEntity
{
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public virtual UserProfile UserProfile { get; set; }
}

public class UserProfile : BaseEntity
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public virtual User User { …
Run Code Online (Sandbox Code Playgroud)

c# onion-architecture entity-framework-core asp.net-core-mvc .net-core

4
推荐指数
1
解决办法
385
查看次数

codecampserver中的StaticFactory <T>是一个众所周知的模式吗?

CodeCampServer源代码包含一个通用的StaticFactory.

我猜想这是框架如何与依赖注入很好地结合的机制的关键部分.

其中的子类使用它的DefaultUnconfiguredState来提供对自己的默认未配置状态的静态访问,依赖解析机制可以用工作内容替换它们.

我找不到任何相关文件......

书中有一个很好的解释吗?(我正在等待从亚马逊送货......)

...或者其他任何人都能对这是什么提出一个很好的评论,以及我是否明智地采用这种模式(如果它是一个......)?

更新

由于Jeffrey Palermo回答了这个问题,我看到在MVC2 in Action的(正在进行中)手稿中,使用Factory来讨论和说明这种模式/样式,该工具用于定位存储库以保持域层无知持久性问题.(见第23章).

默认情况下,使用此工厂会引发异常:

"关于如何创建存储库的知识不在工厂中.这个工厂只代表返回存储库的能力"

该示例可能使用了几种机制之一来初始化存储库接口的具体实现.在本书的示例中,为了简单起见,他们选择不使用IOC容器,并在某些启动逻辑中明确提供它.

"重要的是,Core项目和UI项目都不应该引用基础设施项目或纯粹基础设施的库.我们已经将NHibernate完全放在一边,以便应用程序的其余部分不关心如何数据访问正在发生"

关于新章节中的示例代码的最后一点是工厂不再是静态的(至少不是涉及面向外部的接口).

更新2

Palermo先生在博客上发表了关于抽象工厂这种特殊风格的更多信息(参见OrderShipperFactory的实现).

我也可以考虑'手动依赖注入'(Uncle Bob).

更新3 - 2016年3月

这里有另一个例子,虽然Jeffrey明确表示这是演示代码,而评论表明这将配置在Mark Seeman所谓的组合根(即应用程序启动时)

我在杰弗里的文章发现了这个" 洋葱体系结构:第4部分-四年后的 "

.net dependency-injection service-locator abstract-factory onion-architecture

3
推荐指数
2
解决办法
482
查看次数

Visual Studio - DDD 模块和洋葱

我正在开发一个遵循 DDD 和洋葱架构概念的 C# 应用程序,但我无法实现如何分离代码:

  1. 我希望它由模块分隔 - 有界上下文 - (即销售;供应商;客户)
  2. 我希望它按层分隔(即核心;服务)

想到要执行以下操作:每个层一个项目,每个模块一个文件夹(具有唯一的命名空间)。例如:

项目核心

  • 文件夹销售
  • 文件夹供应商
  • 文件夹客户端

项目服务

  • 文件夹销售
  • 文件夹供应商
  • 文件夹客户端

但是,我认为我可以反过来做:每个模块一个项目,每个层一个文件夹。

不知道有没有更多的办法。

谢谢你。

c# domain-driven-design visual-studio onion-architecture

3
推荐指数
1
解决办法
994
查看次数

洋葱架构是否与IoC相矛盾?

杰弗里巴勒莫开创了洋葱建筑,我找到了一个很好的方法.

http://www.headspring.com/jeffrey/onion-architecture-part-4-after-four-years/

然而他的声明"内层定义接口.外层实现接口"似乎与IoC相矛盾,如果我的理解是正确的,它表明Consumer定义接口和提供者实现它,即控制在于消费者而不是提供者.

这个原则对我来说很有意义,因为,想象一下你正在编写一个用户界面,这个原则意味着你可以继续创建你的用户界面,而不需要知道你要调用的服务,因为你负责定义暴露所有的界面.您需要的功能.

所以为此,Jeffreys的声明似乎是一个矛盾,让我困惑于放置契约(接口定义)的位置,因为它似乎暗示:Domain Layer MyEntity IMyService Service MyEntityService:IMyService

由于Domain下没有图层,我在哪里放置IMyEntity.这也意味着我不能创建一个Presentation项目,直到Domain存在并定义了IMyService.

我个人注意到,我在哪里放置IMyEntityRepository和MyEntityRepository?由于服务依赖于IMyEntityRepository,而MyEntityRepository依赖于IMyEntity

inversion-of-control onion-architecture

2
推荐指数
1
解决办法
1345
查看次数