Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-02-2012, 13:29   #1
TheMonzOne
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 2182
[C#] Da Windows Form a Windows Service

Ciao a tutti!
Come da titolo quello che vorrei fare è trasformare una Desktop Application o meglio una Windows Form in un Servizio di Windows, in modo che possa operare come tale e girare su un server.
L'Applicazione sotto forma di Form è già completata (o quasi), come faccio a trasformarla in un Servizio di Windows?
Attualmente uso un piccolo "trucchetto", ovvero tramite ServerAny faccio lanciare al servizio creato l'eseguibile della mia applicazione che quindi gira a tutti gli effetti come fosse un servizio.
Vorrei però fare a meno di ServerAny e creare di mio il servizio.

Una volta riuscito a fare quello, poi, dovrei trovare il modo di "monitorare" e gestire l'applicazione che, girando come servizio, non ha ovviamente GUI, quindi tutte le opzioni gestibili mediante la Form spariscono. C'è un modo semplice per farlo?
Per ora ho creato una semplicissima "Interfaccia" utente che tramite le socket non fa altro che mostrare i messaggi che arrivano sulla Form principale dentro una textarea. Qual è la struttura di controllo che mi permetterebbe di interagire con il servizio come se stessi usando la form nella sua forma Desktop?

Spero di aver espresso le mie necessità in modo chiaro, se dovesse servire posso postare anche piccole porzioni di codice per vedere come far interagire le varie strutture.

Grazie mille a tutti!
TheMonzOne è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 17:47   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Se hai strutturato a livelli la tua applicazione non dovresti avere particolari problemi
Dovresti staccare l'interfaccia dalla logica applicativa e accettare comandi tramite socket che sostituiscono il comando impartito da interfaccia.
I risultati poi potresti visualizzarli tramite la stessa interfaccia che hai implementato adesso.
Questo sempre tutto in teoria, se invece hai la logica strettamente legata all'interfaccia sei nei guai!
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 19:13   #3
TheMonzOne
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 2182
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Se hai strutturato a livelli la tua applicazione non dovresti avere particolari problemi
Dovresti staccare l'interfaccia dalla logica applicativa e accettare comandi tramite socket che sostituiscono il comando impartito da interfaccia.
I risultati poi potresti visualizzarli tramite la stessa interfaccia che hai implementato adesso.
Questo sempre tutto in teoria, se invece hai la logica strettamente legata all'interfaccia sei nei guai!
Temo di essere nei guai allora .
Grazie per la risposta innanzi tutto...tu come suggeriresti di procedere? Non sarebbe nemmeno troppo impensabile riscrivere anche l'applicazione...non dico da zero...ma quasi...alla fine la GUI è più che altro di "visualizzazione" e interrogazione...piuttosto non riesco a capire come potrei gestire variabili e strutture dall'esterno dell'applicazione.
Esplico: l'applicazione è una sorta di gateway di ricezione per la comunicazione con alcuni dispositivi remoti che si connettono via UDP e vengono registrati/interrogati/gestiti dal gateway...come faccio, ad esempio, ad estrapolare la lista dei dispositivi connessi ( nella fattispecie una ArrayList ) per pilotarli poi dall'eventuale interfaccia esterna?
Scusate se la cosa sembra banale, ma non ho molta esperienza a questi livelli...fin'ora ho fatto sempre e solo desktop application con una GUI standard....

Ultima modifica di TheMonzOne : 14-02-2012 alle 19:18. Motivo: precisazione
TheMonzOne è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2012, 23:39   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da TheMonzOne Guarda i messaggi
Temo di essere nei guai allora .
Lo supponevo

Quote:
Esplico: l'applicazione è una sorta di gateway di ricezione per la comunicazione con alcuni dispositivi remoti che si connettono via UDP e vengono registrati/interrogati/gestiti dal gateway...come faccio, ad esempio, ad estrapolare la lista dei dispositivi connessi ( nella fattispecie una ArrayList ) per pilotarli poi dall'eventuale interfaccia esterna?
Direi come fai adesso!
Supponiamo che il servizio faccia un autodiscovery dei dispositivi, avrà al suo interno una struttura dati che tiene traccia dello stato dei dispositivi es List<ConnectedDevice>.
Dovrai pensare ad un comando di GetConnectedDevices esposto dal servizio che l'interfaccia richiamerà per ottenere la lista e poi visualizzarla.
Se l'interfaccia dovesse interagire con i dispositivi potresti prevedere un comando SendCommand che il servizio interpreterà e girerà al dispositivo selezionato secondo il protocollo di comunicazione di quest'ultimo.

Se lo dovessi realizzare io userei Wcf con binding net.tcp integrandole nel servizio windows: http://msdn.microsoft.com/en-us/library/ff649818.aspx
Non hai bisogno di perdere il capo dietro socket e protocolli di comunicazione custom. E' facilmente espandibile ed estremamente potente.
Se mai dovesse essere il caso con le Wcf potresti pure esporre il tuo servizio (magari pure con protocollo soap) all'interno della rete e consentire una interrogazione remota, il tutto aggiungendo delle configurazioni e senza aggiungere una riga di codice.

La chiamata da parte della tua GUI risulterebbe estremamente banale, una semplice service reference e sei pronto ad interrogare il tuo servizio!
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2012, 08:07   #5
TheMonzOne
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 2182
La fai facile tu , mai vista quella roba...fortuna che c'è una montagna di documentazione.
Ok, ci provo...ci risentiamo tra un paio d'anni .

Grazie per ora!
TheMonzOne è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2012, 09:58   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da TheMonzOne Guarda i messaggi
La fai facile tu , mai vista quella roba...fortuna che c'è una montagna di documentazione.
Ok, ci provo...ci risentiamo tra un paio d'anni .

Grazie per ora!
Tranquillo che fai prima ad imparare ad usare Wcf che non a cercare di far funzionare una coppia di socket e ad inventare un protocollo per lo scambio dati!
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2012, 10:24   #7
TheMonzOne
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 2182
C'è già il primo intoppo : seguendo passo passo la procedura su msdn, arrivato al punto 6, installo il servizio e tutto sembra andare a buon fine, ma quando vado ad avviarlo mi da un errore.
"Impossibile avviare il servizio Service1 su Computer Locale. Errore 5: accesso negato"

Lavoro su Windows 7 Ultimate 32bit, Account Amministratore

EDIT: risolto questo problema cambiando l'impostazione dell'account da "NetworkService" a "LocalSystem"...mi chiedo se vada bene lo stesso.
Ora cerco di capire come funzionano i metodi di passaggio....

Ultima modifica di TheMonzOne : 15-02-2012 alle 14:28.
TheMonzOne è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Weekend Amazon, le prime 5 offerte sono ...
Mini Compressore a 21,84€: gonfia le gom...
Gemini si aggiorna, ora può conne...
Da 32 a 65 pollici: ecco le TV più...
Xiaomi Redmi Note 17 a 269€: ecco perch&...
ASUS avverte i clienti: accesso non auto...
Già record di vendite su Amazon p...
Eni mette un tetto ai prezzi dei carbura...
BYD Seagull (Dolphin Surf), l'elettrica ...
Multa milionaria per un data center del ...
F-Droid 2.0 si aggiorna con una nuova gr...
Microsoft ridisegna Copilot: dalla chat ...
Volkswagen porterà 20 videogiochi...
Troppa IA storpia: OpenAI licenzia in tr...
Marathon, Bungie svela i contenuti dell'...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v