yes, it is quite possible. actually they are NOT the same services. they are different services running on different machines, having the same interface and data types (service contract+data contract). service, as the name implies, a process listening for other processes (local or remote, changes according to configuration) to do something. therefore, if the configuration (service config, firewall config, etc) allows, you can connect them to get a service without any limitation in the context. two different service instances may provide the same data (if you request is to get some data), or not. it depends on your design. for example, they may share the same data source (database), therefore you get the same data for the same service method call. if their underlying data sources are different, you get different data from those instances even if you call the same service method, naturally.
Machine1.AServiceClient _clientMachine1 = new Machine1.AServiceClient();
Machine2.AServiceClient _clientMachine2 = new Machine2.AServiceClient();
Machine1.Data _data1 = _clientMachine1.GetData();
Machine2.Data _data2 = _clientMachine2.GetData();
In this example, _data1 and _data2 may have the same data, but their types are different. the first one is under Machine1 namespace, and the other is under Machine2 namespace.
It doesn't have to be in this way. you can use the same client code with different connection configuration:
AServiceClient _clientMachine1 = new AServiceClient(config1);
AServiceClient _clientMachine2 = new AServiceClient(config2);
Data _data1 = _clientMachine1.GetData();
Data _data2 = _clientMachine2.GetData();
In this case, _data1 and _data2 have the same type but they are still different instances since they are different :)
actually, the client part of your question doesn't make much sense. because service is something and service-client is another thing. you can even create multiple service clients for the same service in the same code. such as:
AServiceClient _aclient1 = new AServiceClient();
AServiceClient _aclient2 = new AServiceClient();
_aclient1.DoSomething();
_aclient2.DoSomething();
I think my solution doesn't make much sense. because, every example goes to 'everything is possible' :)