What is main difference between domain and application services? (I\'m using NHibernate)
Which layer would be better for business logic? What\'s best practice?
I think the post that @Karsten quotes in his comment is more authentic than the most upvoted answer that @joseph.ferris posted here.
Domain services are for "a significant process or transformation in the domain that is not a natural responsibility of an ENTITY or VALUE OBJECT" (Eric Evans Domain-Driven Design).
Application services are just some sort of a facade or an API for your application (or other external consumers), they typically correspond to a use case of the application and are a set of application operations required by the interfacing client layers. They won't contain business logic, or anything that the domain experts might come one day and ask to change. They might contain transaction management (unit of work), application validations (validate state of objects retrieved from database / input saved to database), security validations and cross cutting concerns such as logging, caching etc. and orchestrate domain objects into viewmodels. They're especially useful when you have multiple clients (e.g. Web API and MVC) and the use cases responses involve multiple transactional resources (See "Service layer" section in Patterns of Enterprise Application Architecture by Martin Fowler).
Application services can contain a call to the repository to obtain a domain object filled with data, then they might call some method on the domain object or a domain service and call the repository again to persist the modified domain object. They're typically 'broader' from a domain service because they contain an entire use case.