Fórum Root.cz
Hlavní témata => Windows a jiné systémy => Téma založeno: popelar 09. 03. 2022, 10:27:40
-
Zdravim,
resim ted v ramci jednoho projektu zadani, ktere se tyka prace, se kterou nemam zkusenosti a proto bych se zda rad zeptal na Vase nazory, jaky pristup / architektura je vhodna.
## Zadani
Ve VM nam bezi Windows 10 s desktopovou 3rd party uzavrenou aplikaci. Tato aplikace slouzi pro sber dat z provozu. Neni podstatne jakych a jak. Podstatne je ale to, ze na danem W$ bezi SQL server, ktery aplikace vyuziva pro zapis dat. Port databaze je k dispozici spolecne s credentials. Je tedy mozne se k databazi pripojit a data z ni sosat. Coz je soucasti zadani => dostat data z teto uzavrene aplikace do nasich vlastnich systemu.
## Otazky
Jak vhodne resit sosani dat z takoveto databaze? Jde mi o to, zda by bylo lepsi naprogramovat aplikaci, ktera se nainstaluje jako servica na danem W$, bude mit (bud primo v sobe, nebo jako dalsi servicu) vlastni db a veskerou logiku pro odesilani dat, ktere by bylo reseno jako REST API (servica by tedy bela API client).
Nebo zda by bylo lepsi napr nasledujici. Jelikoz W$ bezi ve VM, muzeme si tam natahnout bud VPN tunel, nebo se pripojovat pres SSH. Aplikace pro sosani dat by nam tedy klidne mohla bezet jako kontejner v nasem prostredi a k databazi se pripojovat temito zpusoby.
## Poznamky
Nemam s programovanim services pro W$ zadne zkusenosti. V pripade prvni varianty bych tedy resil, zda delat jednu "velkou" svc, nebo jich udelat vice - pro vlastni db, konektor na SQL, API client a jak mezi nimi udelat komunikaci, atd..
V pripade pripojovani k SQL vzdale si zase nejsem jisty spolehlivosti takoveho reseni. Container i W$-VM jedou na stejne infrastrukture, takze sitova spolehlivost a rychlost by mela byt relativne ok.
Prosim o jakekoli postrehy a doporuceni. Pokud existuje lepsi treti reseni, sem s nim. Napadlo me take, zda by nesly nejak vyuzit komponenty z eko systemu Elastic nebo fluentD, ale nemam s nimi zkusenost. Nebo zda existuje jiz hotovy klient, ktereho bych na W$ nainstaloval a on uz by pozadavou funkcionalitu mel v sobe?
Reseni hledam ve stylu snadno a rychle - nechci stravit rok programovanim dokonaleho reseni. Neni pozadovana 100 % spolehlivost. V pripade vypadku at uz site, nebo modre smrti VM staci, kdyz se po obnove spojeni / restartu vsech komponent zpetne nactou vsechna nova data, ktera se mezi tim v SQL objevila, coz se snadno vyresi logikou v aplikaci pro cteni techto dat.
-
tak v C# to budes mit ve windows asi nejjednodussi, jak prgani sql clienta, tak delani service.
do architektury nebudu kecat, ze zacatku bych to udelal jako server/service co taha data z sql,
na druhem konci serveru muzes mit rozhrani jake chces :-) v C# jde taky napsat rest api clienta.
https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer
https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection?view=dotnet-plat-ext-6.0
https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client
-
A proč hned něco programovat?
Nástrojů na podobné věci je už spousta.
Osobně bych použil asi logstash https://github.com/elastic/logstash
klidně v kontajneru...