Skip to content

SAIF.Framework.Core dependencies

SAIF.Framework.Core has no intra-repo project dependencies — it is a single-project solution (SAIF.Framework.Core.sln) with no <ProjectReference> elements. Its dependency landscape combines two internal NuGet packages (SAIF.HashUtil, SAIF.Web.API.Clients — both confirmed on the SAIFNuget feed, though neither is indexed by the Legends CLI) with a set of external packages: a DI container, a validation framework, WCF/AD compatibility shims, and OpenTelemetry instrumentation. As the root of the SAIF.Framework.* family, it makes outbound calls to several external WCF/REST/LDAP back ends on behalf of the platform services it implements.

Internal dependencies

No intra-repo project references were found. SAIF.Framework.Core.csproj declares no <ProjectReference> elements, and SAIF.Framework.Core.sln builds only this single project. Two internal NuGet packages are consumed via <PackageReference>, however — both confirmed on the SAIFNuget feed (legends nuget exists, exit 0, exists: true) but not present in the Legends CLI documentation index, so no inherited/transitive content is available for either one.

Dependency Reference Type Usage
SAIF.HashUtil NuGet Package Consumed via SystemHashUtil.cs (Services.Common\SystemHashUtil.cs); produced by a separate SAIF repository not analyzed in this run
SAIF.Web.API.Clients NuGet Package Provides JsonHttpClient, ClientInfo consumed throughout (EnvironmentServiceBase, SecurityApiClient, WindowsEnvironmentService); produced by a separate SAIF repository not analyzed in this run

External dependencies

Dependency Version Usage
Autofac [3.5.2,) (per .nuspec) DI container consumed directly by ServiceRegistrations and ValidatorFactory
FluentValidation Not pinned in .nuspec* Validation framework consumed by FluentValidationService, ValidatorFactory, FaxService.FaxConfigValidator
Grpc.Core [2.44.0] (pinned) gRPC runtime
log4net Not pinned in .nuspec* Logging sink implementation consumed by LogService
System.Runtime.InteropServices.RuntimeInformation Not pinned in .nuspec* .NET BCL compatibility package
OpenTelemetry.Exporter.OpenTelemetryProtocol Not pinned in .nuspec* OTLP tracing/metrics wiring in Services\OpenTelemetry\OpenTelemetryExtensions.cs
OpenTelemetry.Instrumentation.AspNet Not pinned in .nuspec* OTLP tracing/metrics wiring in Services\OpenTelemetry\OpenTelemetryExtensions.cs
OpenTelemetry.Instrumentation.Http Not pinned in .nuspec* OTLP tracing/metrics wiring in Services\OpenTelemetry\OpenTelemetryExtensions.cs
OpenTelemetry.Instrumentation.Runtime Not pinned in .nuspec* OTLP tracing/metrics wiring; also consumed in EnvironmentServiceBase (ActivitySource)
System.Configuration.ConfigurationManager Not pinned in .nuspec* .NET compat shim backing ConfigurationManager.AppSettings usage
System.DirectoryServices Not pinned in .nuspec* Backing ADService's AD group-membership queries
System.DirectoryServices.AccountManagement Not pinned in .nuspec* Backing ADService's AD group-membership queries
System.ServiceModel.Primitives Not pinned in .nuspec* WCF compat shim backing all Services.WCF.* contracts/clients
System.Xml.XDocument Not pinned in .nuspec* Backing PropertiesFileUtilities XML-file reads

API dependencies

This library implements platform services that call outbound WCF/REST/LDAP endpoints on behalf of consumers.

Endpoint Method Called from Usage
WCF SecurityService (securityServiceUrl) IsAuthorized, IsAuthorized2, GetUser, GetSaifUserByUserId, GetUserIdForEmployeeId, GetSaifUserByEmployeeId, GetExternalUser, GetExternalUserByCustomerId, GetInjuredWorkerUserByCustomerId, GetUsersByGroup SecurityServiceClient (internal), invoked via SecurityGroupService, SystemUserProfile Resource/role authorization checks and AD-group membership queries fronted through BasicHttpBinding
REST Security API (SecurityClient.ServiceUrl) GET /v1/Users/GetUser/{domain}/{username} SecurityApiClient.GetUser Retrieve a user profile from the REST-based Security API
REST Security API (SecurityClient.ServiceUrl) GET /v1/Users/IsAuthorized/{domain}/{username}/{role} SecurityApiClient.IsAuthorized Role/resource authorization check via the REST-based Security API
Legacy ASMX Active Directory service HasAccess → HasAccessCache/HasAccessCacheExternal, GetDefaultPrinter, GetContact → GetUserInfo ActiveDirectoryServiceProxy (legacy, no in-repo caller found — likely dead code)* Legacy AD group/resource membership and directory lookups
Environment API ({EnvironmentApiUrl}/v2/settings/{ApplicationId}/{ApplicationHost}/{section}/section) GetGlobalConfigSettings / LoadSection (WebClient.DownloadString) EnvironmentServiceBase Fetches configuration sections and global settings to populate the in-memory Configurations cache
Environment API ({EnvironmentApiUrl}/v2/secureSetting/{applicationId}/{track}/{section}/{key}/value) GetSecureConfigSetting (via JsonHttpClient) EnvironmentServiceBase Retrieves encrypted/credential settings, cached in SecureSettingCache
Legacy DbConnectionServiceProxy (dbConnectionServiceUrl) GetOracleConnectionString, GetSqlServerConnectionString (proxy calls) DbConnectionManager Resolves live Oracle/SQL Server connection strings from an instance/server name indirection
WCF/SOAP document endpoints (documentGeneratorServiceUrl, faxServiceUrl, fileServiceUrl, imagingServiceUrl, pdfServiceUrl, preferenceServiceUrl, uc4coreapi.url, workCalendarServiceUrl) Various (service-specific) DocumentService, FaxService, FileService, ImagingService, PDFService, PreferenceService, UC4Service, WorkCalendarService Each concrete platform service fronts its own WCF/SOAP endpoint resolved via IEnvironmentService.GetConfigSetting
REST logging API (tracingdefaults.loggingapiurl, tracingdefaults.logerrorroute) POST (via RestApiAppender) LogService, log4netAppenders.RestApiAppender Posts application log entries to a REST-based centralized logging sink

Dependency risks and notes

  • SAIF.Common (EntityBase<TEntity>, IDataEntity, Enforce, LongSequence, Extensions.*) is used pervasively throughout this library but has no confirmed <PackageReference>/<ProjectReference> in SAIF.Framework.Core.csproj or its .nuspec <dependencies> — presumed transitive through SAIF.HashUtil or SAIF.Web.API.Clients (both confirmed internal NuGet packages on the SAIFNuget feed, but neither is indexed by the Legends CLI, so their own dependency graphs remain unknown*), and this transitive path is unconfirmed. This is an open risk for downstream dependency-graph accuracy.
  • SaifValidationException (thrown by FluentValidationService.ValidateAndThrow<T>) is not defined anywhere in this project's Exceptions\* folder — likely defined in the same unresolved SAIF.Common-family dependency.*
  • SAIF.HashUtil and SAIF.Web.API.Clients are confirmed internal NuGet packages on the SAIFNuget feed (legends nuget exists, both exists: true; declared <PackageReference>s with explicit .nuspec version ranges [2,3)), but neither is indexed by the Legends CLI, and both are produced by separate SAIF repositories not analyzed in this run — their own transitive dependency graphs remain unknown.**
  • The generic IUnitOfWork/IRepository<TEntity> data-access abstraction has no production implementation shipped in this library (only an in-memory TestRepository/TestUnitOfWork test double) — consumers or other Framework4 libraries must supply the real implementation, which is an implicit dependency-graph gap for any consumer relying on this library alone for data access.
  • PropertiesFileUtilities.GetValue (backed by System.Xml.XDocument) has no internal call sites in this library — it is a declared-but-unused public utility retained for consuming web applications.*
  • The legacy ASMX ActiveDirectoryServiceProxy dependency path has no in-repo caller and is flagged as likely-dead legacy code, not an active runtime dependency.*
  • nuget.config is present at the repository root but its repositoryPath/custom sources were not inspected during analysis — flagged as an open question for source verification.**

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.

Sources

  • Core\SAIF.Core\SAIF.Framework.Core.csproj
  • Core\SAIF.Core\SAIF.Framework.Core.nuspec
  • Core\SAIF.Core\app.config
  • Core\SAIF.Core\Services.Common\SystemHashUtil.cs
  • Core\SAIF.Core\Services.Common\EnvironmentServiceBase.cs
  • Core\SAIF.Core\Services.Common\DbConnectionManager.cs
  • Core\SAIF.Core\Services.Common\WindowsEnvironmentService.cs
  • Core\SAIF.Core\Services\ClientProxies\SecurityServiceClient.cs
  • Core\SAIF.Core\Services\ClientProxies\Legacy\ActiveDirectoryServiceProxy.cs
  • Core\SAIF.Core\Services\Utilities\SecurityApiClient.cs
  • Core\SAIF.Core\Services\Utilities\FluentValidationService.cs
  • Core\SAIF.Core\Services\Utilities\LogService.cs
  • Core\SAIF.Core\Services\Utilities\Documents\DocumentService.cs
  • Core\SAIF.Core\Services\Utilities\Documents\FaxService.cs
  • Core\SAIF.Core\Services\Utilities\Documents\PdfConvertAndMergeService.cs
  • Core\SAIF.Core\Services\Utilities\Documents\ImagingService.cs
  • Core\SAIF.Core\Services\Utilities\Documents\PDFService.cs
  • Core\SAIF.Core\Services\Utilities\Documents\PrintService.cs
  • Core\SAIF.Core\Services\Utilities\FileService.cs
  • Core\SAIF.Core\Services\Utilities\PreferenceService.cs
  • Core\SAIF.Core\Services\Utilities\UC4Service.cs
  • Core\SAIF.Core\Services\Utilities\WorkCalendarService.cs
  • Core\SAIF.Core\Services.WCF\Contracts\ISecurityService.cs
  • Core\SAIF.Core\Services.WCF\ClientProxies\DisposableClientBase.cs