Przekazywanie dużych ilości danych przez wcf service

0

Witam,

Mam aplikację składającą się z dwóch części

  1. serwer
  2. klient (silverlight)

Na serwerze za pomocą LinqToEntity wyciągam dane (tektowe) z bazy MSSQL i za pomocną wcf service przekazuje te dane do klienta i wrzucam do datagrida. Problem pojawia się w momencie, gdy do datagrida ma trafić zbyt duża ilość danych. Aplikacja działa wówczas mało wydajnie, lub w ogóle ucina dane. Jakiej technologii najlepiej użyć, aby te dane przesyłać w sposób wydajny. Nie proszę o gotowy kod tylko o optymalną technologię, którą można wykorzystać w takich przypadkach. Z góry dziękuję za pomoc.

0

Tak naprawdę masz dwa problemy, raczej nie trzeba zmieniać technologi:

  1. Ucinanie danych na WCF'ie, tutaj można zaradzić konfiguracją WCF'a na domyślnych wartościach czasem jest "za mało".
  2. Przejrzyj twoje LINQ czy pobiera tylko niezbędne dane, czy typy danych to tylko tekst? (spotkałem się kiedyś z "rozwiązaniem" gdzie ikony były trzymane w bazie jako pola binarne, nie chodziło to za szybko),

Poza tym jeszcze zastanów się, czy to dane tylko do wyświetlenia czy coś jeszcze i/lub czy coś możesz pobierać nieco później, może nie wszystko jest od razu potrzebne?

PS. Jeśli nie próbowałeś jeszcze dzielić danych podczas wysyłki na pakiety po N encji to u mnie takie rozwiązanie nie zadziałało.

0
Piotrol napisał(a):

Problem pojawia się w momencie, gdy do datagrida ma trafić zbyt duża ilość danych. Aplikacja działa wówczas mało wydajnie, lub w ogóle ucina dane. Jakiej technologii najlepiej użyć, aby te dane przesyłać w sposób wydajny.

Czy Ty nie próbujesz czasem wczytać całej tabeli na raz do datagrida? Stosujesz jakąś paginację?

0

Nie chodzi mi o Paginacje, tylko raczej wysyłanie do grida wg potrzeby, porcjami danych. A jak to już będzie wyświetlane to nie jest ważne.
Czyli przykładowo jak jest milion rekordów do przesłania, a na pierwszy strzał w gridzie widać np. tylko 100 rekordów, to chce aby tylko te 100 pierwszych rekordów było przesłane.
Klikam suwak w gridzie w dół i automatycznie przesyłane są porcjami kolejne dane. Nie mam dużego doświadczenia z wcf service, ale podejrzewam, że to kwestia dobrej konfiguracji web.config'a.

BTW chodzi wyłącznie o dane tekstowe.

0
Piotrol napisał(a):

Klikam suwak w gridzie w dół i automatycznie przesyłane są porcjami kolejne dane.

To się nazywa virtual mode, i od paginacji w działaniu się za bardzo nie różni. To nadal Ty musisz wiedzieć, które dane chcesz pobrać, bo WCF sobie tego nie wywróży.

0

Virtual mode w Silverlight to chyba nie bardzo?

1 użytkowników online, w tym zalogowanych: 0, gości: 1