Sterowanie aplikacją desktopową przez .net

0

Witam, chciałbym napisać program który byłby połączeniem dwóch innych. Jeden byłby napisany jako aplikacja webowa w .net, drugi byłby aplikacją desktopową. Za pomocą aplikacji desktopowej chciałbym sterować tą apką na pulpicie.
Sterowanie miałoby polegać na pobieraniu rekordów z bazy danych przez aplikację desktopową oraz na tworzeniu rekordów, przesyłaniu danych np liczb integer itp przez aplikacje .net.
Napisanie aplikacji nie pozostawia chyba pytań.
Zastanawiam się tylko jak najlepiej byłoby zrobić kwestię przesyłania informacji pomiędzy aplikacjami.
Wiadomo,potrzebny będzie SQL ale w jaki sposób będzie najlepiej to wszystko zorganizować.

0

Za pomocą aplikacji desktopowej chciałbym sterować tą apką na pulpicie.

Za pomocą webowej chcesz sterować desktopową, tak?

Generalnie nikt nie broni Ci "wystawiać komend" np. pod adresem url.com/commands

Które desktop będzie pobierał co X 1sec/5sec/10sec/itd. I realizował coś na ich podstawie :P

0

Generalnie to miało by tak wyglądać, że w aplikacji webowej byłoby sterowane do działania tej na pulpicie. Ta na pulpicie miałaby wyświetlać zadania do rozwiązania np z matematyki. Wyniki byłby sprawdzone w aplikacji i okienko zostanie zamknięte. Po zadanym czasie przez aplikacji .net znów się pojawi.
Tak to mialoby po krótce wyglądać.
Nie za bardzo wiem tylko jak zrobić tą komunikację.

1

Ogólnie do takiej dwustronnej komunikacji najlepiej użyć SignalR. Pośrednikiem między apką webową a desktopową będzie serwis synchronizujacy komunikację.

https://www.asp.net/signalr

0

Po co Ci w ogóle ta aplikacja desktopowa?

0

Chcę napisać aplikacje którą by potrafiła zablokować kompa podczas jego działania. Ma to być program edukacyjny. Taka sytuacja że dziecko siedzi sobie przy kompie i gra.Nagle wyskakuje okienko z żądaniem.do rozwiązania powiedzmy z matmy. Jeśli rozwiązanie będzie poprawne komputer się odblokuje i przez następne powiedzmy 30min będzie można go używać.
To tyle jeśli chodzi o pomysł.
Po co mi apka desktopowa? Po to żeby pojawiało się okienko z zadaniem.
Aplikacja webowa ma być czymś w rodzaju panelu administracyjnego gdzie będziemy podawać odstępy czasu pomiędzy kolejnymi zadaniami, wybór tematu zadań czy możliwość dodawania zadań.
Wszystkie te dane mogłyby być pobrane z bazy danych i przekazane do apki desktopowej.
Tak to widzę. Jeśli macie jakieś pomysły i sugestie to z chęcią poczytam.

1

Ja bym do tego podszedł tak:

  1. Zrobiłbym WebAPI .NetCore 2.x
  2. WebAPI łączy się bezpośrednio z bazą danych - aplikacja desktopowa łączy się oczywiście z WebApi.
  3. Do tego robisz jakąś appę po www - jako panel do zarządzania zadaniami - to też łączy się z WebAPI

Jeśli chodzi o apkę na desktopie, to musi działać w tle. Dziecko może być na tyle sprytne, żeby ją sobie zabić w procesach i teoretycznie po balu. Ale możesz też stworzyć jakiś proces, który nazwiesz coś w stylu "WindowsServiceGuard" albo jeszcze lepiej: "mswsg.exe" - dzieciak tego już nie ogarnie. Rolą procesu będzie uruchamianie aplikacji desktopowej, jeśli zostanie ona np. zabita. Ale tu mogą pojawić się problemy (od Windows 7 pamiętam, że było problematyczne uruchamianie aplikacji okienkowej z poziomu usługi - nie wiem jak jest teraz).

Więc jak już mamy zabezpieczoną aplikację desktopową, to łączy się ona z WebAPI i pobiera sobie jakieś ustawienia (np. co jaki czas pokazywać zadanie).
Gdy ten czas mija, apka pobiera sobie zadanie z WebAPI i odpala je. Potem może wynik wysłać do WebAPI. Dzięki temu będziesz miał wiedzę, ile było błędnych odpowiedzi.
Po poprawnej odpowiedzi, komp jest odblokowany.

Tylko ciężko będzie też zablokować komputer. Myślę, że dzieciak musiałby być na koncie z odpowiednimi uprawnieniami (np. nie mógłby zabijać procesów). Ale nie wiem, Trzeba by to było doszukać.

Generalnie pomysł mi się mocno podoba.

0

Dzięki za podpowiedź z tymi procesami. Generalnie to na początku chciałem zablokować możliwość wywołania managera zadań albo żeby jego uruchomienie możliwe było po podaniu danych logowanie. Niestety win 10 nie pozwala na takie zabawy lub po prostu jest to dla mnie za trudne.
Pomysł z procesami ma wyglądać tak że uruchomione są dwa procesy i jeśli jeden z nich (ten z programem desktopowym) zostanie wyłączony to ten drugi proces uruchomi to ponownie?

1

@Juhas:

Poszedłbym krok dalej.

Uruchamiałbym tych procesów do pilnowania kilka. np. tak, aby zawsze było ich z 5.
One raczej wykorzystują 0 zasobów, więc nie ma problemu, a dodatkowo nawet task manager by mu nic nie dał, bo zabicie drzewa procesów by ich nie zabiło.
Musiałby napisać jakiegoś skrypta czy lub zmienić nazwę execa.

Generalnie jeżeli User nie ma ograniczonych uprawnień, to będzie to ciężkie do zrobienia.

Łatwiej byłoby gdyby dzieciak miał tylko konto, na które jest dużo ograniczeń i tylko tam mógł grać.

0

A jeszcze jedno pytanie mam. Jak zrobić zeby podczas np. gry, okno programu potrafilo "wyjść na wierzch". Gra sie przerywa i minimalizuje czy cos takiego.

0

Fajny pomysl. Dobrze by bylo dac maly pop up np. 5 min przed zablokowaniem kompa z informacja, ze za 5min bedzie musial rozwiazac zadanie. Gdy bedzie gral online a apka bedzie mu blokowac kompa w waznych momentach gry moze to zadzialac bardzo demotywujaco. W przypadku wczesniejszej informacji moze sie przygotowac.

1

To tak tylko pomyślałem o tym, co napisał @qblacksheep Może traktować to raczej w formie "questów", a nie zadań. "Masz do rozwiązania zadanie" - to już samo w sobie może demotywować. Ale "Masz do zrobienia quest", to już brzmi inaczej :)

0

Jeśli aplikacja webowa nie miałaby koniecznie być na tym samym komputerze, co aplikacja desktopowa, to aplikacja desktopowa mogłaby wystawić webserwis z odpowiednim api. Jeśli na tym samym, to nie widzę za bardzo sensu aplikacji webowej, cały panel administracyjny można wbudować w aplikację desktopową (może mieć ona swój prosty serwer http albo korzystać z jakiegoś IIS express i serwować cały panel administracyjny),nie jest to aż tak trudne do zrobienia, a odpada ci potem konieczność konfigurowania aplikacji webowej, uruchomisz desktopową i masz już wszystko.

0

Juhas, niezły pomysł. Pomyślę nad tym ale na razie jak zwał tak zwał.
Kulson, Myślałem nad desktopem ale stwierdziłem że jeśli będzie to apka webowa będzie miała więcej możliwości na przyszłość. Będę mógł ewentualnie rozwinąć temat.
poza tym jestem po prostu ciekawy współpracy dwóch technologicznie różnych aplikacji.

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