Тесты LINQ в многоуровневой среде

Я участвую в разработке многоуровневого приложения, которое использует LINQ2SQL, отделенное от веб-сервера с привязкой NET.TCP на WCF.

Мои вопросы:

  1. Какие меры следует предпринять для достижения наилучшей производительности?
  2. Поскольку объекты сущностей, возвращаемые LINQ, необходимо преобразовать в список IEnumerable для сериализации каждый раз, можно ли удалить эту зависимость?

person sajidnizami    schedule 05.10.2008    source источник
comment
Честно говоря, я не очень понимаю, о чем вы просите - может, вам стоит переработать свой вопрос?   -  person Sam    schedule 09.10.2008


Ответы (2)


1) Сконцентрируйтесь на правильно нормализованном дизайне базы данных. Я бы сказал, что когда вы вынуждены идти на компромисс между дизайном своего кода и дизайном базы данных, если вашей целью является производительность, идите на компромисс в дизайне вашего объекта, а не в дизайне вашей базы данных. Поймите, что вы не сможете правильно разработать базу данных супертипа/подтипа, которая будет работать с Linq to SQL (мне сказали, что вместо этого вам нужно использовать EF).

2) Зависит от того, что вы имеете в виду здесь. Если вы спрашиваете, как бы вы сериализовали анонимные классы по сети, простой ответ: «Вы не можете, поэтому не пытайтесь». Если вы хотите передавать списки объектов по сети, просто используйте метод расширения ToArray() в ваших коллекциях IEnumerable, чтобы отправлять массивы ваших бизнес-объектов по сети.

person Dave Markle    schedule 10.10.2008
comment
Я сравнил ToArray с ToList в небольшом тесте и обнаружил, что ToArray медленнее. Итак, в настоящее время я использую ToList, но, поскольку вы упомянули об этом, у меня возникают сомнения. Я перепроверю это. Я не использую никаких анонимных типов, и все в форме объекта LINQ или IEnumerable‹LINQENTITY›. - person sajidnizami; 15.10.2008

Linq to SQL работает очень медленно, если вы не компилируете запросы. В противном случае ваше приложение будет привязано к процессору, так как большая часть времени будет потрачена на преобразование деревьев выражений в SQL.

Мы говорим о 10-кратном приросте производительности, если вы используете скомпилированные запросы. Попробуй это :)

person bh213    schedule 10.12.2008