У меня есть вызов службы SOAP WCF, которая возвращает много данных. Больше, чем может выдержать вызывающее устройство Windows Mobile.
И все же я замечаю что-то странное. Когда я звоню, это выглядит так:
MyContract[] myContractArray = MyService.CallToGetLotsOfDataObjects();
Это не подводит. Но когда он перебирает myContractArray
и помещает их в классы на стороне клиента, то происходит сбой.
Сначала я просто сказал: «Ну, он не может справиться с двумя копиями данных, это слишком много». Но теперь мне интересно, действительно ли myContractArray
содержит данные после вышеуказанного вызова. Мне интересно, если это что-то вроде вызова Linq-To-SQL, когда он не загружается до тех пор, пока не понадобится.
Итак, вот мой вопрос: в какой момент ниже данные распределяются на клиенте?
// Create the service
var serviceLib = new MyServiceDataServiceLib();
// 1 -----------------+
// |
// V
MyContract[] myContractArray = serviceLib.WCFCallToGetLotsOfDataObjects();
List<MyClass> myClassList = new List<MyClass>()
// 3 -----------------+ +------------------ 2
// | |
// V v
foreach(MyContract myContractInstance in myContractArray )
{
MyClass myClassInstance = new MyClass();
myClassInstance.BigImage = myContractInstance.BigImage;
myClassInstance.MoreData = myContractInstance.MoreData;
myClassInstance.EvenMoreData = myContractInstance.EvenMoreData;
myClassList.Add(myClassInstance);
}
Это в:
- При совершении звонка на сервер
- Когда я начинаю повторять список (на мой взгляд, менее вероятно)
- Как мне нужен каждый экземпляр
Я думаю, это 1 или 3, но я не уверен, что это. Кто-нибудь знает?
(ПРИМЕЧАНИЕ. Я использую Visual Studio 2008 и .net 3.5. Моя клиентская часть - приложение для Windows Mobile)