Действительно, первым шагом в оптимизации является избавление от DataTables и представление объектов модели. Как только это будет сделано, вы можете настроить конечную точку службы для использования netTcpBinding для оптимизированной двоичной передачи. Помните, что эта привязка не совместима с клиентами, отличными от .NET, поэтому вы можете также указать конечную точку basicHttpBinding
на случай, если вам это понадобится.
В конце дня должны быть только объекты модели, задействованные в предоставляемых сервисных методах (без DataTables и DataSets):
[ServiceContract]
public interface IMyServiceContract
{
[OperationContract]
SomeModel[] GetModels();
}
При этом я рекомендую вам выполнить нагрузочные тесты и доказать, что это узкое место для вашего приложения, прежде чем пытаться преждевременно оптимизировать его.