В принципе, правильно настроенная связка WCF клиент-сервер должна работать и в локальной сети и в интернете. Если, конечно, соответствующие порты не закрыты фаерволом. Когда WCF-сервер работает не на IIS, а в консольном приложении, в конфигурации нужно указать адрес, к которому будут обращаться клиенты:
<system.serviceModel>
<services>
<service name="FooService"
behaviorConfiguration="ServiceBehavior">
<endpoint address="АДРЕС_СЕРВИСА" binding="netTcpBinding"
contract="IFooService" />
<endpoint address="mex" binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Затем, при создании прокси на клиенте нужно использовать тот же адрес. Например, при использовании ChannelFactory
это может выглядеть так:
IFooService service =
ChannelFactory<IFooService>.CreateChannel(
new NetTcpBinding(),
new EndpointAddress(
"net.tcp://example.com/АДРЕС_СЕРВИСА"));
Или можно прописать то же в файле конфигурации клиента:
<system.serviceModel>
<client>
<endpoint
address="net.tcp://example.com/АДРЕС_СЕРВИСА"
binding="netTcpBinding" bindingConfiguration=""
contract="Services.IFooService"
name="FooSvc" />
</client>
</system.serviceModel>