Wysyłanie danych z MySql przez sieć

0

Witam! Stram się napisać aplikację kliencką, oraz serwer(uruchamiany na Debianie, na którym jest baza danych MySql). Chcę, aby ten serwer wysyłał mi pewne informacje z bazy, obsługiwał logowanie, dodawał nowych użytkowników etc. gdy zapyta go o to klient. Tylko jak przesłać obiekt, który zwraca MySqlCommand.ExecuteScalar() przez protokół TCP? A może moje rozumowanie jest złe i nie powinienem w ten sposób projektować aplikacji? Proszę o pomoc.

1

Połączenie zdalne z bazą ci nie wystarczy?

0

Ale jak połączę się z bazą w kliencie, nie obejdzie się bez używania hasła do bazy w programie?

1

Nie obejdzie się. Jeżeli nie chcesz łączyć się z bazą bezpośrednio, na maszynie z Debianem postaw webserwis. Webserwis będzie łączył się z bazą mysql lokalnie i udostępniał odpowiednie metody twojemu programowi. Jeśli masz maszynę z Linuksem to najlepszym wyborem na technologię, w której napiszesz webserwis będzie java.

0

Zrobię to w ten sposób: zostanę przy .NET (javę niby też znam, ale jak już robię w C# .NET i kilka elementów w ASP.NET to niech już tak zostanie), natomiast wszelkie operacje na bazie danych będę wykonywał na serwerze - w sumie nie jest ich tak dużo. Przez sieć będę natomiast przekazywał tylko potrzebne dane, w zwykłych tablicach bajtów (byte[]) i zamieniał je odpowiednio po obu stronach. Strasznie nie lubię obchodzić w ten sposób problemów, no ale cóż ;) Dzięki za pomoc, jeśli macie jeszcze jakieś sugestie to chętnie nad nimi pomyślę.

1

Przez sieć będę natomiast przekazywał tylko potrzebne dane, w zwykłych tablicach bajtów (byte[]) i zamieniał je odpowiednio po obu stronach.

Możesz i tak, ale po to wymyślono webserwisy żeby samemu od zera tego nie pisać.

0
othello napisał(a):

Jeśli masz maszynę z Linuksem to najlepszym wyborem na technologię, w której napiszesz webserwis będzie java.

To w końcu mam go napisać, czy są jakieś gotowe?

1

Webserwis: http://pl.wikipedia.org/wiki/Us%C5%82uga_internetowa

Krótko: zamist ręcznie tworzyć własny protokół, lepiej napisać webserwis. Po prostu są standardowe rozwiązania do tego, co chcesz zrobić i warto z nich korzystać zamiast wynajdować koło na nowo.

Możesz oczywiście sam wysyłać sobie dane jakie chcesz przez tcp i sam parsować odpowiedzi w kliencie ale po co, skoro w kliencie możesz połączyć się z webserwisem, wywołać metodę webserwisu (tak samo jak wywołujesz metodę z normalnej klasy) i odczytać co metoda zwróciła. Wywoływana metoda wykona się na serwerze i zrobi to co trzeba.

0

Ok, dzięki za wszystkie odpowiedzi. Poczytałem i pooglądałem o WCF (czemu sami hindusi o tym nagrywają?). Jest to świetne rozwiązanie, ale nie dla tak małych aplikacji jak moja. W tym przypadku posłużę się jeszcze starym StreamReader i StreamWriter. Jednak następnym razem, gdy będę projektował taką aplikację, postaram się użyć WCF.

0

Fakt że w tym przypadku być może byłaby to armata na muchę.

Jednak, ogólnie to tak sie to robi: masz defaultowo obsługę masy przydatnych (w realnych zastosowaniach) rzeczy, jak wywoływanie asynchroniczne, autoryzacja, szyfrowanie/ssl itd itp. Nikt przecież nie będzie się bawił w tworzenie od nowa protokołu komunikacji, skoro standard już jest.

W twoim przypadku dodatkowy minus, że musiałbyś sporo liznąć javy skoro na Linuksie serwer chcesz wystawić. Ale z doświadczenia wiem, że da się to ładnie zgrać (chociaż nie zawsze to takie idealnie proste), w końcu standard jest jeden.

0

Do zdalnego wywoływania metod użyj CORBA, albo RMI (tylko w Javie).

0

no tak, bo na mono nie da rady... :D do tego co On potrzebuje mono uciągnie :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.