Data ultimo aggiornamento: 17/05/2018

Clicca per accedere al sito di NTS Informatica
Clicca per accedere all'argomentoClicca per accedere all'argomentoClicca per accedere all'argomentoClicca per accedere all'argomento
Clicca per accedere al sito di NTS Informatica

SBS

Avvio del programma SBS (Smart Business Server)


Smart Business Server è disponibile a 32 Bit (SBS.exe) e a 64 Bit (SBS64.exe) è la parte server dello Smart Business Framework.

E' il setup che si occupa di installare tali eseguibili in fase di installazione di una qualsiasi postazione di Business, sia essa un client che un server, quindi viene sempre installato, nella cartella di installazione di Business.

Il componente server SBS può essere istanziato (quindi può accettare altrettante connessioni dal client SBC) 15 volte per la versione a 32bit e 50 per la versione a 64bit. All'avvio si attiva un socket in attesa sulla porta impostata e si lancia SBS (Smart Business Server) dalla cartella di Business.



Per poter essere utilizzato, deve essere stato attivato nelle Inizializzazioni Comuni Globali

L'SBS accetta tutta una serie di parametri di riga di comando dove solo il primo è posizionale e permette di indicare la porta di ascolto (di default la 85).

Gli altri parametri non posizionali sono:

  • /NOSTART si può disabilitare la partenza in automatico del servizio (esempio: C:\programmi\bus\sbs64.exe 85 /NOSTART )
  • /LOGFULL viene attivato il log delle operazioni fra SBS e SBC
    Se viene attivato il log con il parametro precedente /LOGFULL è possibile agiungere il parametro /LOGDISK che, se impostato, salva il log su disco, allo scopo di test e diagnostica. Aggiungendo questo parametro è possibile far salvare il log su un file su disco ad ogni operazione anzichè lasciarlo residente in memoria, in questo caso se SBS dovesse chiudersi in modo inaspettato con il file in C:\Users\UTENTE_DI_WINDOWS\AppData\Local\Temp\sbs_nomeporta.txt sarà più facile rintracciare il problema

    NB: SBS tenta di salvare in caso di errore anche dei messaggi informativi nel Visualizzatore Eventi di Windows.
  • /NOLOG non viene effettuata alcuna operazione di log (ovviamente /NOLOG esclude il parametro /LOGFULL e viceversa)
  • /CON_LOST_TIMEOUT minuti di time out di inattività prima che SBS chiuda un collegamento con SBC, di default vale 480 (8 ore)
  • /NETWORK= X (dove X e' una delle reti disponibili, mostrate all'avvio di SBS) per utilizzare una rete diversa dalla prima disponibile
    Esempio di rete con più reti disponibili, selezionabili con il parametro sopra indicato:

SBS per funzionare deve essere configurato per poter accedere in ingresso e uscita a tutte le reti. Su S.O. Windows non di tipo server dovrebbe apparire automaticamente la finestra in questione. Nel caso in cui non appare, lavorare direttamente nella configurazione del firewall, sia esso di Windows, di terze parti, software o hardware.
Un esempio di richiesta di autorizzazione standard di Windows in versione NON Server:

Verificare inoltre che la porta impostata non sia occupata da altri servizi di Windows.
In caso di anomalia, provare a cambiare porta
A questo indirizzo un elenco di porte comunemente occupate da altri servizi: QUI

Collegamento fra SBS e SBC

La connessione, se stabilita, rimarrà aperta fino a quando il client non avviserà di eseguire la disconnessione, o fino a quando il server non verrà chiuso/messo in stop. Se il client va in crash, oppure si chiude il client senza aver fatto la disconnessione, lato server, la sessione rimane aperta. Dopo che un client si è "loggato", può accedere ad una sessione precedentemente lasciata aperta con il comando 'connetti a sessione'. Possono essere riprese solo sessioni dove ci si era loggati con lo stesso user della sessione corrente e a parità di device.

Da tablet non è possibile avviare la stessa App più volte, per cui all'avvio viene verificato se era presente una sessione orfana e, nel caso, si collega direttamente.

Tutto è sincrono: parte sempre la richiesta dal child lato client. Il child lato server, se deve visualizzare una msgbox, ritorna allo stream di visualizzare il messaggio ed aspetta la risposta, il child lato remoto visualizzerà il messaggio e quando risponderà il child lato server continuerà l'operatività.

Per diminuire il traffico di rete, quando viene creato lo stream che descrive la form lato client vengono mappati solo gli eventi che lato server sono stati effettivamente collegati. Oltre a questi eventi, alcuni vengono sempre settati. Ad esempio per il textbox è mappato sempre l'evento lato client LEAVE, diversamente dopo aver modificato il testo lato client non ci sarebbe nessun evento che lo trasporterebbe lato server.

SBS lanciato in esecuzione automatica all'avvio del sistema (da operazioni pianificate)

Impostando Smart Business Framework, sbs, con le attività pianificate di Windows, dopo aver aperto un certo numero di sessioni di SBC (anche solo al menu, senza child aperti) viene scatenato l'errore 9 – impossibile creare l'handle: Sstem.Exception: 9 Busnet--> ProcessMessageSystem.ComponentModel.Win32Exception Errore durante la creazione dell'Handle della finestra. in System.Windows.Forms.NatveWindow.CreateHandleCreateParam.cp)

In Windows c'è una opzione di registro che permette di configurare come la sessione di Windows deve essere avviata quando un utente accede o fa partire una operazione schedulata senza bisogno che l'utente sia connesso. Il programma in analisi è c:\windows\system32\csrss.exe (ne viene fatto partire uno per ogni utente / sessione che si apre su Windows) ed i parametri di avvio sono configurati dall'opzione di registro di windows "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems", chiave "Windows"
I parametri che ci interessano sono i 3 numeri dopo SharedSection=, ovvero 1024, 20480, 768 e sono espressi in kilobytes (Default is 1024,20480,512 in 32bit or 1024,20480,768 in x64).

Il primo (1024) non interessa.
Il secondo (20480) è la dimensione della HEAP dedicata per ogni desktop avviato in modalità INTERATTIVA (normale utilizzo di windows da un utente davanti al PC).

Il terzo (768) è la dimensione della HEAP dedicata per ogni desktop avviato in modalità NON INTERATTIVA (operazioni pianificate con avvio senza bisogno che l'utente sia connesso e, credo servizi). Se questo numero manca il sistema usa lo stesso valore impostato per il secondo numero.

AUMENTANDO IL TERZO PARAMETRO (da 768 a 8192, ad esempio) IL PROBLEMA DELL'ERRORE 9 SI CORREGGE.

Visto che con SBS, per default, si possono collegare al massimo 50 client, il valore corretto da impostare per poter lavorare in sicurezza è: 8192 (ma può essere anche superiore, per server con tanti SBC client collegati).

La stringa di default per windows 8 è: %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

Per windows 2008 r2 è: %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

Per Windows 10: %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

Riportiamo un esempio di avvio da operazioni pianificate:

Creiamo una nuova attività, che parta senza dover fare login, specificando l'utente che farà partire il processo (solitamente un utente Administrator).

Specifichiamo quando deve avviarsi.



Specifichiamo il programma da eseguire e gli eventuali parametri aggiuntivi.

Nelle Condizioni, togliamo le spunte sull'alimentazione.
Confermiamo infine le impostazioni, inserendo la password dell'utente, quando richiesto.

Stampe e Crystal Report

Per modalità "server" si intende la fruizione di Business Cube, in modalità Terminal Server/Citrix, Web Application oppure Smart Business Framework, ovvero quando il motore di stampa SAP Crystal Reports 2011 viene mandato in esecuzione su un server e il risultato (la reportistica) viene utilizzata/consumata su una macchina client.

  • In Business Cube a 64bit è obbligatorio utilizzare CR2011, in Cube a 32 per default si utilizza CR2008, a scelta si può utilizzare CR2011 (abilitando opzione di registro globale \Opzioni\UsaCRPENet, o \Opzioni\UsaCRPENet_<nomepc>, a -1 e installando la runtime – file CRRuntime_32bit_13_0_7.msi nella cartella \CRYSTALREPORTS del dvd-rom di Business)
  • Per la fruizione di Business Cube nella modalità "server" (*) è richiesto l'acquisto di una licenza di SAP Crystal Reports 2011 (l'editor dei report) per ogni installazione, in seguito a variazioni delle condizioni di fornitura da parte di SAP
  • La presenza della licenza di SAP Crystal Reports 2011 è valutata attraverso un nuovo modulo di controllo denominato "Crystal Reports 64bit server". In questa situazione (modalità "server"), qualora non sia abilitato tale modulo, non verranno avviati i servizi di stampa in Business Cube.

Un riepilogo nello schema qui sotto:

SBC ed impostazioni internazionali

SBC ignora le impostazioni internazionali del sistema operativo su cui gira ed applica sempre quelle del sistema operativo su cui gira SBS, oppure, se impostati, utilizza i parametri di configurazione dell'utente di Business. Ad esempio, se l'utente di Business non ha nessuna lingua impostata in gestione operatori, SBS passa a SBC le impostazioni del pannello di controllo di windows (normalmente "it-IT"). Se invece l'utente di Business ha una lingua impostata in gestione operatori (per esempio inglese "en-GB"), come all'avvio di Business vengono ignorate le impostazioni del pannello di controllo di windows, anche con SBC vengono applicare le regole "en-GB".

Nota: consigliamo pertanto di impostare la lingua italiana nelle impostazioni del paese, per evitare che client e server non comunichino correttamente.


SBS server WEB

SBS può fare anche da piccolo server WEB, per pagine html o download di file (anche molto grossi), la webdir è la sottodirectory denominata 'Web' contenuta nella dir di sbs.exe. Per esempio:

Quanto appoggiato in questa cartella è raggiungibile direttamente attraverso il browser, indicando nell'indirizzo del server l'indirizzo di SBS, seguito da /nomedellarisorsadaraggiungere

Allo stesso modo, scaricando l'archivio SBCWEB.ZIP, e scompattandolo in questa cartella, sarà possibile gestire internamente anche un eventuale server SBC WEB, richiamando nel browser l'indrizzo del server SBS, seguito da sbc.html:
Esempio: http://172.20.2.13:85/sbc.html
Nella sezione SBC WEB ulteriori informazioni in merito a questa soluzione.

SBS statistiche e comandi da WEB

Ogni 30 minuti, SBS crea o aggiorna un file contenente alcune statistiche su SBS (connessioni attive, utenti connessi a quella data/ora, utenti che nella giornata si sono connessi e quanto traffico reta hanno generato, richiste di connessioni ecc.). questi dati vengono scritti in file .XML nella directory C:\Users\utente_avvio_sbs\AppData\Local\NTS\SBS_numero_porta_di_asconto\Log NB: visto che l'analisi degli utenti avviene ogni minuto, dalle statistiche si perdono le richieste che si aprono e si chiudono entro il minuto. Vengono comunque memorizzate le richieste di connessione (sostanzialmente si perde l'informazione del traffico dati generate da queste connessioni lampo. Dalle statistiche, al momento, non è possibile desumere il traffico generato dalle richieste http al server WEB interno a SBS Sbs amministrazione da remoto: se da un browser si accede all'indirizzo di SBS:porta/sbsadmin.html, (es http://172.20.2.13:85/sbsadmin.html) viene scaricata la pagina sbsadmin.html, da cui è possibile effettuare delle operazioni di controllo/manutenzione del server SBS (gli stessi comandi disponibili dalla consolle di SBS). La pagina sbsadmin.html non è personalizzabile.
Per accedere alla pagina è richiesta una password, default nts, ma personalizzabile. Basta creare nella dir di sbs.exe un file 'sbs_adm.txt' con all'interno la password dell'amministratore.

SBS Log

Il programma serve a consultare e monitorare l'attività su SBS. Menu V-N
Permette di visualizzare in modo organizzato gli accessi a SBS ed ai programmi in Business.
Monitor del tempo di connessione e del tempo dei programmi, il tempo connessione può essere più basso, perché tiene conto anche di disconnessioni e riconnessioni, mentre il tempo programmi non tiene conto delle disconnessioni. Questo perché da un client potrei essermi loggato solo per pochi minuti per lanciare sul server una elaborazione MRP.
Nel caso in cui, in una giornata, ci si connetta o si avviino gli stessi programmi più volte nella griglia verranno visualizzati più record.
In apertura programma viene aperta al griglia con l'analisi del log dall'ultimo mese fino ad oggi. Tramite 'Apri' è possibile affinare la ricerca.
Tramite 'Cancella' è possibile eseguire la cancellazione dei dati mostrati.

SBS e sicurezza della connessione

Per garantire una maggiore sicurezza della comunicazione fra SBS e i vari client (SBC e BusinessUP), da Aprile 2018 (Business Net 2015 UE9, Business Cube1 SR3, Business Cube2 RTM2) tutti i collegamenti fra SBS e i client vengono obbligatoriamente effettuati attivando un protocollo di protezione dei dati (dati crittati), non disattivabile dall'utente.

In caso di problematiche nel collegamento fra SBS e SBC, consigliamo di utilizzare in entrambi i casi l'ultima versione disponibile delle applicazioni.

Note aggiuntive

SBS.exe; attualmente può essere contattato solo da client con lunghezza del codice articolo di default, a 18 caratteri e lunghezza serie protocollo di 1 carattere (vedi Precisazione), tutte le sessioni che si collegano al quel SBS, devono avere la stessa impostazione; quando SBS parte istanzia BN__STD che sarà comune a tutte le sessioni di busnet che verranno avviate e le impostazioni suddette sono definitiva SHARED in CLN__STD, per cui in caso di diversi settaggi verrebbe sempre memorizzata ed utilizzata l'ultima impostata.
Se ci sono aziende Aziende/Ditte che vogliono gestire articoli con codice con un numero di caratteri maggiore e/o Serie documenti/protocolli di 2/3 caratteri, deve essere lanciata un'altra sessione di SBS.

E' possibile far apparire il logo del rivenditore, basta che sia presente in BNIMAGES un file con nome 'sbs_logoriv.png' di dimensione 200x80.

Limiti attuali della soluzione

  • Stampa su word: se eseguita quando SBS è stato fatto eseguire all'accensione del PC dalle operazioni pianificate (quindi senza che l'utente si sia loggato) è possibile che la stampa su word tramite l'utilizzo di WinWord non funzioni e venga generato un errore di COM EXCEPTION: è lo stesso problema di chi cerca di utilizzare word da IIS (e che aveva anche busweb): per la pericolosità di word, microsoft ha inserito tutta una serie di controlli/blocchi che rendono praticamente inutilizzabile word se non si è loggati. L'unica soluzione è utilizzare motori alternativi, come ad esempio libreoffice. Vedere la FAQ 162567 in merito ad altre soluzioni.
  • Problemi di memoria. La memoria massima utilizzabile su sistemi a 32 bit è 2GB, per cui le possibilità sono: impostare il numero massimo di connessioni per ogni SBS a 20, 30, 50 in base a quanta memoria normalmente viene allocata da un utilizzatore, oppure modificare pesantemente SBS per accettare connessioni sulla porta 85 e successivamente non lanciare un nuovo thread ma un nuovo process dicendogli di stare in ascolto su una specifica porta (es 86, 87, eccc) e comunicare la nuova porta all'SBC che ha chiesto di connettersi (che si riconnetterà sulla nuova porta dove c'è in RUN un nuovo SBS aperto in modo univoco su quella porta. In pratica in un SBS per ogni client SBC.
  • Solo SBC windows: SBC.EXE sulla stessa macchina dove gira SBS.EXE: sbs.exe interagisce con l'utente in modo nascosto, per cui è possibile/normale che faccia perdere il focus ai programmi che girano sullo stesso pc con lo stesso utente loggato. Per risolvere questo problema basta che sullo stesso pc SBS.EXE venga fatto eseguire da un utente diverso da quello con cui si lavora abitualmente (tipo terminal server) o far partire SBS.EXE da operazioni pianificate all'avvio del pc, con un utente diverso da quello che si userà per l'attività giornaliera in windows.
  • Altri limiti sono indicati in dettaglio nella CT-1705-0237 Confronto tra CUBE e SBC.

Importanti requisiti di memoria video sul server

La macchina dove gira SBS deve avere almeno 128 MB di RAM video, sembra inutile, ma SBS usa quella ram per disegnare a video i controlli da passare poi a SBC. Se non c'è abbastanza ram video (test fatti con server virtuali con 4MB ram), fino a 10 SBC concorrenti il server può funzionare correttamente, poi c'è un decadimento delle performance esponenziale, tanto che con 50 SBC concorrenti l'ambiente è MOLTO LENTO (ritardi negli eventi di form, anche di 30/45 secondi), anche se, a livello di CPU e RAM e disponibilità di banda di rete, il server sembra non stia facendo nulla. Un server con 50 SBC concorrenti deve essere almeno una macchina virtuale con 128MB ram video, 4CPU, 8CG ram.

Clicca per accedere al sito di NTS Informatica