Xamarin C# połączenie się z bazą danych przy pomocy WiFi oraz sieci komórkowej

0

Witam,
Chciałbym połączyć się z bazą danych w sieci lokalnej przy pomocy WiFi oraz przez sieć komórkową. Aplikacja będzie zapisywać dane w bazie danych MSSQL na serwerze. Aplikacja napisana przy pomocy Xamarin, C#
Pomoże ktoś ?

0

A co już masz albo z czym konkretnie masz problem? Ogólnie polecałbym do tego wystawić jakiś serwis i komunikować się zwyczajnie restem a apka na serwerze niech się komunikuje z bazą bo inaczej będzie trudniej z tworzeniem userów, nadawaniu im odpowiednich uprawnień i kombinowanie z widokami, procedurami itp żeby user nie mógł zrobić za dużo na bazie

0

@obscurity: Napisałem sobie dla własnego użytku pierwszą apk na android. Teraz chciałbym, połączyć ją z bazą danych, żeby można było zapisywać dane w bazie.

Wystawić jakiś serwis ? Co dokładnie masz na myśli ? Komunikację przy pomocy skryptu PHP umieszczony w domenie ?

1

Wystawić jakiś serwis ? Co dokładnie masz na myśli ? Komunikację przy pomocy skryptu PHP umieszczony w domenie ?

Ja rozumiem, że chodzi o to, iż na serwerze z bazą danych jest aplikacja działająca w protokole HTTP, napisana na przykład właśnie w PHP, do której wymyślisz swoje API (zestaw żądań i odpowiedzi) i to ta aplikacja będzie komunikować się z bazą danych, wysyłać do niej zapytania. Natomiast Ty wymyślisz zestaw żądań i odpowiedzi, np. w formacie JSON, które będzie wysyłać i przyjmować Twoja apka na Androidzie. W takim przypadku w bazie danych wystarczy dwóch użytkowników, jeden z pełnymi uprawnieniami, drugi z prawami do odczytu i modyfikacji samych danych (ten drugi byłby wykorzystany w aplikacji PHP), a sam serwer bazy danych nie musi być widoczny od zewnątrz.

1

Ogólnie da się zrobić, aby aplikacja się bezpośrednio łączyła do bazy danych i sobie na niej operowała, ale najczęściej się to robi w taki sposób właśnie, że wystawia się serwis pośredniczący (API), może być i napisany w PHP, ale właśnie chodzi o to, aby serwer bazy danych nie był za bardzo dostępny z zewnątrz.

0

Ja wyłącznie na własne potrzeby, to w najprostszy sposób, wspomniana aplikacja serwerowa w PHP może być bardzo prosta, każde wywołanie przyjmuje zapytanie SQL i tak, jak ono jest wysyła do bazy i odsyła odpowiedź z bazy w formie XML, JSON, CSV, czy co tam sobie wymyślisz. W praktyce, z wymienionych już powodów powinno się wymyślić zestaw możliwych żądań i odpowiedzi.

1

Skoro piszesz aplikację w C# to serwis też bym napisał w C#, po co mieszać języki. Wtedy można sobie skorzystać z tej samej biblioteki z kontraktami w .NET Standard w obu aplikacjach do obiektów DTO żeby się nie powtarzać.

Jeśli to aplikacja na własny użytek to możesz się łączyć bezpośrednio, nie wiem szczerze jak z bezpieczeństwem hasła wysyłanego w ten sposób i czy nie trzeba uważać na podsłuchiwanie w otwartych sieciach wifi. Ryzyko ataku raczej zerowe i pewnie nie trzymasz tam nic aż tak ważnego.

Łączysz się chyba w ten sam sposób co ze zwykłej aplikacji desktopowej. System.Data.SqlClient

https://stackoverflow.com/questions/6286181/c-sharp-and-sql-server-connection

Możesz też chyba normalnie używać Entity framework czy co tam chcesz (nie wiem, nigdy nie używałem xamarin a gdybym używał to pewnie nie łączyłbym się bezpośrednio z bazą z aplikacji mobilnej).
Oczywiście serwer i firewall musisz skonfigurować tak żeby przyjmował logowania spoza sieci.

1

Kiedyś się nie dawało używać Entity Framework w Xamarinie, ale teraz to nie wiem, pewnie się da.

Niemniej, może cię zainteresować, że Azure Mobile Apps da się też zrobić w wersji standalone, bez wymagania Azure (aczkolwiek na razie to jest beta) -- tu jest dokumentacja budowy serwera https://github.com/Azure/azure-mobile-apps/blob/main/docs/howto/server/aspnetcore.md, a tutaj budowy klienta: https://github.com/Azure/azure-mobile-apps/blob/main/docs/howto/client/dotnet.md. Jak sobie kiedyś z tym się bawiłem (w Unity) to ładnie "opakowuje" bazę danych w API z komunikacją po JSON/OData.

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