我正在将客户端写入WCF服务。这是一个包含以C#,C++,VB和Java编写的模块的较大系统中的单个应用程序。所有的应用程序共享常见的配置和日志记录机制,不管他们写的。.NET - 部署WCF客户端,无需app.config
我想弄清楚如何构建客户端应用程序,使其没有一个app.config运行什么语言。为什么?由于app.config中的大部分内容都是样板文件,因此系统管理员不应允许更改系统管理员,并且系统管理员应允许更改的设置应该位于系统范围配置中,而不是位于app.config文件中坐在bin目录中。
案例分析 - 客户端的app.config目前看起来是这样的:
<?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>
这是一堆不透明的样板,该系统管理员不应该来处理。大部分是由Visual Studio插入的。我在文件中做了一个更改 - 我增加了<readerQuotas/>
的最大大小。但是这是一个我不希望系统管理员混淆的改变。除了<endpoint address=""/>
,我想让系统管理员混淆文件中的其他内容。
我正在从系统范围配置中提取端点地址,并将其设置为代码。此文件中没有任何内容应该是用户可编辑的。
那么,我该如何配置一些东西,使其不需要存在?
我可以嵌入它作为大会的资源,并挂接到的app.config加载过程,我需要的DLL的方式做?
创建代码来配置事物的唯一选择,我使用代码来设置端点地址的方式?在代码中创建必要的绑定等?那么,如何知道要编写这些不透明的XML块?
有我思考SysAdmins应该能够改变像WCF服务setttings,愚蠢的我。 – ChrisBint
什么样的设置?网址是什么?当然。绑定?为什么?我正在构建一个客户端来与在IIS上运行的服务进行交谈。没有必要允许系统管理员将绑定更改为除HTTP之外的其他内容。 –
主机名和任何与服务实际交谈的事情如何? – ChrisBint