There are a number of extensibility points within DevForce which allow you to customize your application processing. We list them here.
The first time DevForce finds and uses your custom classes it will log this fact to the debug log (or other ITraceLogger implementation). This information, along with logging about all assemblies loaded into the "parts" catalog, can help in diagnosing problems should they occur.
The following tables list the DevForce interfaces and base types which you can implement or extend to provide customization for your application. You'll notice that in some cases there are default implementations for an interface; in these cases you can either implement the interface directly or sub-type the base class to provide the customization you require.
Interface | Discovery | Purpose | Topic |
IAuthenticationManager | Client | Provides credentials to an EntityManager. | Security |
IAuthenticationProvider | Client | Provides an IAuthenticationManager. | Security |
ICompositionContextResolver | Client and Server | Provides for resolution of custom Composition Contexts. | Discovery |
IConcurrencyStrategy | Server | Assigns the value of a concurrency field. | Concurrency |
IDataSourceKeyResolver | Client and Server | Determines the data source key and connection information. | Data sources |
IEntityLoginManager | Server | Validates user credentials. | Security |
IIdGenerator | Client and Server | Assigns temporary and permanent IDs for entities. | Custom ids |
IKnownType | Client and Server | Indicates a known type. | Known types |
IKnownTypeProvider | Client and Server | Provides programmatic specification of known types. | Known types |
ILoginCredential | Client and Server | Defines user credentials. | Security |
ITraceLogger | Client and Server | A custom logger. | Log |
ITraceLoggerProvider | Client and Server | Provides custom logging. | Log |
IVerifierProvider | Client and Server | Provides programmatic specification of verifiers. | Validation |
Base Type | Discovery | Purpose | Topic |
AspAuthenticatingLoginManager | Server | Default IEntityLoginManager when using ASP.NET security. | Security |
BaseCompositionContextResolver | Client and Server | Default ICompositionContextResolver implementation. | Discovery |
DefaultConcurrencyValueSetter | Server | Default IConcurrencyStrategy implementation. | Concurrency |
DefaultDataSourceKeyResolver | Client and Server | Default IDataSourceKeyResolver implementation. | Data sources |
EntityServerErrorInterceptor | Server | Intercept and filter exceptions before sending to the client. | Security |
EntityServerPocoSaveAdapter | Server | Provides save processing for POCO classes. | POCO |
EntityServerQueryInterceptor | Server | Intercept and customize query processing. | Query |
EntityServerSaveInterceptor | Server | Intercept and customize save processing. | Save |
EntityServiceApplication | Server | Allows for interception of EntityService events. | Configure |
FormsAuthenticationLoginCredential | Client and Server | ILoginCredential which can be used with ASP.NET Security. | Security |
LoginCredential | Client and Server | Default ILoginCredential implementation. | Security |
ServiceHostEvents | Server | Customize configuration of WCF services. | Configuration |
ServiceProxyEvents | Client | Customize configuration of WCF proxies. | Configuration |
UserBase | Client and Server | Default IPrincipal implementation. | Security |
UserIdentity | Client and Server | Default IIdentity implementation. | Security |
There are also a few attributes which DevForce will look for to provide specific functionality. There are other DevForce attributes, such as those for validation, property interception, and authorization, but we won't list them here since they don't directly relate to the topic of discoverability and extensibility.
Attribute | Discovery | Purpose | Topic |
AllowRpcAttribute | Server | Indicates an invoked server method. | Server methods |
DiscoverableTypeAttribute | Client and Server | Indicates a known type. | Known types |
EnableClientAccessAttribute | Server | Indicates a provider of CRUD processing for POCO classes. | POCO |