Files
Umbraco-CMS/src/Umbraco.Core/Deploy/IArtifactSignature.cs

56 lines
1.9 KiB
C#

namespace Umbraco.Cms.Core.Deploy;
/// <summary>
/// Represents the signature of an artifact.
/// </summary>
public interface IArtifactSignature
{
/// <summary>
/// Gets the entity unique identifier of this artifact.
/// </summary>
/// <value>
/// The udi.
/// </value>
/// <remarks>
/// <para>
/// The project identifier is independent from the state of the artifact, its data
/// values, dependencies, anything. It never changes and fully identifies the artifact.
/// </para>
/// <para>
/// What an entity uses as a unique identifier will influence what we can transfer
/// between environments. Eg content type "Foo" on one environment is not necessarily the
/// same as "Foo" on another environment, if guids are used as unique identifiers. What is
/// used should be documented for each entity, along with the consequences of the choice.
/// </para>
/// </remarks>
Udi Udi { get; }
/// <summary>
/// Gets the checksum of this artifact.
/// </summary>
/// <value>
/// The checksum.
/// </value>
/// <remarks>
/// <para>
/// The checksum depends on the artifact's properties, and on the identifiers of all its dependencies,
/// but not on their checksums. So the checksum changes when any of the artifact's properties changes,
/// or when the list of dependencies changes. But not if one of these dependencies change.
/// </para>
/// <para>
/// It is assumed that checksum collisions cannot happen ie that no two different artifact's
/// states will ever produce the same checksum, so that if two artifacts have the same checksum then
/// they are identical.
/// </para>
/// </remarks>
string Checksum { get; }
/// <summary>
/// Gets the dependencies of this artifact.
/// </summary>
/// <value>
/// The dependencies.
/// </value>
IEnumerable<ArtifactDependency> Dependencies { get; }
}