public DefaultClient(string fimUrl, TimeSpan?receiveTimeout = null, int?maxReceivedMessageSize = null) { this.wsTransferClient = new WsTransferClient(Bindings.ServiceMultipleTokenBinding_Common(receiveTimeout, maxReceivedMessageSize), DefaultEndpoints.WsTransfer(fimUrl)); this.wsTransferFactoryClient = new WsTransferFactoryClient(Bindings.ServiceMultipleTokenBinding_Common(receiveTimeout, maxReceivedMessageSize), DefaultEndpoints.WsTransferFactory(fimUrl)); this.wsEnumerationClient = new WsEnumerationClient(Bindings.ServiceMultipleTokenBinding_Common(receiveTimeout, maxReceivedMessageSize), DefaultEndpoints.WsEnumeration(fimUrl)); this.mexClient = new MexClient(Bindings.MetadataExchangeHttpBinding_IMetadataExchange(receiveTimeout, maxReceivedMessageSize), DefaultEndpoints.Mex(fimUrl)); this.alternateClient = new AlternateClient(Bindings.ServiceMultipleTokenBinding_Common(receiveTimeout, maxReceivedMessageSize), DefaultEndpoints.Alternate(fimUrl)); this.resourceFactory = new RmResourceFactory(); this.requestFactory = new RmRequestFactory(); }
private void Initialize() { if (_isDisposed) { throw new ObjectDisposedException("FimClient"); } if (_isInitialized) { return; } lock (_initializationSyncRoot) { if (_isInitialized) { return; } var ctx = LogContext.WithConfigFormat(); _log.Debug(ctx.Format("Initializing FIM client for user {0}"), System.Threading.Thread.CurrentPrincipal.Identity.Name); // client used for paged queries _pagedQueriesClient = _fimUrl == null ? new WsEnumerationClient() : new WsEnumerationClient(Bindings.ServiceMultipleTokenBinding_Common(_receiveTimeout, _maxReceivedMessageSize), DefaultEndpoints.WsEnumeration(_fimUrl)); // client used for all other operations _defaultClient = _fimUrl == null ? new DefaultClient() : new DefaultClient(_fimUrl, _receiveTimeout, _maxReceivedMessageSize); if (_credential != null) { _pagedQueriesClient.ClientCredentials.Windows.ClientCredential = _credential; _defaultClient.ClientCredential = _credential; } // reusing schema for all subsequent instances for performance reasons // each schema-refresh operation downloads ~1MB of xml that never changes if (_schema == null) { lock (_schemaSyncRoot) { if (_schema == null) { _log.Debug(ctx.Format("Downloading FIM schema...")); _schema = _defaultClient.RefreshSchema(); _log.Debug(ctx.Format("FIM schema downloaded")); } } } var resourceTypeFactory = CreateResourceTypeFactory(); _defaultClient.ResourceFactory = new RmResourceFactory(_schema, resourceTypeFactory); _defaultClient.RequestFactory = new RmRequestFactory(_schema); _isInitialized = true; _log.Debug(ctx.Format("FIM client initialized for user {0}"), System.Threading.Thread.CurrentPrincipal.Identity.Name); } }