LINQ бенчмаркове в многослойна среда

Участвам в разработката на многослойно приложение, което използва LINQ2SQL, отделен от уеб сървъра с NET.TCP Binding на WCF.

Въпросите ми са:

  1. Какви мерки трябва да предприема, за да постигна най-доброто представяне?
  2. Тъй като обектите на обекти, върнати от LINQ, трябва да бъдат преобразувани в IEnumerable списък, за да бъдат сериализирани всеки път, има ли все пак тази зависимост да се премахне?

person sajidnizami    schedule 05.10.2008    source източник
comment
Честно казано, наистина не разбирам какво питате - може би трябва да преработите въпроса си?   -  person Sam    schedule 09.10.2008


Отговори (2)


1) Концентрирайте се върху правилно нормализиран дизайн на база данни. Бих казал, че когато сте принудени да правите компромиси в дизайна на вашия код спрямо дизайна на базата данни, ако производителността е вашата цел, направете компромиси в дизайна на вашия обект, вместо в дизайна на вашата база данни. Разберете, че няма да можете да направите подходящ дизайн на супертип/подтип база данни, който да работи с Linq към 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 към SQL е много бавен, освен ако не компилирате заявки. В противен случай вашето приложение ще бъде обвързано с процесора, тъй като по-голямата част от времето ще бъде изразходвано за конвертиране на Expression дървета в SQL.

Говорим за 10x увеличение на производителността, ако използвате компилирани заявки. Опитай :)

person bh213    schedule 10.12.2008