Witam.
na wstępie zaznaczę, że jestem obecnie programistą Delphi, jednak powoli przechodzę na C#.
Mam teraz zadanie stworzenia aplikacji okienkowej w WPF.
Baza danych sql server będzie na serwerze chmurowym. (np oxycloud)
Zastanawiam się co będzie lepszym/szybszym rozwiązaniem wyciągania danych do clienta.
Przykładowo chcę otrzymać listę kontrahentów z bazy.
Czy lepiej zadać bezpośrednie zdalne zapytanie do sql server
Czy stworzyć przy bazie aplikację WCF, która to będzie odpytywać bazę, następnie odsyłać clientowi np listę obiektów
Proszę o rady bardziej doświadczonych kolegów ode mnie w tym temacie :)
szybszym (zarówno z punktu widzenia czasu pisania programu jak i szybkości działania) na pewno będzie bezpośrednie pytanie bazy - odpadnie pisanie jednej warstwy. Jednak bardziej eleganckim, bezpieczniejszym (dodatkowa warstwa walidująca żądania dostępu do danych oraz same dane) i przyszłościowym (będziesz miał gotowe API do którego będzie mogło się podłączyć cokolwiek, np. strona albo aplikacja mobilna) będzie dodatkowa warstwa pomiędzy aplikacją i bazą. Jednak, wg mnie, podejmowanie się tego bez jakiejkolwiek wiedzy może być strzałem w kolano bo bardzo łatwo może się to stać wąskim gardłem w aplikacji.
Jak masz bazę nie po lan to należy jak najbardziej ograniczyć komunikację z nią. Najlepiej byłoby postawić jakieś api i nie komunikować się z baza bezpośrednio a z api.
@abrakadaber:
Dzięki za odpowiedź.
Wiedzy w wcf za dużej nie mam. (chociaż stworzyłem taki mały serwer wcf.... który działał ;)
Na obecną chwilę nie przewiduję by łączyło się z api coś innego.(ale w przyszłości to może ulec zmianie).
Teraz najbardziej zależy mi na szybkości zwrotu danych, więc chyba faktycznie wybiorę 1 opcję sugerując się Twoją wypowiedzią.
Zrobię po prostu jak najwięcej procedur składowanych, by wszelkie możliwe operacje działy się na serwerze
To zależy od tego, czy to ma być poważna, duża, aplikacja komercyjna, rozwijana latami, czy raczej coś małego, szybkiego do napisania, w stylu poc, do przepisania jeśli projekt odniesie sukces.
bardziej w kierunku pierwszego, żadnego wystawiania bazy na zewnątrz, jak najmniej logiki w bazie danych, procedury składowane w ostateczności
bardziej w kierunku drugiego, wszystkie chwyty dozwolone :)
WCF w 2020 roku jako zwykłe API do bazy po HTTP? Brzmi jak lekki masochizm.
@Svenson: jeśli potrzebujesz przesyłać dane po HTTP, to jednak łatwiej zrobić WebAPI niż WCF, mniej konfiguracji, łatwiej debugować, w razie czego łatwiej też udostępnić szerszej publiczności.
No tak jak wspomniałem baza będzie w chmurze i muszę się do niej dostać przez sieć globalną.
Stąd szukam najszybszego rozwiązania.
Dziękuję wszystkim za odpowiedzi. Może zrobię sobie też mały test wszystkich 3 rozwiązań