Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-04-2008, 11:32   #1
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
[ASP.NET 2.0] Mi serve un consiglio...

Salve a tutti.
Sto cercando di imparare un po di ASP.NET 2.0 e non so bene come muovermi in fatto di comunicazione con il DB.
Qual'è il modo migliore per gestire connessioni ed accesso ai dati ?
Attualmente ho una solution che contiene un progetto con le pagine, una DLL con i command di select, insert, update e delete, e un web service che punta alla DLL e con i metodi restituise alla pagina un eventuale dataset in caso di select o semplicemente un esito del command di update, insert o delete.

Non so se questo è il modo giusto di gestire l'applicazione, perchè ho incluso nella pagina del mio progetto una griglia (griglia con l'elenco dei clienti per fare un esempio) e volevo fare il paging. Ma non posso visto la riempio tramite il dataset restituito dal web services. Infatti dovrei usare l'oggetto SqlDataSource.
Quindi sono un po perplesso sulla strada che sto seguendo.

Mi sapete consigliare il metodo giusto ?
Grazie 1000
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black
Giobby è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 11:41   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
La strada e' quella consigliata per progetti ASP.net 2.0, di qualche hanno fa.
Non usare il SqlDataSource. Usa l'oggetto ObjectDataSource, e vi mapperai direttamente sopra le funzioni del WebService.
In questo modo la DLL potra' essere utilizzata sia per le esigenze del client, sia per le esigenze del server.
Un unico punto di accesso per entrambi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 12:04   #3
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
Mhhh. Scusa la mia profonda lacuna...
Ho trascinato nella pagina con la griglia clienti l'oggetto.
Se metto la spunta su show only data component non vedo nulla nel combo.
Quindi l'ho lasciato senza spunta ed ho puntato all'ASMX del web service che contiene i metodi per il fill della griglia.

Così intendevi ?
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black

Ultima modifica di Giobby : 22-04-2008 alle 12:13.
Giobby è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 12:15   #4
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
Funziona.

Ma quindi è giusta la struttura che ho fatto ?
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black
Giobby è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 12:57   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Direi di si'.
Il SQLDataSource non si puo' usare agevolmente in ambiente WEB, perche' nella sua implementazione di base richiede una connectionstring. In pratica si lavora a 2 livelli, tra WebBrowser del Client e il DBServer.
A parte che e' un'archiettura bruttina, la maggior parte delle volte addirittura il DBServer non e' giustamente accedibile dai client.
Utilizzando l'ObjectDataSource invece si vanno a chiamare direttamente le funzioni del WebService.

Ora, che funzioni subito senza dover fare nulla mi sembra strano. Almeno una schermata in cui ti chiede il nome della funzione di Select (del WebService), e se servono anche la Update, Delete, Insert, avrebbe dovuto comparire.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 13:05   #6
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
In effetti funziona bene solo la select e la delete.
Sto facendo un po di prove perchè prima all'evento dei link di Edit e Delete avevo dentro del mio codice. Quindi sto cercando di capire come gestire il tutto. Ti faccio sapere.
Grazie 1000 sei molto prezioso.
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black
Giobby è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 22:10   #7
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Direi di si'.
Il SQLDataSource non si puo' usare agevolmente in ambiente WEB, perche' nella sua implementazione di base richiede una connectionstring. In pratica si lavora a 2 livelli, tra WebBrowser del Client e il DBServer.
A parte che e' un'archiettura bruttina, la maggior parte delle volte addirittura il DBServer non e' giustamente accedibile dai client.
Utilizzando l'ObjectDataSource invece si vanno a chiamare direttamente le funzioni del WebService.

Ora, che funzioni subito senza dover fare nulla mi sembra strano. Almeno una schermata in cui ti chiede il nome della funzione di Select (del WebService), e se servono anche la Update, Delete, Insert, avrebbe dovuto comparire.
Non ho ben capito cosa vuoi dire esattamente: personalmente utilizzo SQLDataSource nelle pagine web senza alcun problema in quanto il controllo agisce lato server e quindi il client non ha nessuna interezione con il DB.Il tuo esempio non è riferito forse ad una pagine web ma ad un web service inteso come pubblicazione di un servizio?
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 22:18   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Si', esatto, l'ObjectDataSource generico puo' essere utilizzato congiuntamente ad un WebService, in modo da realizzare il dialogo 3 livelli classico.
Il SqlDataSource personalmente non l'ho mai usato, per questioni di generalizzazione. Dato che alla fine quello che si espone e' quasi sempre modellabile con il SQL standard, preferiamo non vincolarci ad un Database specifico.
Inoltre lo scrivere le proprie query a mano ha i suoi vantaggi.
Nella scrittura di un WebService proprio in questo periodo sto provando ad evitare la connessione al database classica dal webservice al database, e sto provando ad utilizzare LINQ.
Devo dire che sono decisamente soddisfatto.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2008, 23:23   #9
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Si', esatto, l'ObjectDataSource generico puo' essere utilizzato congiuntamente ad un WebService, in modo da realizzare il dialogo 3 livelli classico.
Il SqlDataSource personalmente non l'ho mai usato, per questioni di generalizzazione. Dato che alla fine quello che si espone e' quasi sempre modellabile con il SQL standard, preferiamo non vincolarci ad un Database specifico.
Inoltre lo scrivere le proprie query a mano ha i suoi vantaggi.
Nella scrittura di un WebService proprio in questo periodo sto provando ad evitare la connessione al database classica dal webservice al database, e sto provando ad utilizzare LINQ.
Devo dire che sono decisamente soddisfatto.
Nei pochi webservice che ho fatto in java ho sempre posto il servizio esposto come tramite tra client e DB, facendo lavorare il service sul DB.Se ho intuito invece fai interagire client e DB?
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 00:55   #10
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
No, penso sia la stessa cosa. Il client chiama il web-service, il quale legge i dati, li formatta in JSON e li rispedisce al client, in modo asincrono.
Il tutto e' stato incapsulato nella tecnologia AJAX.

ObjectDataSource e' un wrapper delle chiamate al Web-Service.
I WebDataSource sono degli oggetti che forniscono sempre la stessa interfaccia verso i controlli Web ASP.net, creati per poter slegare appunto i controlli dalla implementazione dal servizio che fornisce i dati.

Con un SqlDataSource se non ricordo male non e' necessario costruire un WebService, il tutto e' pronto all'uso, interfacciandosi ad un SqlServer.
ObjectDataSource invece e' il wrapper per un WebService Generico, che deve pero' implementare almeno alcuni metodi standard per potervi chiacchierare insieme.

In pratica e' la stessa cosa che chiamare direttamente un WebService da qualche funzione Javascript della pagina client, ma e' tutto incapsulato e controllato in fase di compilazione (e testabile senza fare salti mortali)
LINQ ha esteso il controllo in fase di compilazione anche verso il Database. Dove prima invece c'erano solo stringhe di comandi tipo "SELECT qualcosa FROM tabella..." ora ci potranno essere vere e proprie istruzioni C#.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 01:11   #11
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Direi di si'.
Il SQLDataSource non si puo' usare agevolmente in ambiente WEB, perche' nella sua implementazione di base richiede una connectionstring. In pratica si lavora a 2 livelli, tra WebBrowser del Client e il DBServer.
A parte che e' un'archiettura bruttina, la maggior parte delle volte addirittura il DBServer non e' giustamente accedibile dai client.
Utilizzando l'ObjectDataSource invece si vanno a chiamare direttamente le funzioni del WebService.
era questo che mi aveva fatto pensare al fatto che bypassassi il livello controllo in qualche modo, perchè parli di 2 livelli tra sqldatasource e DB ma il controllo,almeno per come l' ho sempre utilizzato io lato server ed è giusto che il DB sia nascosto al client.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 09:07   #12
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
Non ci sto capendo nulla.
Ma allora com'è meglio agire?
Brevemente...
Devo fare un gestionale con DB SQL2005.
Attualmente ho una dll per i command al DB. La connection string la prendo tramite un'altra dll che legge da file ini i settaggi del DB.
La Dll dei command viene referenziata in un WebService che a sua volta viene referenziato nel progetto con le pagine web.

Nella mia pagina web devo popolare una griglia ed ho usato l'objectdatasource che punta ai metodi del webService.
A sto punto mi chiedo...ma è realmente questo l'iter standard da seguire per un progetto web tipo il mio ?
Se uso l'SQLdatasource questi 3 livelli non ci sono più, perchè faccio tutto nella pagina. Mhhh!
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black

Ultima modifica di Giobby : 23-04-2008 alle 09:10.
Giobby è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 09:17   #13
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Secondo me si'.
Seguendo il tuo approccio potrai anche sviluppare un componente WinForm, una vera applicazione, condividendo lo stesso WebService.
Ma il WebService l'hai scritto tu?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 09:32   #14
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
Si l'ho scritto io. Perchè? Non mi sembra una cosa tanto strana. Alla fine è solo una subroutine con scritto webmethod in testa.
Per i WinForm non uso i WebService.

Ma dimmi un'altra cosa.
Con VS2005 faccio un po fatica a raccapezzarmi con i WebService. Mi spiego meglio.
Nel mio progetto ho fatto le WebReference ai WebService.
Sia il WebService che il progetto con le pagine web nelle properti di default usano il visual studio development server, ovvero gli viene assegnata una porta che può essere statica o dinamica.
Usare il default è comodo perchè non devo creare virtual directory. Ma quando riavvio il PC le WebReference devo rifarle perchè la porta cambia.
Mettendo la porta statica sono costretto (prima di lanciare il progetto delle pagine) a lanciare in debug il WebService per aprire la porta.
Allora ieri cosa ho fatto (visto che sto metodo non mi piace)...ho creato le virtual directory ed ho impostato le proprietà su IIS Server, in modo da usare http://localhost/mioprogetto/etc.
Ok, le Web reference le fa tranquillamente, ma quando lancio la pagina che dovrebbe leggere il Web Method del Web Service mi da accesso negato.
Perchè?
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black
Giobby è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 09:53   #15
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Giobby Guarda i messaggi
Si l'ho scritto io. Perchè? Non mi sembra una cosa tanto strana. Alla fine è solo una subroutine con scritto webmethod in testa.
Per i WinForm non uso i WebService.
Perfetto. Se per caso il tuo progetto avesse anche una parte winform che accede al database come un'utility di amministrazione o una vera e propria versione "programma" del sito, allora ti consigliavo di usare anche qui lo stesso webservice, per accentrare la logica di connessione e condividere le query (e la sicurezza)
Anche eventuali serivizi Windows li farei passare attraverso lo stesso WebService. Azioni tipiche da servizio sono magari "La pulizia deigli utenti vecchi", oppure "inseriemnto periodico di dati letti da un altro database", etc.

Quote:
Ma dimmi un'altra cosa.
Con VS2005 faccio un po fatica a raccapezzarmi con i WebService. Mi spiego meglio.
Nel mio progetto ho fatto le WebReference ai WebService.
Sia il WebService che il progetto con le pagine web nelle properti di default usano il visual studio development server, ovvero gli viene assegnata una porta che può essere statica o dinamica.
Usare il default è comodo perchè non devo creare virtual directory. Ma quando riavvio il PC le WebReference devo rifarle perchè la porta cambia.
Mettendo la porta statica sono costretto (prima di lanciare il progetto delle pagine) a lanciare in debug il WebService per aprire la porta.
Puo' capitare, ma non dovrebbe capitare cosi' spesso. Quando capitasse sarebbe sufficiente aggiornare la WebReference nei progetti consumatori, nel tuo caso il WebSite. (Destro -> Update Web Reference)
Per quanto riguarda il debug, e' sufficiente lanciare l'esecuzione in modalita' multiprogetto, e scegliere di far partire contemporaneamente il WebSite e il WebServer. In questo modo dovresti risolvere i tuoi problemi (Destro sulla soluzione -> StartUpProject -> MultipleStartup)

Quote:
Allora ieri cosa ho fatto (visto che sto metodo non mi piace)...ho creato le virtual directory ed ho impostato le proprietà su IIS Server, in modo da usare http://localhost/mioprogetto/etc.
Ok, le Web reference le fa tranquillamente, ma quando lancio la pagina che dovrebbe leggere il Web Method del Web Service mi da accesso negato.
Perchè?
Strano, penso sia un settaggio di IIS. Anche perche' e' il metodo normale di pubblicazione. Se non funziona non funzionera'.
Prova anche a giocare con il web.config del progetto WebService. Se non c'e' aggiungilo, e cerca in giro i parametri giusti.
Uno critico dovrebbe essere "Enable Remote Debug", che dovrebbe servirti per poter debuggare usando l'istanza remota (stai passando attraverso IIS, quindi e' considerata remota anche se su localhost)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 23-04-2008 alle 09:56.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2008, 10:08   #16
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
Grazie, del multiple startup non lo sapevo (quante differenze con il 2002).
Per i WebService invece ho riscontrato che non è una regola.
Ho 3 WebServices attualmente.
Uno per un treeview del masterpage con le pagine richiamabili, uno per il ciclo attivo (clienti etc.) e uno per ciclo passivo (fornitori etc.).
Sono questi ultimi 2 che non vanno.
Ma i WebConfig ci sono in tutti e 3 però in nessuno di questi c'è la voce che hai detto. Che non sia un settaggio di IIS per questi ultimi 2 WebServices ?

Se lancio il WebService per i fatti suoi funziona. Boh!
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black

Ultima modifica di Giobby : 23-04-2008 alle 10:16.
Giobby è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2008, 10:21   #17
Giobby
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 700
UP
__________________
PC: Motherboard: MSI Z690 EDGE WIFI DDR4; Processore: Intel 12600K; RAM: 32GB (16 x 2) Kingston Fury Renegare; Scheda Video: RTX 3080 FE; PSU: Corsair RM850; Case: Lian-Li O11 Dynamic Evo Black
Giobby è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
SpaceX: Elon Musk torna a parlare dei pr...
G.Skill risarcisce 2,4 milioni di dollar...
Test degli annunci su ChatGPT avviati: '...
TSMC approva investimenti record da quas...
L'IA agentica arriva anche sullo storage...
Euro digitale, il Parlamento UE cambia r...
Alphabet e la sua obbligazione centenari...
L'UE anticipa un intervento per bloccare...
Il Trump Phone esiste ma è molto ...
Frodi deepfake fuori controllo: perch&ea...
Consumano il 30% in meno: arrivano i nuo...
Tesla Semi svela i numeri definitivi: 80...
La Air Force statunitense vieta occhiali...
Wi-Fi Intel e Windows: le novità ...
Dongfeng sbarca 'a casa loro': il nuovo ...
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: 20:46.


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