SAIF.Presentation.Web.Core.Infragistics111 architecture¶
SAIF.Presentation.Web.Core.Infragistics111 is the top-most assembly of the presentation package's build chain: it supplies the WebForms page/master-page base classes, the application-level MVC-triad extensions, control-manipulation and mail/download utilities, and the menu navigation/authorization context that every SAIF Business Online screen is built on. It is also the ILMerge host that consolidates the sibling presentation assemblies into the single shipped SAIF.Presentation.Web.Infragistics111.dll.
Responsibilities¶
- Provide the WebForms page (
AppViewPageBase) and master-page (AppViewMasterPageBase) base classes that every consuming application screen inherits, adding session keep-alive, control back-color reset, grid preference persistence and hover-help wiring on top of the MVC-styleViewPageBase. - Extend the framework MVC triad for application use through
clsAppControllerBaseandclsAppModelBase(write-status enum, standard user messages, mail-request fields, grid customizer collection). - Resolve per-user menu authorization and navigation state (
NavigationContext), bridging the presentation layer to the Oracle-backedSAIF.Business.Menucollections. - Offer stateless presentation utility services — control manipulation (
Utilities.clsControlManager), string cleaning (Utilities.clsStringUtilities), and mail/file-download helpers (Utilities.clsMailMessage) — reused across the presentation stack. - Merge the sibling presentation assemblies (
SAIF.Presentation,SAIF.Presentation.Web.Binding.Infragistics111,SAIF.Presentation.Web.Controls.V2,SAIF.Presentation.Web.Controls.Infragistics111,SAIF.Presentation.Web.Controls.V2.Menu,SAIF.Presentation.Web.MVC,SAIF.Business.Menu,SAIF.Presentation.Web.Controls.AJAX.Infragistics111) into the single deployedSAIF.Presentation.Web.Infragistics111.dllviapostbuild.bat/ILMerge.
Component boundaries¶
- Page/master lifecycle layer (
AppViewPageBase,AppViewMasterPageBase): sits atop every consuming application's WebForms page hierarchy; extendsSAIF.Presentation.Web.MVC.ViewPageBase. - MVC triad extension layer (
clsAppControllerBase,clsAppModelBase): extendsSAIF.Presentation.Web.MVC'sclsControllerBase/clsModelBasewith application-level conventions. - Presentation utility layer (
Utilities.clsControlManager,Utilities.clsStringUtilities,Utilities.clsMailMessage,clsNestedMaster): stateless static helper services with no dependency on the page hierarchy beyond theAppViewPageBaseparameter accepted byStreamDownloadFile. - Navigation/authorization context layer (
NavigationContext): the only type in the library that reaches a database; composesSAIF.Business.Menucollections over an Oracle data layer (clsMSOracleDataLayer, DB userMENU) to answer "what menu items is this user authorized to see, and where am I now". No direct SQL is issued by this library — all statement execution is delegated toSAIF.Business.Menu.
Interaction model¶
- Consuming application pages inherit
AppViewPageBase, which onInit/Loadwires session keep-alive (CallSessionPing, gated byAppGlobal.EnvironmentService.IsClientExternal*) and control back-color reset (Utilities.clsControlManager.ResetBackColor). AppViewMasterPageBase-derived master pages compose the standard SAIF chrome, delegating menu rendering toSAIFMenu/SAIFMenuTop(SAIF.Presentation.Web.Controls.V2.Menu) and banner rendering toBannerControl(SAIF.Presentation.Web.Controls.V2).NavigationContextis constructed once per session bootstrap with the authenticated user name; it opensclsMSOracleDataLayer("MENU", …)and loadsclsMenuAuthorizedItemCollection(SAIF.Business.Menu), then answers all subsequent navigation questions from the in-memory authorized set (no further database access).clsMailMessagecalls the legacySAIFMail.clsSAIFMessageSOAP service, whose endpoint URL is resolved per call fromAppGlobal.EnvironmentService.GetConfigSetting("LegacyMailWebServiceUrl").- Preference persistence for grid column/sort/size state flows through
m_controller.Model.Preferences(SAIF.Framework.Preferences, packageSAIF.BOF.Framework), reached transitively viaSAIF.Presentation'sclsPreferences.
Architecture diagram¶
The following diagram shows how a consuming application page flows through this library's components.
flowchart TD
A["Consuming app page<br>(inherits AppViewPageBase)"] --> B["AppViewPageBase<br>Page_Init / Page_Load"]
B --> C["CallSessionPing()<br>registers PingSession.js"]
B --> D["clsControlManager.ResetBackColor(Me)"]
A --> E["Preference operations<br>Apply/Save/ClearPreferences"]
E --> F["m_controller.Model.Preferences<br>(SAIF.Framework.Preferences)"]
A --> G["AppViewMasterPageBase<br>chrome accessors"]
G --> H["SAIFMenu / SAIFMenuTop / BannerControl<br>(Controls.V2 + V2.Menu)"]
A --> I["NavigationContext"]
I --> J["clsMSOracleDataLayer<br>MENU_ENVIRONMENT, DB user MENU"]
J --> K["SAIF.Business.Menu collections<br>(authorized menu items)"]
A --> L["clsMailMessage.SendMail"]
L --> M["SAIFMail.clsSAIFMessage<br>legacy mail SOAP service"]
Sequence diagram¶
The following diagram shows the primary menu-authorization bootstrap sequence.
sequenceDiagram
participant Page as Consuming page
participant Nav as NavigationContext
participant DAL as clsMSOracleDataLayer
participant Menu as SAIF.Business.Menu
Page->>Nav: New(inUser)
Nav->>DAL: New("MENU", MENU_ENVIRONMENT)
DAL-->>Nav: IDataPortalInfo
Nav->>Menu: clsMenuAuthorizedItemCollection.GetMenuAuthorizedItems(dpi, user)
Menu-->>Nav: Authorized item collection
Page->>Nav: IsMenuItem / GetCurrentPage / GetItem
Nav-->>Page: In-memory lookup result (no further DB access)
Design constraints¶
- The library targets .NET Framework 4.6.1 WebForms and is bound to Infragistics 11.1 control assemblies for grid-preference and control-manipulation behavior.
NavigationContextnever re-validates that the supplied user name matches the authenticated identity — callers (SAIF.Presentation.Web.MVC,SAIF.Presentation.Web.Controls.V2.Menu) are responsible for supplying a trusted identity value.*- The Oracle environment name (
MENU_ENVIRONMENT) is read via rawConfigurationManager.AppSettingsrather than the framework environment service, so it must be independently maintained in every hosting application'sweb.config. - This library is the ILMerge host; its
postbuild.batstep couples the build/release process of eight other libraries to this project's build. - No local business rules are enforced beyond UI/session conventions (session-ping gating, control back-color rules); menu authorization rules themselves are enforced by
SAIF.Business.Menu.
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Related documentation¶
- Index
- Overview
- Dependencies
- Operations and processes
- Business rules
- Configuration
- Security and authorization
- API reference
Sources¶
SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vbSAIF.Presentation.Web.Core.Infragistics111/AppViewMasterPageBase.vbSAIF.Presentation.Web.Core.Infragistics111/clsAppControllerBase.vbSAIF.Presentation.Web.Core.Infragistics111/clsAppModelBase.vbSAIF.Presentation.Web.Core.Infragistics111/clsControlManager.vbSAIF.Presentation.Web.Core.Infragistics111/clsMailMessage.vbSAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vbSAIF.Presentation.Web.Core.Infragistics111/postbuild.bat