The Authorisation Manager system comprises several decoupled configurable application layers: user interface, service layer, server, data access layer and database.
The WPF UI uses the Origin framework which is a WPF shell application implementing MVVM, Prism and Unity for hosting line-of-business modules in a document style layout.
The UI contains presentation only logic and relies on the service layer for operational functionality via an instance of the AuthorisationManagerServiceProxy.
The service layer takes requests from the UI via the AuthorisationManagerServiceProxy and is responsible for routing it to the configured service.
The service can be configured to send requests via either the WCF Client or the WebApi Client, both of which implement IAuthorisationManagerServiceAsync and is injected into the constructor of AuthorisationManagerServiceProxy.
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<alias alias="AuthorisationManagerServiceProxy" type="DevelopmentInProgress.AuthorisationManager.Service.AuthorisationManagerServiceProxy, DevelopmentInProgress.AuthorisationManager.Service" />
<alias alias="IAuthorisationManagerServiceProxy" type="DevelopmentInProgress.AuthorisationManager.Service.IAuthorisationManagerServiceProxy, DevelopmentInProgress.AuthorisationManager.Service" />
<alias alias="IAuthorisationManagerServiceAsync" type="DevelopmentInProgress.AuthorisationManager.Service.IAuthorisationManagerServiceAsync, DevelopmentInProgress.AuthorisationManager.Service" />
<alias alias="AuthorisationManagerWCFClient" type="DevelopmentInProgress.AuthorisationManager.WCFClient.AuthorisationManagerWCFClient, DevelopmentInProgress.AuthorisationManager.WCFClient" />
<!--<alias alias="AuthorisationManagerWebApiClient" type="DevelopmentInProgress.AuthorisationManager.WebApiClient.AuthorisationManagerWebApiClient, DevelopmentInProgress.AuthorisationManager.WebApiClient" />-->
<container>
<register type="IAuthorisationManagerServiceProxy" mapTo="AuthorisationManagerServiceProxy"/>
<register type="IAuthorisationManagerServiceAsync" mapTo="AuthorisationManagerWCFClient"/>
<!--<register type="IAuthorisationManagerServiceAsync" mapTo="AuthorisationManagerWebApiClient"/>-->
</container>
</unity>
The WebApi Client forwards the request onto the WebApi, which is simply host for the Server.
The WCF Client forwards the request onto the WCF Service Host, which is simply host for the Server.
The server is for business logic and access to the data access layer via the IAuthorisationManagerDataProxy.
The Data library provides the interface to the data access layer through IAuthorisationManagerData. The data access implementation can be configured for access to MS SQL Server, Oracle or MySql.
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<alias alias="AuthorisationManagerDataProxy" type="DevelopmentInProgress.AuthorisationManager.Data.AuthorisationManagerDataProxy, DevelopmentInProgress.AuthorisationManager.Data" />
<alias alias="IAuthorisationManagerDataProxy" type="DevelopmentInProgress.AuthorisationManager.Data.IAuthorisationManagerDataProxy, DevelopmentInProgress.AuthorisationManager.Data" />
<alias alias="IAuthorisationManagerData" type="DevelopmentInProgress.AuthorisationManager.Data.IAuthorisationManagerData, DevelopmentInProgress.AuthorisationManager.Data" />
<!--<alias alias="AuthorisationManagerData" type="DevelopmentInProgress.AuthorisationManager.Data.SQL.AuthorisationManagerData, DevelopmentInProgress.AuthorisationManager.Data.Oracle" />-->
<!--<alias alias="AuthorisationManagerData" type="DevelopmentInProgress.AuthorisationManager.Data.SQL.AuthorisationManagerData, DevelopmentInProgress.AuthorisationManager.Data.MySql" />-->
<alias alias="AuthorisationManagerData" type="DevelopmentInProgress.AuthorisationManager.Data.SQL.AuthorisationManagerData, DevelopmentInProgress.AuthorisationManager.Data.SQL" />
<container>
<register type="IAuthorisationManagerDataProxy" mapTo="AuthorisationManagerDataProxy"/>
<register type="IAuthorisationManagerData" mapTo="AuthorisationManagerData"/>
</container>
</unity>
The MS SQL Server data access library uses DipMapper for easy, fast and efficient access to MS SQL Server.
The Oracle Server data access library uses DipMapper for easy, fast and efficient access to Oracle.
The MySql data access library uses DipMapper for easy, fast and efficient access to MySql.