Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Aplikacja webowa, integracja z urządzeniami lokalnymi

JacekCz 13 Jul 2018 13:37 342 4
phoenixcontact
  • #1
    JacekCz
    Level 40  
    Zadaję koncepcyjne pytanie, ogólne.
    Znam konkretne "fabryczne" rozwiązania, pytanie wrzucam z nadzieją na "burzę mózgów".

    Jest sobie aplikacja webowa oparta na serwerze w dobrej technologii (Java/.NET), zawęźmy do kategorii "intranet", czyli pojawiają się możliwości otwierania firewalii, dodatkowych niestandardowych portów, wątków itd.
    Zarazem intranet ma możliwość narzucenia przeglądarki (w obrębie 2-3 powszechnych, egzotyczne nie) czy podobnych szczegółów.

    Na komputerach wyobraźmy sobie lokalne dedykowane urządzenia: dziwne czytniki, specjalizowane drukarki (w tym fiskalne - są takie rozwiązania), karty chipowe (skoro banki to robią, to są rozwiązania) załóżmy trudniejszy przypadek, czyli komunikacja dwustronna. W pełni jest możliwość zainstalować na kliencie "jakiś" autorski program.

    Lat temu kilka realizowało się to podpisanymi (mniej lub bardziej prawidłowo) appletami Javowskimi *), ale współczesne przeglądarki już to wyeliminowywały / eliminują. Jakie perspektywy są na rynku softwarowym w roku 2018?
    Coś mam doczytać w HTML 5 ? Głośno myślę ...

    Przypomnę kilka oczywistych założeń, np czynność na urządzeniu lokalnym musi być w powiązaniu z konkretnymi danymi z weba (sesją webową albo wskazanym obiektem), proste socketowanie z serwera na rezydentny program na komputerze klienckim nie spełnia tego założenia.
    Serwer nie posiada domeny Windows, ale mógłby w sumie mieć. Windowsy 7/10 Pro/Professional.

    Sam sobie udzielę częściowej odpowiedzi:
    Jeśli intranet wystawi URL
    Code: html
    Log in, to see the code

    I lokalnie na rozszerzenie alamakota jest skojarzony program, to zostanie wykonany, ale nie znalazłem żadnej możliwości przechwycenia argumentów
    Code: html
    Log in, to see the code


    *) tak miała rządówka, banki itd. Osobiście nie rozumiem hejtu na applety, choć przyjmuję do wiadomości, że w nieodpowiedzialnych rękach m mogły zachodzi zdarzenia nieprzewidywane
  • phoenixcontact
  • #2
    Dotnetvb
    Level 18  
    Hmm a coś takiego jak Web Service, wysyłanie soap? Nie wiem do końca czy masz na myśli napisanie klienta dedykowanego np na android, zintegrowanego w pełni z aplikacją web? Xamarin udostępnia kilka ciekawych rozwiązań dla takich zastosowań jeśli chodzi o Android, Windows mobile.
  • phoenixcontact
  • #3
    JacekCz
    Level 40  
    Protokół w gruncie rzeczy obojętny.

    Przykł 1. W Pokoju 2 przy komputerze C p.Kowalski pracuje przez przeglądarkę z aplikacją webową.
    Do komputera przypięte jest urządzenie. Np drukarka fiskalna.

    Przykł 2 W innym pokoju ten sam Kowalski jak się zaloguje, nie wykryte będzie urządzenie, albo może to USB które może być, może go nie być. i np przycisk szary

    Na kliknięcie w aplikacji (a przeglądarka jest odcięta od świata zewnętrznego, więc tego sama nie zrobi), dysponuje
    [ a) albo do programu lokalnego "zrób to" b) albo do serwera, a serwer po swojemu umie sie dogadać z w/w programem ]
    oczekiwana czynność na urządzeniu się wykonuje, a apliakcja jest powiadomiona o pozytywnym zakończeniu w czasie rzeczywistym

    Wyraźnie jest płaski trójkąt komunikowania się, na lewej stronie na czubek "serwer" ----->> na prawej dwa w jednym komputerze [ przeglądarka , urządzenie ]. W tym trójkącie trzeba się komunikować, nie precyzyje gdzie danych jest mało, gdzie dużo, ale wymiana jest. Wszystko to może być: SOAPY, JSONY, byle skomunikować (najtrudniej) te dwa elementy w jednym komputerze

    Dawniej podpisane aplety na to pozwalały, uruchamiały się ze strony, znały kontext, ale dzięki podpisaniu miały prawo wykonać akcje dalej niż w przeglądarce, w lokalnym komputerze.
  • #4
    Dotnetvb
    Level 18  
    Tutaj jest wyjaśnienie dotyczące komunikacji ale właśnie, z zewnętrznym protokolem web:
    https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/external-authentication-services
    Nie mniej trójkąt o którym wspominasz, jest także uwidoczniony, kwestia zamiany zewnętrznego web na np port komunikacyjny

    Edit
    Znalazłem w swoich zapiskach:
    https://github.com/node-serialport/node-serialport

    Raczej wprost z przeglądarki do warstwy systemu klienta ciężko się dostać. Można przez javascript postawić para serwer w przeglądarce uruchomionej U P. Kowalskiego, który skomunikuje się z portem. Inna opcja to activeX, lecz js z kontrolka działał tylko z internet Explorerem i podajze do którejś wersji (v8?), czy urządzenie do którego wysyłamy dane ma api/bibliotekę czy inny interfejs do komunikacji, czy wysyłamy pakiet na port i czekamy na odpowiedź z portu?
  • #5
    JacekCz
    Level 40  
    Istnieje rozwiązanie, podobne jak się domyślałem z "wytresowaniem" przeglądarki do specyficznego rozszerzenia pliku. To było moje przeczuwane, filozoficzno-naiwne.

    Należy spreparować URL nie na końcu, a na początku, jak
    Code: html
    Log in, to see the code


    i słowo tylkomniekliknij to tak zwany URI Schema, i tzreba zarejestrować swój program jako handler tej schemy.
    https://blogs.msdn.microsoft.com/noahc/2006/10/19/register-a-custom-url-protocol-handler/

    Antywirusy wyją do księżyca, to chyba jest uznawane za podobne do cross-site-scripting czy podobnego hackingu, trzeba opanować jako wyjątek.
    odnotowanie wyjątku w Intranecie nie jest wielkim problemem, choć chętnie bym znalazł sposób, sformułujmy go tak:

    Jak z instalatora (inno setup czy dowolny) przekonać lokalnego antywirusa "tak, wiem, ob będzie wykonywał dziwne kroki, ale to swój gość. Nie wal go pałą do kwarantanny, tylko daj pożyć"

    Zostało mi 1.opanować antywirusa, 2. kontrolować estetykę tego. 3. Skoczyć do funkcji już załadowanego programu (cała dok mnie prowadzi do uruchomienia nowej instancji programu-handlera)
    Tym niemniej URI Schema jest standardem na wszystkie przeglądarki. W nawiązaniu do dyskucji nie są potrzebne jakieś założenia czy ten mały program ma się kontaktować z serwerem. Nie musi, ale może, jak normalny program. Więc trzeci bok trójkąta nie jest obowiązkowy