Qual é a diferença entre objetos de domínio, POCOs e entidades?

Fiquei com a impressão de que todos são basicamente iguais. Os objetos de modelo também são os mesmos?

gora, na minha arquitetura, tenho:

class Person 
{

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

    public static bool IsVali,dName() { /* 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
    }

}

Então, quais das classes acima sãoPOCO, Domain Object, Model object, entity?

questionAnswers(6)

yourAnswerToTheQuestion