我的印象是它们基本上都是一样的.模型对象也是相同的吗?

现在,在我的架构中,我有:

class Person 
{

    public string PersonId;        
    public string Name;
    public string Email;

    public static bool IsValidName() { /* logic here */ }
    public static bool IsValidEmail() { /* logic here */ }
}


class PersonService
{
    private PersonRepository pRepository;

    PersonService()
    {
        pRepository = new PersonRepository();
    }

    public bool IsExistingEmail(string email)
    {
        //calls repo method to see if email is in db
    }


    public Person GetPerson(email)
    {
        return pRepository.Get(email);
    }


    public void SavePerson(Person p)
    {
        if (Person.IsValidEmail(p.Email) && !IsExistingEmail(p.Email)
        {
            pRepository.Save(p);
        }
    }

}


class PersonRepository
{
    public void Save(Person p)
    {
        //save to db
    }

    public Person Get(string email)
    {
        //get from db
    }

    public bool IsExistingEmail(string email)
    {
        //see if email in db
    }

}

那么,以上哪一类是POCODomain ObjectModel objectentity

推荐答案

My (non-standard) Layman definitions

  • POCO-纯旧的%Insert_Your_Language%对象.一种没有逻辑的类型.它只是将数据存储在内存中.您通常只会在其中看到自动属性,有时是字段和构造函数.
  • Domain object与您的域相关的类的实例.我可能会从域对象中排除任何卫星或实用程序对象,例如,在大多数情况下,域对象不包括诸如记录、格式化、序列化、加密等内容-除非您专门构建了一个分别用于记录、序列化、格式化或加密的产品.
  • 我认为Model objectDomain object是一样的.人们倾向于交替使用(我可能错了)
  • Entity一个班级有id
  • Repository一个类,它从一侧(例如数据库、数据服务或ORM)与数据存储以及服务、UI、业务层或任何其他请求主体进行通信.它通常隐藏所有与数据相关的东西(如复制、连接池、关键约束、事务等),并使处理数据变得简单
  • 通常通过公共API提供某些功能的Service个软件.根据层的不同,它可以是REST风格的自含式容器,也可以是允许您查找所需类型的特定实例的类.

Original answer

这些是在(分布式)域驱动设计中大量使用的terms个.它们是不一样的.术语model Object可以用作domain object的同义词.

来自业务特定领域的Domain Objects.个对象,它们代表对领域专家有意义的东西.域对象主要由实体和值对象表示.一般说来,大多数位于域层的对象都对模型有贡献,并且都是域对象.

Entity.从根本上说,物体不是由其属性定义的,而是由一条连续性和同一性的线索定义的.(Meaning it 101 have 102)

POCO.没有复杂逻辑的简单对象,通常只有几个属性,与ORM一起使用或用作数据传输对象

class Person - Entity and POCO, instance of this class is Domain Object
class PersonService - Service
class PersonRepository - Repository

Asp.net相关问答推荐

更新剃须刀页面中图表的值

如何使用 Get-Process powershell 命令通过端口号获取进程的 ID

ASP.NET - 在屏幕底部显示应用程序构建日期/信息

无法连接到 ASP.Net 开发服务器问题

区分开发、登台和生产环境之间的 web.config

从 RowDataBound 事件的 gridview 从单元格中获取值

最佳服务器端 .NET PDF 编辑库

如何从 JS 访问 ViewBag

如何在asp.net mvc的html.actionlink中调用javascript函数?

.NET 上的 HTTP/2(HTTP2 或 SPDY)

如何在 ASP.NET MVC 中启用跨源请求

要调用此方法,Membership.Provider属性必须是ExtendedMembershipProvider的实例

为什么混合 Razor Pages 和 VueJs 是一件坏事?

如何通过 Google 图表 API 使用 X 轴中的日期?

脚本管理器控制实际上是做什么的?

elmah:没有 HttpContext 的异常?

字体真棒里面asp按钮

ASP.NET 5 (vNext) - 获取配置设置

DropDownList 的 SelectedValue 与 SelectedItem.Value

您将如何将 ASP.Net MVC 嵌入到现有的网站项目中?