У меня есть приложение форм окон. Я хочу использовать две других WCF Services, которые никоим образом не соединены. ОДНАКО я не уверен, как пойти об определении сервисов в моем файле APP.CONFIG. Из того, что я читал, возможно сделать то, что я сделал ниже, но я не могу быть уверен, что синтаксис правилен, или теги являются всем подарком, в случае необходимости и мне было нужно некоторое разъяснение.
Так ниже корректного способа установить два сервиса в ЕДИНСТВЕННОМ ФАЙЛЕ APP.CONFIG? Т.Е.:
<configuration>
<system.serviceModel>
<services>
<service>
<!--SERVICE ONE-->
<endpoint>
</endpoint>
<binding>
</binding>
</service>
<service>
<!--SERVICE TWO-->
<endpoint>
</endpoint>
<binding>
</binding>
</service>
</services>
</system.serviceModel>
</configuration>
<configuration>
<system.serviceModel>
<services>
<!--SERVICE ONE-->
<service>
<endpoint
address=""
binding="netTcpBinding"
bindingConfiguration="tcpServiceEndPoint"
contract="ListenerService.IListenerService"
name="tcpServiceEndPoint"
/>
<binding
name="tcpServiceEndPoint"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
transactionFlow="false"
transferMode="Buffered"
transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard"
listenBacklog="10"
maxBufferPoolSize="524288"
maxBufferSize="65536"
maxConnections="10"
maxReceivedMessageSize="65536"
>
<readerQuotas
maxDepth="32"
maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384"
/>
<reliableSession
ordered="true"
inactivityTimeout="00:05:00"
enabled="true"
/>
<security mode="None">
<transport
clientCredentialType="Windows"
protectionLevel="EncryptAndSign"
/>
<message clientCredentialType="Windows" />
</security>
</binding>
</service>
<!--SERVICE TWO-->
<service>
<endpoint
address=""
binding="netTcpBinding"
contract="UploadObjects.IResponseService"
bindingConfiguration="TransactedBinding"
name="UploadObjects.ResponseService"
/>
<binding name="TransactedBinding">
<security mode="None" />
</binding>
</service>
</services>
</system.serviceModel>
</configuration>
Что представляют ПОВЕДЕНИЯ? Как они касаются сервисных определений?
Сервис называет потребность совпасть с Обязательным Именем?
Объедините их вместе.
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Service1Bevhavior">
</behavior>
<behavior name="Service2Bevhavior"/>
</serviceBehaviors>
</behaviors>
<services>
<!-- SERVICE ONE -->
<service name="Service1">
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="tcpServiceEndPoint"
contract="ListenerService.IListenerService"
name="tcpServiceEndPoint" />
</service>
<!-- SERVICE TWO -->
<service name="Service2">
<endpoint address=""
binding="netTcpBinding"
contract="UploadObjects.IResponseService"
bindingConfiguration="TransactedBinding"
name="UploadObjects.ResponseService"/>
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="tcpServiceEndPoint" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288"
maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:05:00"
enabled="true" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
<netTcpBinding>
<binding name="TransactedBinding">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
Должно ли имя службы быть таким же, как имя привязки?
Имя службы должно быть классом реализации контракта. Если вы хотите использовать конфигурацию привязки, имя конфигурации привязки должно совпадать с параметром bindingConfiguration конечной точки.
<configuration>
<system.serviceModel>
<services>
<!--SERVICE ONE-->
<service name="ListenerService.ListenerServiceImplementation" >
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="tcpServiceEndPoint"
contract="ListenerService.IListenerService" />
<!--SERVICE TWO-->
<service name="UploadObjects.ResponseServiceImplementation" />
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="TransactedBinding"
contract="UploadObjects.IResponseService" />
</services>
<bindings>
<binding name="tcpServiceEndPoint" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288"
maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:05:00"
enabled="true" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
<binding name="TransactedBinding">
<security mode="None" />
</binding>
</bindings>
</system.serviceModel>
</configuration>
У вас неправильная конфигурация:
<configuration>
<system.serviceModel>
<behaviors>
... here you define sets of behaviors - behavior configurations
</behaviors>
<bindings>
... here you define your binding configurations (parameters for bindings)
</bindings>
<services>
<service name="Service1">
... here you define the service endpoint which includes the ABC of WCF:
... (A)ddress, (B)inding, (C)ontract
</service>
<service name="Service2">
... here you define the service endpoint which includes the ABC of WCF:
... (A)ddress, (B)inding, (C)ontract
</service>
....
</services>
</system.serviceModel>
</configuration>
Службы и конечные точки служб могут ссылаться на конфигурации поведения, а также на конфигурации привязки, указав behaviorConfiguration =
и bindingConfiguration =
соответственно.
Вам обязательно стоит взглянуть на инструмент редактора конфигурации WCF , чтобы помочь вам в настройке служб WCF! Он должен быть доступен в меню «Инструменты» Visual Studio:
и выглядит примерно так: