2011-12-30 12 views
9

W jaki sposób aplikacja Windows 8 Metro powinna łączyć się z centralną bazą danych?W jaki sposób aplikacja Metro Windows 8 powinna łączyć się z centralną bazą danych?

  • Przeczytałem o pamięci lokalnej, ale nie czytałem nic o łączeniu się z centralną bazą danych.
  • Oczywiście ta decyzja dotycząca architektonicznego projektu musi obsługiwać rozłączony scenariusz.
  • Usługi WCF wydają się mieć sens.
    • Ale nawet jeśli mają sens, czy naprawdę powinniśmy stworzyć oddzielne metody dla wszystkich operacji odczytu/zapisu?
    • Czy są to usługi ODMA WCF?
  • Wygląda na to, że architektura oprogramowania dla tabletów powinna być w stanie pożyczyć wiele z architektury oprogramowania dla smartfonów (ale jestem nowy w obu przypadkach).
  • Czy firma Microsoft przedstawiła jakieś zalecenia w jej app samples?
+0

wszelkie zmiany wydarzyło od ciebie opublikowali twoje pytanie i odpowiedź? Czy mógłbyś zasugerować odniesienia do wszelkich znaczących zmian? Dzięki. – NoChance

Odpowiedz

13

Wygląda na to, że inni zadają podobne pytania na temat Microsoft Developer Forums.

Oto co znalazłem:

According to Tim Heuer:

... Nie można bezpośrednio mają db SQL osadzony w aplikacji lub korzystania coś podobnego ADO.NET. Jest to więcej infrastruktury async/services . Więc jeśli Twoje dane zostały ujawnione za pośrednictwem usług, to z kursu możesz połączyć się w ten sposób. Istnieje kilka innych lekkich metod, które można wykorzystać do przechowywania lokalnego, a także z wykorzystaniem przestrzeni nazw Windows.Storage o nazwie (która jest podobna do izolowanej pamięci w sieci Web .NET).

Morten Nielsen agrees:

Można użyć HttpClient ściągnąć prawie wszystko z sieci. Dlaczego nie skonfigurować usługi WCF do zwracania danych jako JSON, a użyć DataContractJsonSerializer do deserializacji wyników?

Również Tim Heuer cautions:

... Należy pamiętać, że niesamowite, projekt SQLWinRT na CodePlex jest wrapper do komunikowania się z klasycznym silnikiem ... SQLite, który wykorzystuje API, które obecnie nie przechodzą sprawdzania poprawności sklepu.


Generic Object Storage Helper for WinRT i WinRTFile Based Database wydaje się mieć jakąś obietnicę.

Ale Daniel Stolt raises some good points:

To niesamowite, że jest dobre wsparcie dla budowania klientów OData i innych klientów reszta - ale to tylko adresy scenariusz Internecie. "Ustrukturyzowana" część Windows.Storage to bardzo ograniczony model, w zasadzie ograniczony do par nazwa/wartość, niewystarczający dla wszystkich, oprócz najbardziej podstawowych scenariuszy. Tak, istnieje lokalny magazyn plików, który jest świetny oczywiście. Jednak wymuszenie każdego programisty aplikacji, aby zbudował swój własny lokalny magazyn plików, po prostu go nie przycina, zwłaszcza z usuniętymi wszystkimi danymi System.Data z profilu. Jeśli lokalny magazyn plików był wystarczający dla większości aplikacji na urządzenia, to takie rzeczy jak SQLCE nie miałyby już dzisiaj żadnego zastosowania. A SQLCE ma wyraźnie cel i od bardzo dawna odgrywał bardzo ważną rolę w aplikacjach podłączonych urządzeń od czasu do czasu ( ). Istnieje również ogromna potrzeba synchronizacji z bazami danych po stronie serwera, takimi jak SQL Azure, głównie w celu przesyłania danych między urządzeniami. Tak, istnieje model przechowywania danych w roamingu w WinRT, ale ma on te same ograniczenia co lokalna pamięć wymienna, a na dodatek jest bardzo ograniczony (pojemność 30 KB, jeśli pamięć jest obsługiwana). Jest to po prostu niewystarczające dla wszystkich, oprócz najprostszych potrzeb danych roamingowych. Ponownie, zmuszenie każdego programisty aplikacji do zaprojektowania i wdrożenia własnego rozwiązania synchronizacji jest bardzo złe. Możesz zrobić o wiele lepiej, aby umożliwić deweloperom .


Wiele osób są rozczarowani, że przestrzeń nazw System.Data nie jest obsługiwana w WinRT.

Richard Bethell said:

ja nawet nie mam słów na to. To zadziwiające.Zostawcie na boku dla w momencie, gdy chcą zmusić was do abstrakcji do oprogramowania pośredniczącego do połączenia z bazą danych - nie zgadzam się, ale mogę quasi zrozumieć racjonalne uzasadnienie . Mogę nawet zobaczyć ścieżki do takiego rozwoju.

Ale nie System.Data .... w ogóle? Czy zdajesz sobie sprawę, co zrobiłeś dla nas ?

System.Data Co może zrobić, poza tylko o dostawców dla SQL, OleDb i inni dostawcy niestandardowe, takie jak Oracle, jest zapewnić bogaty abstrakcję zbiorów danych XML, które pozwalają bardzo szybko zbudować danych zorientowaną Service Oriented Architektura.

Na przykład, mogę łatwo utworzyć usługę sieciową przy użyciu SOAP lub WCF, która zwraca DataSets lub DataTables, a następnie konsumować te obiekty z łatwością i bezpośrednio. Możliwość tego umożliwia bardzo szybką budowę architektur n-warstwowych , nawet bez dostępnych bezpośrednich połączeń danych.

Bez System.Data i potęgi DataViews, DataTables itp. Ten jest znacznie trudniejszy. Pewnie, że możesz tworzyć niestandardowe struktury, umieszczać tam dane w i udostępniać struktury, a także używać Linq do sortowania, filtrowania, itp., Które chcesz wykonać, ale kończy się to dwukrotnie niż praca . sprawia, że ​​ponowne użycie kodu jest o wiele trudniejsze. A to znaczy, używając nasz istniejąca architektura zorientowana na usługi jest niemożliwa (bez wielkiej remontu).

Wycofanie System.Data jest tak duża rzecz dla programistów do czynienia z jak utrata obiektu drukarki w VB6 do vb.net 1.0 było. Co jest trudniejsze do zrozumienia w tym przypadku, dlatego jest konieczne - ponowne włączenie go w profilu Metro nie może być techniczną trudnością produktu, nieprawdaż?

Jest na tyle cenne, że poważnie rozważyłbym tym klas System.Data Mono jako część każdej aplikacji tworzę (co oczywiście muszą być open source).

+1

Lol. Właśnie skończyłem czytać ten post na forum. – Arrow

3

myślę, że jest to kolejna z tych „to zależy” pytania ...

Pierwszym i najbardziej oczywistym problemem jest to, że bardzo wiele zależy od kontekstu, w którym aplikacja jest uruchomiona, czy , aby wziąć pierwszy przypadek "Oczywiście ... wsparcie ... odłączone" jest prawdą - jeśli aplikacja jest wewnętrzną aplikacją korporacyjną, to całkiem możliwe, że w tym przypadku nie db == nie działa.

Po drugie możesz wyglądać (hmm, wysypka ... zakładasz, że możesz wyglądać, to może być złe założenie) podczas synchronizacji bazy danych między lokalną bazą danych SQL a zdalnym systemem db i tak dalej.

Cofanie się o krok ... tak - masz absolutną rację, spójrz na to jak na telefon lub silverlight (chociaż nie wiem, czy jest jeszcze wsparcie dla RIA) - ale sprawa jest w ten punkt jest bardzo trudny do narzucenia, ponieważ biorąc pod uwagę platformę ogólnego przeznaczenia, można pisać aplikacje dostosowane do różnych celów.

Naprawdę niezbyt pomocna odpowiedź - ale początek.


Po przeczytaniu odpowiedzi @Jima G wydaje się, że prawdopodobnie powinienem wycofać moje?

+0

+1: Nie, proszę zachować odpowiedź. To było bardzo pomocne; zwłaszcza część o "nie zakładaj rozłączonego scenariusza". –

Powiązane problemy