Я ненавижу использовать ссылки на службы по многим различным причинам, вместо этого я использую интерфейсы и System.ServiceModel.ChannelFactory
Я бы хотел использовать нечто подобное при подключении к службам данных WCF.
Я имею в виду, что при создании конечной точки DataService это просто DataService, почему я не могу создать DataServiceContext при создании клиента и получить доступ ко всем IQueryables в MyDataService.
например
Common
public interface IMyDataService
{
public IQueryable<Foo> Foos {get;set;}
public IQueryable<OtherFoo> OtherFoos {get;set;}
}
Сервер
public class MyDataService : IMyDataService
{
public IQueryable<Foo> Foos {get;set;}
public IQueryable<OtherFoo> OtherFoos {get;set;}
}
public class DataService : DataService<MyDataService>
{
}
Клиент
var context = new DataServiceContext<IMyDataService>();
var foo = context.Foos.First(f=>f.Id = 5);
var otherFoos = contact.OtherFoos.Where(of=>of.width > 6);
Редактировать: у меня есть решение, в котором я создаю прокси-класс IMyDataService, однако, насколько я понимаю, это будет довольно сложно для сервера. Кто-нибудь знает что-либо о влиянии на производительность создания прокси, используя метод, описанный здесь: