Ich habe oft damit zu kämpfen. Ich sage normalerweise, dass Ihre Business/Service-Schicht Domain-Objekte als Parameter annehmen sollte.
Wenn wir Web sprechen, wird Ihre Web Tier die ID haben. Es wird wahrscheinlich eine Instanz des Objekts aus der Service-Schicht instanziieren oder abrufen. Es ist also sinnvoll, es an Ihre Serviceebene zu übergeben.
Es gibt jedoch oft Zeiten, in denen Sie den Abruf des Objekts duplizieren würden. Manchmal laden Ihre Dienste ein Objekt auf Grund einiger zusätzlicher Daten, die nicht in der Webschicht erfasst wurden. Ich hatte sogar Zeiten, in denen die Datenzugriffsebene Objekte für Abhängigkeiten laden muss. Durch Caching können einige dieser Probleme gelöst werden, und durch Re-Architecture von Daten/Modellen können andere behoben werden. Bestimmt. Aber manchmal, im Hinblick auf die Leistung oder andere Probleme, macht die Weitergabe einer ID mehr Sinn.
Zusammengefasst, lieber Domänenobjekte an die Business-Tier übergeben. Aber bedenken Sie, dass es aus anderen Gründen besser ist, eine ID zu übergeben, und leider muss es Ausnahmen von Ihrer Regel geben.