Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This is a list of interfaces or abstract classes in DD4T that are very commonly implemented cq. extended. 

InterfaceRationaleExamplesKnown customersPriorityNotes
ILoggerImplement a different logging mechanismSerilog, MEFEssity, EcclesiasticalHigh
IDependencyMapperAdd dependency mapping independently from any DI implementation

For custom DI implementations: read dependency mappings

For any other customization: write dependency mappings

Essity, EcclesiasticalVery High
DD4T ViewModel base attributesSee ViewModel base attributes for a complete overviewVarious extensions to the ViewModel attributesFujitsu, Essity, RicohHigh
ICacheAgentImplement a different caching mechanismRedis, serialized cache agentEssity, EcclesiasticalHigh
IPublicationResolverImplement a custom publication resolving mechanismCommon practice is to create a publication resolver wrapped around the DynamicMappingsRetriever (which isn't out of the box in DD4T). Other use cases would be to use browser settings or Geolocation. ManyLowIn Web 8 one could argue that the DynamicMappingsRetriever is always an improvement, and DXA 2.0 does not support older Tridion versions.

Overview of commonly used public classes / methods

This is a list of public classes and methods in DD4T that are very commonly used in customer implementations.

ClassMethodRationaleKnown customersPriorityNotesDD4T.DI.Autofac.BootstrapUseDD4TSet DD4T default wiringManyMediumIf we rename this, it must be included in the release notes. Also note that any custom DI implementation also implements a method with the same name and signature.DD4T.DI.UnityUseDD4TSet DD4T default wiringSomeMediumSee aboveDD4T.DI.NinjectUseDD4TSet DD4T default wiringSomeMediumSee aboveDD4T ViewModel attributesSee ViewModel Attributes for a complete overviewSupport existing customer ViewModel classesManyVery high
ILoggerCritical, Error, Warning, Information, DebugLog through the mechanism provided by DD4TManyHigh
ILinkResolver / DefaultLinkResolverResolveUrl (2 overloads)Extend link resolving mechanismEssity, FujitsuHighExamples: to remove file extensions, always link to canonical url, cross-site scripting (Fujitsu)
IRichTextResolver / DefaultRichTextResolverResolveExtend rich text resolving mechanismEssityHighExamples: select correct CDN url out of a set (used with ECL), custom logic depending on the schema of the target component
IMessageProviderStartCreate custom cache invalidation mechanismVasco, FujitsuMediumMostly used (I think) because of problems in the official DD4T version (see https://github.com/dd4t/DD4T.Caching.ApacheMQ).
ILoggerCritical, Error, Warning, Information, DebugLog through the mechanism provided by DD4TManyHigh
ILinkResolver / DefaultLinkResolverResolveUrl (2 overloads)Extend link resolving mechanismEssity, FujitsuHighExamples: to remove file extensions, always link to canonical url, cross-site scripting (Fujitsu)
IRichTextResolver / DefaultRichTextResolverResolve
Essity
Select correct CDN url out of a set (used with ECL)
IPageProvider / IComponentPresentationProvider / IBinaryProvider / VariousSupport different Tridion version or load data from a different source, e.g. for unit testing.

Extremely powerful because it allows customers on older Tridion versions to use DD4T.
IDD4TConfigurationVariousSupport a different configuration mechanism (out of the box it is using the Web.config / App.config)Not sureMediumCould be useful for unit testing purposes.