Pytania dotyczące baz danych, MDI, obiektowości, itp.

0

Witam ponownie bardzo serdecznie,

Otóż mam do Was teraz nieco złożone pytanie, a w zasadzie kilka pytań, które w sumie złożą się na całe sedno tego posta. Otóż na wstępie powiem, że piszę dla firmy w której realizuję praktykę - pracę inżynierską. W dużym skrócie na czym ma polegać moja aplikacja: Firma ta ma 2 sklepy internetowe postawione na bazie MySQL, moja aplikacja pobiera nowe zamówienia z tych sklepów i przesyła je do systemu zarządzania sprzedażą - Subiekta. Oczywiście tam w Subiekcie tworzą się zamówienia od klienta, faktury i wiele wiele innych rzeczy. Następnie zamówienie które wybierze handlowiec, używając mojej aplikacji jest przesyłane bezpośrednio do API firmy kurierskiej DPD. Ot cała funkcjonalność aplikacji w wielkim skrócie.

Żebyście nie myśleli że piszę bo nic nie mam, nie nie. Otóż funkcjonalność w bardzo dużej mierze została przeze mnie wykonana. Jakby nie było robię to już ponad miesiąc. A mianowicie:

  • połączenie z bazą i pobranie zamówień
  • przetworzenie zamówienia ze sklepu do Subiekta (tworzenie faktur, zamówień, dodawanie towarów, kontrahentów i wiele innych jest już zrealizowane)
  • Jeśli chodzi o nadanie zlecenia dla firmy kurierskiej to do tej pory testowałem system SenditAPI, aczkolwiek szef powiedział, że będą chcieli łączyć się bezpośrednio z DPD więc będę musiał jeszcze tym się pobawić, ale w głównej mierze wiem jak to działa

I teraz tak, funkcjonalność ta jest i działa aczkolwiek było to robione wszystko w ramach testowania, bez żadnych wstępnych GUI czy innych przygotowań. Po prostu klepałem kod i robiłem co chciałem zrobić (starałem się oczywiście wszystko obiektowo, aby mieć łatwiej przy dodawaniu kolejnych funkcjonalności). Mam takie pytanie do Was:

  1. W jaki sposób najlepiej jest zrobić połączenia z dwoma bazami? Czy muszę zrobić tak, że najpierw łączę się z jedną bazą, pobieram zamówienia, kończę połączenie. Potem łączę się z drugą bazą, pobieram zamówienia i zamykam połączenie? Czy istnieje jakaś inna możliwość, aby to zrobić lepiej, optymalniej? No bo w sumie do tej pory nie miałem jeszcze okazji łączyć się z dwoma bazami i wyciągać z nich informacje. Jakby nie było, potem gdy uzytkownik aplikacji będzie wybierał zamówienie, żeby je dalej przekazać do Subiekta to kodowo będę musiał zidentyfikować te zamówienie że należy akurat do tej bazy a nie do tej drugiej. I wtedy znów odpowiednio w zależności której bazy dotyczy zamówienie otwierać itd. Proszę o porady z tym związane :)
  2. Do tej pory pisałem aplikację w formie SDI. Szef powiedział że aplikacja finalna ma być w MDI. Jeśli chodzi o interfejs graficzny to dostanę go dopiero za około 2 tygodnie. Więc do tego czasu chciałbym sam sobie przejść i poćwiczyć nieco MDI (żeby nie było że nie znam, bo znam, tylko mało używałem). Bardzo by mi się przydały wszelkie porady związane z tworzeniem aplikacji MDI, na co zwracać uwagę itd. Wiadomo, rzecz najważniejsza to jest aby wszystko było jak najlepiej obiektowo zrealizowane.

To może tyle na wstępie jak dyskusja się rozwinie, a mi przyjdą kolejne pytania to będę pisał :)

1

Ad 1. Czy masz jakiś konkretny problem, coś nie działa albo nie jest wydajne? Skoro są dwie bazy, to z dwiema trzeba łączyć się oddzielnie, no chyba że chcesz po prostu przenosić dane z jednej bazy do innej, wówczas można zrobić wszystko bez użycia aplikacji. Którego ORM używasz?

Ad 2. Nie znam się na MDI jako takim, ale na pewno musisz pamiętać o odseparowaniu logiki biznesowej od logiki prezentacji, a nie upychaniu całego kodu w metodach obsługujących zdarzenia. Tu z pomocą może Ci przyjść wzorzec MVP.

0

Dzięki za odpowiedź.

A więc tak, jeśli chodzi o bazy danych... W sumie żadnego problemu nie mam, jak testowałem to działało. Robiłem właśnie tak, że pierw otwierałem jedno połączenie, odpowiednie zapytanie i zamykałem. I to samo z drugim połączeniem. Szczerze ORM nie używam, po prostu tworzę odpowiednie zapytania SQL i za pomocą obiektu DataReader i metody ExecuteReader pobieram interesujące mnie wartości i przypisuję do zmiennych i później z nich korzystam...

Jeśli chodzi o MDI - dzięki na pewno się z tym zapoznam

1

Nie używając ORM sam się prosisz o katastrofę później i tracenie czasu na analizę i poprawianie/zmienianie zapytań.

Co do MDI jakoś ciężko mi sobie wyobrazić z twojego opisu dlaczego i po co ta aplikacja miała by działać w trybie MDI. W Windows Forms funkcjonalność MDI idzie osiągnąć za pomocą właściowości MdiParent na obiekcie formy. Do WPF są jakieś dodatkowe biblioteki.

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