Some steps you can go to analyse your problem:
1) Implement a simple test method in your WCF service, e.g.
public in TestMethod(int data)
{
return (data + 1);
}
and look how long it takes to call it from your client.
If it is fast enough, your next steps would be to see if, EF or your returning list is the problem.
So:
2) call the method, which returns the list/array but without using the EF.
So just create a list with some dummy data and return it. Try different amounts of items, e.g. 1, 2, 5, 10, 100,... Look how long it takes.
3)
Your point about opening/closing the DB connection in each function call:
I would probably open/initialize the DB context at the first call and then leave it open. I would register for the InstanceContext.Closed Event to close the db context. You could try to open the DB context in the InstanceContext.Opend event, too.
Lust but not least, I don't think, that the network is the problem, when you are in your local network.
Hope it helps
Andy