licencje na connector między c# i mysql dla celów komercyjnych

0

Witam,

jestem początkującym programistą i dostałem propozycję napisania aplikacji bazodanowej. Chciałbym, aby aplikacja była jak najtańsza z punktu widzenia licencji (najlepiej licencje z możliwością darmowego wykorzystania do zastosowań komercyjnych). Drugim takim wymaganiem byłoby, aby istniało w miarę dobre wsparcie ze strony programistów w internecie, tutoriale, przykłady, fora etc.

Pomyślałem o Visual C# 2010 Express, bo jest możliwe jego wykorzystanie za darmo do zastosowań komercyjnych oraz baza danych MySQL, zamiast MSSQL, z racji, że MySQL również jest darmowy do wykorzystania komercyjnie. Największy problem wydaje mi się, że jest z connectorem, łączącym aplikację z bazą danych.

Samo rozwiązanie C#.NET / Visual C# 2010 Express + MySQL jest wstępną decyzją, która może się zmienić, jeśli będę miał ku temu dobre powody. Rozwiązaniem zaproponowanym przez zleceniodawcę jest Microsoft Access.

Oto wstępne wyniki moich poszukiwań:
http://www.forumpc.pl/index.php?showtopic=143819 => jak z licencjonowaniem i pozyskaniem MySql.Data.dll?
http://www.codeproject.com/Articles/43438/Connect-C-to-MySQL
http://vsdatabaseguide.codeplex.com/

Ogólnie jest to kilka częściowo tylko zależnych od siebie rozwiązań, które można by zintegrować w jedną aplikację. Potrzebowałbym następujących funkcjonalności:
Excel => baza danych
interfejs użytkownika => baza danych
baza danych => Excel

Ewentualnie też możliwość komunikowania się z bazą danych zdalnie na serwerze, z którym do tej pory łączy się przez specjalnie do tego celu stworzoną aplikację przy pomocy VPN-a, przede wszystkim z możliwością odczytu, ale również przydatna byłaby możliwość zapisu. To by była dodatkowa funkcjonalność, bez niej program też ma duży sens, ale z tą możliwością byłby bardziej funkcjonalny. Niemniej to już kwestia trudniejsza (kwestie uzyskania zgody na dostęp do bazy danych i dokładnego zrozumienia relacji między tabelami) i tylko opcjonalna.

Aplikacja w wersji podstawowej do wykorzystania w sieci lokalnej LAN na trzech komputerach + serwer na bazę danych. Aplikacja pobierałaby dane z Excela (przynajmniej jednokrotny eksport, najlepiej możliwość zaimplementowania takiej funkcjonalności na stałe), umożliwiała użytkownikowi pracę na tych danych (już znajdujących się w bazie danych, za pośrednictwem GUI), a także eksportowanie danych (z bazy do Excela + opcjonalnie integracja z Outlookiem).

W wersji rozszerzonej odpytywanie bazy danych znajdującej się na zdalnym serwerze, opcjonalnie też zapisywanie do tej bazy. Dane z tej zdalnej bazy byłyby pobierane do bazy lokalnej jeden raz dziennie (na podstawie specjalnych kryteriów). Następnie przeprowadzane byłyby różne operacje na danych z lokalnej bazy (pozyskanej nie tylko z zewnętrznej bazy, na której bezpośrednio nie mógłbym pracować, aby jej nie spowalniać, ale i wielu innych źródeł, z których dane pobierane byłby do lokalnej bazy). Po przeprowadzeniu różnych operacji eksport do tej zewnętrznej bazy lub eksport do pliku csv, który następnie byłby wykorzystywany jako wejście do już istniejącej aplikacji korzystającej z tej zewnętrznej bazy. Ale to wszystko opcjonalnie.

Proszę o sugestie w tej kwestii, o której wspomniałem w pierwszym akapicie. Wiem, że podobne tematy były już poruszane, ale licencje i oprogramowanie zmieniają się dość szybko, a moje doświadczenie jest ograniczone. Ogólnie logika aplikacji byłaby dość złożona, ale to nie jest problemem, bo logikę mam w dużej mierze opracowaną. Przede wszystkim chciałbym, aby z punktu widzenia licencji było to rozwiązanie możliwie darmowe oraz żeby było z wsparciem w postaci tutoriali, przykładów kodu etc.

Pozdrawiam i z góry dzięki za sugestie!

2

może nie do końca na temat, ale MS SQL też jest darmowy w wersji Express do zastosowań komercyjnych

0

Dzięki za odpowiedzi!

Wygląda na to, że w takim razie lepszym rozwiązaniem byłoby C#+MSSQL zamiast C#+MySQL. (Nie wiedziałem, że MSSQL też jest darmowy do zastosowań komercyjnych). Tylko na jaką technologię powinienem się zdecydować (podejrzewam, że trochę mieszam pojęcia): LINQ, ConnectionString, ADO.NET? (Odnośnie bazy to na tej [http://www.microsoft.com/sqlserver/en/us/editions/express.aspx] stronie znalazłem info, że jest już nawet wersja 2012, czego się nie spodziewałem).

Przede wszystkim zależy mi, aby było to wszystko za free do zastosowań komercyjnych (i bez zbyt restrykcyjnych ograniczeń w postaci np. bardzo małego rozmiaru dopuszczalnej bazy danych czy ilości połączeń bez płatnej licencji komercyjnej) + żeby było sporo materiałów (np. jakaś jedna dobra książka wydawnictwa Helion, po której byłbym w stanie komunikować się przy pomocy GUI w C#.NET z bazą MSSQL + ewentualnie z zewnętrzną bazą przy pomocy VPN + koniecznie eksport z bazy do Excela + w miarę możliwości również import danych z Excela do bazy).

Na razie chciałbym się ogólnie rozeznać w technologiach, aby się na jakieś konkretne zdecydować i zacząć się ich uczyć, a nie chcę niepotrzebnie dojść po jakimś czasie do wniosku, że wybór od początku był zły i zmarnowałem sporo czasu.

Pozdrawiam!

2

Wypisałeś trzy pojęcia które się w żaden sposób nie wykluczają ;-)

Polecam zapoznać się z Entity Framework'iem :)

1

A ja polecam (fluent) NHibernate. Dojrzalszy od Entity Frameworka, przenośny, obsługuje więcej rdbms. Z początku może się wydawać trudniejszy do ogarnięcia, bo nie wyklikasz sobie modelu. Chociaż tak naprawdę najlepiej będzie poznać oba i samemu zdecydować co ci bardziej pasuje. Polecam zacząć od fluent nhibernate, co byś nie musiał hbmów klepać.

1

LINQ to SQL lepiej już nie brać, bo M$ go niestety nie rozwija - skupili się na Entity Frameworku. Ten ma wygodną obsługę z poziomu Visual Studio - można po prostu przeciągnąć tabele z bazy do designera i w ten sposób wygenerować odpowiadające im klasy.
W przypadku nHibernate klasy tworzy się ręcznie, a ponadto trzeba samodzielnie dopisać pliki mapujące klasy z tabelami, czyli wspomniane wyżej hbmy. Więcej roboty, ale też większe możliwości konfiguracji i rozbudowy. Można też użyć Fluent nHibernate, który tworzy tabele na podstawie klas i zbioru ustalonych zasad.

1

@somekind
Korzystałeś z Code-First oraz Entity Framework Power Tools w EF 4.3.1?

0

Dzięki za Wasze odpowiedzi!

Przyjrzałem się książkom na allegro i oto, co widzę: LINQ kilkadziesiąt pozycji, Entity Framework dwie książki, nHibernate brak informacji.
Z Twojego opisu, Somekind, wynika, że najlepiej by było się zabrać za Entity Framework - lepszy, niż LINQ i prostszy, niż nHibernate. Z drugiej zaś strony widzę (na podstawie ilości publikacji na ten temat), że wsparcie dla LINQ jest dużo większe, niż dla nHibernate. Czy na pewno lepiej nie brać tego LINQ i wziąć się za Entity Framework? Jeśli jest tak innowatorski, to dlaczego tak mało publikacji na ten temat znalazłem na allegro, coby mieć skąd czerpać wiedzę.

Pozdrawiam!

PS Patrzę też pod kątem licencji:
Microsoft SQL Server SqlClient
MySQL Devart dotConnect for MySQL
MySQL Connector/NET
Jeśli dobrze pamiętam to Connector/NET jest na licencji GNU i nie może być łączony bezpłatnie do komercyjnych aplikacji.

2

Nie Linq, a Linq to SQL. Linq to tylko mechanizm rozszerzeń polegający na delegatach i expression trees. Z Linq można jak najbardziej korzystać i w Entity Framework i NHibernate.

W żadnym wypadku natomiast nie wiązałbym ilości podręczników na Allegro z wyborem ORMa.

2

Z Linq można jak najbardziej korzystać i w Entity Framework i NHibernate.
i „bez niczego”, na zwykłych tablicach, klasach, strukturach (LINQ to Objects). Przy czym cały czas to jest to samo LINQ — i o to właśnie chodzi.

1

nHibernate możesz się łatwo nauczyć z tutoriali w internecie i dokumentacji na stronie autorów.

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