Sto scrivendo un client su un servizio WCF. Questa è una singola app in un sistema più grande che include moduli scritti in C#, C++, VB e Java. Tutte le app condividono meccanismi di configurazione e di registrazione comuni, indipendentemente dalla lingua in cui sono stati scritti..NET: distribuzione di un client WCF, senza un'app.config
Mi piacerebbe capire come creare l'applicazione client in modo che venga eseguita senza app.config. Perché? Poiché la maggior parte di ciò che è in app.config è boilerplate, non è consentito che gli amministratori di sistema siano autorizzati a cambiare, e quali impostazioni dovrebbero essere autorizzate dagli amministratori di sistema nella configurazione a livello di sistema e non in un file app.config seduto nella directory bin.
Caso in questione - app.config del cliente attualmente appare così:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="WSHttpBinding_ICourierService">
<security defaultAlgorithmSuite="Default" authenticationMode="SecureConversation"
...
</security>
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Default" writeEncoding="utf-8">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport manualAddressing="false"
...
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:57102/MyService.svc"
...
>
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
Si tratta di un gruppo di boilerplate opaco che gli amministratori di sistema non dovrebbero avere a che fare con. La maggior parte è stata inserita da Visual Studio. Ho apportato una modifica al file: ho aumentato la dimensione massima in <readerQuotas/>
. Ma questo è un cambiamento che non voglio fare con gli amministratori di sistema. E non c'è nient'altro nel file che voglio che gli amministratori di sistema facciano casino con eccezione di <endpoint address=""/>
.
E sto tirando l'indirizzo dell'endpoint dalla configurazione a livello di sistema, e l'impostazione nel codice. Non c'è nulla in questo file che dovrebbe essere modificabile dall'utente.
Quindi, come si configura cose in modo che non ho bisogno di averlo presente?
Posso incorporarlo come una risorsa in assemblea, e agganciare nel processo di caricamento app.config, il mio modo di fare con le DLL richieste?
è l'unica scelta per creare il codice per configurare le cose, il modo in cui sto usando il codice per impostare l'indirizzo dell'endpoint? Creare i collegamenti necessari, ecc., Nel codice? In che modo, quindi, so quale codice scrivere, dati questi blocchi di XML opaco?
C'era me amministratori di sistema di pensiero dovrebbe essere in grado di cambiare le cose come setttings servizio WCF, sciocco me. – ChrisBint
Che tipo di impostazione? URL? Certamente. Attacchi? Perché? Sto costruendo un client per parlare con un servizio in esecuzione su IIS. Non è necessario consentire agli amministratori di sistema di modificare l'associazione con qualcosa di diverso da HTTP. –
E i nomi degli host e qualsiasi cosa abbia a che fare con il parlare effettivamente con il servizio. – ChrisBint