NDepend не свободен для использования неакадемического или программного обеспечения с открытым исходным кодом, но это является потрясающим, и даст Вам те метрики (и многие другие, с помощью его встроенного Языка запросов Кода).
Этим вопросом является более или менее простофиля этого: Вычисляют метрики кода , и Вы найдете всю серию хороших предложений там.
Да, конечно, но только если вы используете безопасность сообщений (а не безопасность транспорта). Определите свою конфигурацию привязки следующим образом:
<netTcpBinding>
<binding name="UserNameSecurity">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
, а затем укажите эту конфигурацию привязки в своих конечных точках (на сервере и клиенте):
<endpoint address="....."
binding="netTcpBinding"
bindingConfiguration="UserNameSecurity"
contract="IMyService" />
Marc
ОБНОВЛЕНИЕ:
Ах, да, на стороне сервера вам понадобится сертификат для аутентификации службы для вызывающего ее клиента, а также он используется для шифрования и подписи сообщений. Это только на сервере - клиентам не нужно ничего устанавливать.
Конфигурация:
<behaviors>
<serviceBehavior>
<behavior name="ServerInternet">
<serviceCredentials>
<serviceCertificate
findValue="MyServiceCertificate"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehavior>
</behaviors>
<services>
<service name="MyServiceInternet"
behaviorConfiguration="ServerInternet">
....
</service>
</services>
Убедитесь, что вы установили сертификат вашего сервера в папку «Локальный компьютер» на вашем сервере под «именем субъекта», которое вы указываете в своей конфигурации .
Сначала вы можете попробовать кое-что. Установите для serviceNegotiationCredentials значение true:
<message negotiateServiceCredential="true"/>
Это создаст безопасный диалог между вашим клиентом и вашей службой без контроллера домена.
НО, если нет контроллера домена, клиент не доверяет вашей службе, поэтому он
Таким образом, вы должны установить ожидаемый идентификатор службы . Вы можете найти это в WSDL вашей службы. По умолчанию, если вы размещены в IIS, это выглядит так:
<client>
<endpoint>
<identity>
<servicePrincipalName value="host/NETWORKSERVICE"></servicePrincipalName>
</identity>
</endpoint>
</client>
Я не думаю, что он вам понадобится, но, возможно, вам придется разрешить анонимный вход на стороне службы:
<serviceBehaviors>
<behavior>
<serviceCredentials>
<windowsAuthentication allowAnonymousLogons="true"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>