Konvertere "tung" software til browsere i tynd klient. Muligt?

Tags:    html5 silverlight java browser

Jeg står overfor en ret forholdsvis stor opgave, hvor jeg godt kunne bruge jeres indsigtfulde tanker til at blive kickstartet en smule.

Jeg er godt klar over at en opgave som denne kræver stor research, men det er nu stadig rart at have lidt input at forholde sig til i starten.

Her er opgaven:

Jeg arbejder i en virksomhed som har udviklet noget forholdsvist tungt software (her menes at der kræves en forholdsvis kraftigt maskine/server til at afvikle softwaren).
På nuværende tidspunkt kan man arbejde i denne software igennem en tyk klient, men det er ønsket at man i fremtiden skal kunne arbejde i software i en browser på en tynd klient. (eller evt. på en tablet - mobilitet er nøgleordet).

Det antages selvfølgelig at nogle af de krævende funktionaliteter skæres væk når der skal arbejdes gennem den tynde klient.

Selve softwaren er programmeret i JAVA.

Jeg har fået som opgave at kigge nærmere på hvad HTML5, Silverlight, JAVA etc. kan tilbyde, da det tænkes at der måske skal installeres et plug-in i browseren på de tynde klienter.

Men jeg er lidt på herrens mark på dette område.


Spørgsmål til jer:

[B]Kan de overhovedet lade sig gøre at "konvertere" et stykke hardwarekrævende software til at kunne kører i en browser?

Er det korrekt at jeg bør kigge på HTML5, Silverlight, Java etc.?

Har i nogle ideer til hvordan man griber sådan noget her an?[/B]

Skriv endeligt såfremt i har nogle ting jeg bør uddybe nærmere.


/Anders



9 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
1. det kan højst tænkeligt godt lade sig gøre.
det er jo bare et spørgsmål om at flytte de tunge benregeringer som der måtte være over serverside, så klienten kun stå for det grafiske og at kalde serveren.

2/3. vis jeg var dig ville jeg starte med at skrive ned, hvad skal det den her klient kunne gøre. i forhold til hvordan du vil have ting opføre sig, Fx. datagrids, Autocomplete, gem/update af data osv.
og når det er på plads så ville jeg tage og kigge på hvad for en teknologi ville gøre det "nemmest" for mig at implementere det hele i.



Jeg vil først og fremmest anbefale dig at begrænse afhængigheden af plugins så meget som muligt, hvis tablet-support er et must. I så bred udstrækning som muligt vil jeg anbefale Javascript, med eller uden HTML5, til frontend-delen. Store dele af jeres Java-kode vil, hvis det er skrevet modulært nok, kunne bruges på backenddelen istedet, der måske kører i en lejet cloudservice. Det kan godt være, I finder ud af at Javascript/HTML5 bare ikke kan løfte byrden på nuværende tidspunkt, men så skal I være klar over, at I skærer nogle platforme væk, det måske ellers havde været oplagt at sælge til.

Det er nemlig ikke umuligt, omend svært, at flytte tunge beregninger til skyen. Hvis vi siger, at vi for eksempel gerne vil generere en meget avanceret mængde af grafer, og det skal gå lidt tjept, så er det måske smartest hvis klienten sender parametrene for grafen til skyen, der så sidder, evt. med Java servlets på backenden, og kværner nogle færdige grafer ud, der så sendes som flade billedfiler tilbage til klienten kort tid efter. Det bliver straks mere langhåret hvis det er tungere 3D-operationer, men også det, har visse spiludviklere eksperimenteret med.

Held og lykke med projektet.



Det er en meget interessant opgave du står med. Det første du skal gøre dig klart er om du har en overordnet strategi til den mobile del af software contra den ikke mobile del. Skal begge bestå sideløbende eller skal din "nye" version danne grundlag for næste generation af den ikke mobile del?

Jeg ville ud over mobilitet som arkitekturkrav fokusere på skalerbarhed og robusthed, det betyder at du måske skal til at tænke lidt i banerne af skalerbarhed. Dette for at kunne møde så mange krav som muligt i fremtiden.

Rent teknisk er jeg enig i frontend, det er lige gyldigt om backend er lavet i Java/.NET/C++ Det der er vigtigt er snitfladen mellem din funktionalitet og din grænseflade er på plads. Dette er typisk der hvor man falder i når man skal lægge en applikation om.

Hvis jeg var i dine sko, ville jeg kigge på den applikation jeg har nu, prøve at dele den op i logiske dele som kan varetage hver sin opgave. Dette vil alle være services af en eller anden slags. Det vil sige du skal fokusere på at lave en Service Orienteret Arkitektur (SOA). Lav nogle REST services (jersey til Java - så vidt jeg husker) som du fra enhver frontend kan interagere med, også fra din næste generation af din Java applikation. Alt efter hvor skalerbart det skal være, samt hvor komplekst du vil gør det kan du overveje en Message Queue - kig evt. på Apaches MQ.




Hvis det er beregningstunge opgaver, som jeres software løser. Så kan du evt. benytte dig af html5, silverlight, java, flash til at sende opgaven til jeres server. Hvor at serveren derefter løser opgaven og sender svaret tilbage til den tynde klient igen. Så for at svare på dit spørgsmål, ja det er muligt, og hvilken teknologi du benytter dig af til den tynde klient, er lige gyldigt, da det er en netværks protokol, du kommer til at benytte dig af.

For at kigge lidt videre på dette kan du kigge lidt på:

HTML5:
WebSockets
XHTTPRequest

Java/C#(Silverlight):
Sockets
HTTPRequest
URLconnection

Flash:
Har ikke noget erfaring inden for denne teknologi, men keywords burde være de samme.

Det ville muligvis, være en fordel at lave den tynde klient i html5, da den så ville kunne køre på flere platforme inklusiv tablets.



Fold kodeboks ind/udKode 

Hvor i området .. sådan helt præcist?

Hvad er karakteren af input/output på serveren?



Hey.
Selvfølgelig kan det lade sig gøre. Hvis jeres server er stærk nok til at lave beregningerne er det peace of cake.
Og endnu bedre er det at jeres program køre i java. For det betyder at du kan lave din hjemmeside i et java-baseret miljø såsom Grails eller Struct. Så kan du tage dit program, pakke det i en jar, og gemme det i dit Grail/struct/lignendes libary. Og så kan du tilgå alt din kode :-)

Så du behøber sandsynligvis ikke engang at skrive din java kode om igen.

Jeg har selv gjort noget lignende. Jeg arbejder for tiden med et IT-telefoni system. Her er vi i gang med at lave et web-baseret telefoni-client, som gør at du ringe op til andre, viderestille med mere direkte fra browseren. Det er lavet som et Struct projekt, som simpelthen bare kontakter et API lavet i Java. :)


Men btw. Du bør nok ikke kikke på silverlight. Brug java-baserede platforme. Og brug naturligvis HTML5 til at opbygge din side.



Indlæg senest redigeret d. 08.03.2012 11:55 af Bruger #5097
Der er mange brugbare svar her og jeg er meget taknemmelig.

Det som jeg kan hører på flere af jer, er at Java, Javascript og HTML5 formentlig er vejen at gå.


Bare så vi alle taler samme sprog/har samme opfattelse af hvad jeg ønsker, kommer jeg lige med et eksempel på en fiktiv situation.


Lad os forestille os at den software vi har til at kører på vores servere er Photoshop. Jeg står nu i lufthavnen og kunne godt tænke mig at tilgå en billedfil på min server og redigere lidt i den gennem Photoshop. Jeg ønsker at kunne åbne Photoshop gennem en browser på f.eks. min tablet. Jeg har nødvendigvis ikke brug for alle funtionerne i Photoshop, men evt. kun nogle simple værktøjer (Det er klart at nu flere funktionaliteter desto bedre). Jeg foretager redigeringen af billedfilen og lukker.

Det interface (UI) jeg ser gennem min browser, behøves nødvendigvis ikke være identisk med det som ses når jeg arbejder på den tykke klient i serverrummet hvor Photoshop er installeret. Men det ville selvfølgelig være optimalt hvis det var identisk.

Jeg håber alle har et bedre indblik i situationen nu. Nøgleordet for den løsning jeg søger er "mobilitet": at kunne tilgå og ændre i softwaren fra tynde klienter/tablets igennem en browser.

Er der nogen som kan komme nærmere på hvordan dette præcis skal udvikles?

På forhånd tak.
/Anders



Det som jeg kan hører på flere af jer, er at Java, Javascript og HTML5 formentlig er vejen at gå.


Det er jeg fuldstændig enig i. Java på serveren og JavaScript/HTML på klienten.
Alle browsere forstår JavaScript mens kun få (efterhånden) forstår Java og endnu færre (specielt i fremtiden) forstår Flash og Silverlight.

Så undgå for alt i verden pluginkrav til frontend.



Hej Anders,

Jeg har været længe nok i 'software' som amatør til at vide, at alt kan lade sig gøre. Jeg burde ikke svare her, fordi jeg ikke véd, hvor langt en mobil/tablet kan gå med ordinær html.
Jeg har skippet at tage mobil-opgaver alvorligt, fordi jeg ikke skønner at det er et passende medium at arbejde seriøst i.

Når det er sagt så prøv at kaste et blik på html5.canvas
http://www.w3schools.com/html5/html5_canvas.asp

Du skal måske ha' et ordentligt kig på javascript fordi det er mellem-leddet mellem klienten og serveren. .. altså, det mellemled /jeg/ kender.
//edit --- hvorfor siger jeg egentlig det? Du må jo allerede have fod på en kommunikations-protekol ---end edit//

Jeg er ikke et øjeblik i tvivl om, at jeg kan implemenere en fælles vektor-baseret grafik til næsten realtime drawing ... ligesom en irc gør i tekst.

//edit Jeg tænker stille, at det er hvad der kommer ud af det når bibliotekets hylder under pc-grafik er fyldt med bøger om photoshop .. og ikke en eneste om directX eller OpenGL eller andet. Anders, tilgi' mig for at tænke højt. edit//



Indlæg senest redigeret d. 08.03.2012 14:30 af Bruger #17086
t