Pakk inn applikasjonsprosjektet mitt for OutSystems Agile Platform

I denne ti-delte utviklerdagboken, kroniserer Justin James OutSystems Agile Platform for å skrive en ekte webapplikasjon kalt Rat Catcher. Denne serien vil også publiseres i OutSystems About Agility-bloggen .

-------------------------------------------------- -----------------------------------------------

Les de forrige installasjonene i serien: Komme i gang med OutSystems Agile Platform, Lære det grunnleggende i OutSystems Agile Platform, beskrive OutSystems Agile Platform Service Studio-opplevelse, Arbeide med OutSystems Agile Platforms Integration Studio, distribuere en applikasjon opprettet med OutSystems Agile Platform, Legge ECT til et eSpace med OutSystems Agile Platform, Arbeide med planlagte jobber i OutSystems Agile Platform, Bruke AJAX i OutSystems Agile Platform og sikre din OutSystems Agile Platform-applikasjon.

I del åtte av denne serien snakket jeg om hvordan jeg brukte AJAX gjennom Rat Catcher, men det innebar noen ettermontering fordi jeg ikke hadde planer om det. Da jeg var klar til å gjøre endringer i nettstedets utseende og behov, krevde det mye mer enn noen ettermontering. Jeg gjorde den største rookie-feilen da jeg startet utviklingen for dette prosjektet: Jeg la oppsettet mitt i et bord. Jeg vet bedre. Jeg har brukt CSS for oppsett siden rundt 2000 og tabellfrie oppsett i omtrent fire år nå. Ti års kunnskap og erfaring kastet ut vinduet for å få gjort noe raskt. I det minste hadde jeg god mening å legge inn påloggingskode, topptekst og bunntekst alle sammen i sine egne webblokker.

Min første oppgave var å flytte til et bordfritt oppsett. Først satte jeg en Container-widget på topptekst-, bunntekst- og påloggingsblokkene mine, og flyttet alle eksisterende elementer i den beholderen. Så redigerte jeg stilen til eSpace og opprettet klasser for hver av disse containerne, og satte containerenes stilegenskap til den nye klassen ( figur A ). Mens de nye CSS-klassene fremdeles var blanke, var det en start som ville tillate meg å eksperimentere litt. Enda viktigere, det brøt webskjermen i Container Widgets som jeg kunne tilordne klasser til og manipulere hver for seg. Figur A

CSS-editoren er ganske grunnleggende, så det kan være lurt å lime inn CSS-en din fra et annet sted.

Neste, begynte jeg å skive og terning på Introduksjonssiden. (Introduksjonssiden er en av de mest kompliserte sidene når det gjelder oppsettet fordi den har innloggingswebblokken på siden.)

  1. Jeg flyttet webblokkene på skjermen ut av den eksisterende tabellen.
  2. Jeg opprettet en ny, tom CSS-klasse for innholdet på hver nettskjerm, og flyttet det eksisterende innholdet inn i det.
  3. Jeg begynte å redigere CSS-klassene som jeg opprettet for å komme til utformingen jeg ønsket.
Den samlede innsatsen som trengs for dette var omtrent 10 minutter med arbeid (jeg har en veldig enkel layout), men nå er jeg på lang vei til å flytte ting på hver nettskjerm. Dette er ikke å si at hvert bord i Rat Catcher vil forsvinne; alt som virkelig trenger en tabell (for eksempel rapportdetaljer) vil fremdeles ha en ( figur B ), men tabeller vil ikke lenger brukes til å ordne de generelle elementene på sidene. Figur B

Noen skjermbilder, for eksempel kontokjøpsiden, trenger fortsatt noen tabeller.

Under denne prosessen ble versjon 5.1 av Agile Platform utgitt, og den har en rekke gode forbedringer. En forbedring er inkluderingen av en ledetekst-egenskap for Input-widgetene for å erstatte Input_SetPrompt Rich Widget, og jeg byttet Input-widgetene etter behov for å utnytte det. Noe jeg ikke liker er at du ikke kan definere mastersider eller sidemaler. Jeg har sendt dette inn som et forslag, og forhåpentligvis får vi se denne endringen i fremtiden.

Hvorfor skulle jeg gå gjennom dette problemet? Rat Catcher trenger virkelig ikke søkemotoroptimalisering (SEO), siden 99% av applikasjonen vil være skjult bak en registreringsvegg. Og ved å ikke bruke en bunke med fancy JavaScript, oppnår heller ikke forenkling av DOM veldig mye. Men jeg trenger evnen til å raskt og enkelt endre nettstedets design. Jeg venter fortsatt på at grafikeren min (den helt fantastiske Simon Page, jeg har to av de lekre trykkene hans på kontoret) kommer tilbake med de første logo-designene. Når vi har valgt et grovt trekkdesign, vil jeg ha en god ide om hva font ansikt og fargevalg vil fungere bra for applikasjonen, og når jeg først vet hvor jeg skal med grafikken, vil jeg kunne få Rat Catcher til å se egnet ( figur C ). Dette prosjektet har tatt meg omtrent seks måneder lenger enn jeg anslått (det tok meg nesten seks måneder bare for å komme i gang) på grunn av mangel på tid fra min side; Jeg vil virkelig ikke utsette prosjektet lenger enn nødvendig. Figur C

Rat Catcher har fortsatt et veldig vanlig utseende, men når logoen er valgt, vil fargeskjemaet endre seg, og jeg vil se om menyen fungerer bedre med ikoner.

Jeg har noen gode ideer for tilleggsfunksjonalitet og en rekke mindre feil å fikse, men jeg vil heller jobbe med grafikken. Jeg vet også at når jeg først har lastet inn hovedgrafikken og valgt fargeskjemaet, kan det hende at jeg veldig godt bestemmer meg for å forny menyene for å dele hovedfunksjonaliteten opp i store ikoner og skifte den andre funksjonaliteten til en mindre fremtredende posisjon. Dette vil tillate meg å stramme opp designet slik at det fungerer bedre på mindre skjermer, og det vil sannsynligvis hjelpe betydelig med brukervennligheten. Fra tidspunktet for dette skrivingen ser den faktiske applikasjonen den samme ut som den alltid har gjort, men den underliggende HTML-en er mye bedre, takket være at du går uten bord. pluss at jeg har muligheter for fremtiden. Leksjonen jeg lærte her er å gjøre det helt fra begynnelsen!

Sammendrag

Da jeg begynte å skrive om erfaringene mine med å bruke Agile-plattformen, forestilte jeg meg at det ville være fem eller seks avdrag, men så blomstret det til en 10-delers serie. Underveis lærte jeg massevis av nye ting, og jeg har virkelig likt å jobbe med Agile-plattformen.

Jeg begynte å føle meg litt off-kilter med Agile Platforms utviklingsparadigme, men nå kan jeg ikke tenke på noen grunn til at jeg noen gang skulle gå tilbake til vanilje ASP.NET for denne typen utviklingsarbeid. Sier jeg at jeg aldri ville brukt ASP.NET igjen? Absolutt ikke. Men for et datadrevet webapplikasjon, eller et program som ikke trenger å bruke tilpassede kontroller eller har absolutt kontroll over den underliggende HTML, tror jeg at Agile Platform er så mye mer produktiv enn ASP.NET (eller PHP eller J2EE, for den saken), at det ville være en hard selger for meg. For første gang på lenge likte jeg faktisk å jobbe med en webapplikasjon.

Jeg anslår at jeg har investert omtrent 40 timer i Rat Catcher på den smidige plattformens slutt. Noe av denne tiden ble brukt på å lære nye teknikker. For eksempel trengte jeg å ta den eksisterende backend-DLL som legemliggjør behandlingsmotoren og pakke den inn i en WCF-tjeneste. Min største tidsvaske ble brukt rundt utplassering. Mens distribusjonen av applikasjonen til Platform Server var en liten bit av det, valgte jeg å legge applikasjonen bak en omvendt proxy ved å bruke IISs URL Rewrite-modul for meg alle slags hodepine. Omtrent 90% av smertene var på IIS-siden, og forhåpentligvis vil diskusjonen min hjelpe emnet andre som bestemmer seg for å gå den veien. Jeg ble tvunget til å gjøre dette ved å bare ha en IP-adresse, men for fremtidige distribusjoner, ønsker jeg enten en annen IP-adresse dedikert til Platform Server-boksen, eller en skikkelig brannmur foran med en omvendt proxy, som Microsoft Threat Management Gateway. Jeg holdt ikke oversikten, men jeg vet at jeg tapte minst 10 timer på denne delen av prosjektet, og det ville ha vært et 30 sekunders problem uten mine lokale tekniske begrensninger. I det øyeblikket noen tilbyr et nøkkelferdig vertsprodukt fra tredjepart for Agile Platform, vil jeg være der. Jeg så på informasjonen for distribusjon til Amazon Web Services, og øynene mine gikk i glass, men jeg kan være nødt til å utforske den ruten (eller flytte backend-prosesseringskomponenten til Azure) hvis applikasjonen blir en hit.

Selv om jeg ikke kan si sikkert hvor mye tid jeg ville brukt på dette prosjektet hvis jeg hadde brukt ASP.NET, vet jeg at det hadde vært mye lenger. Agile-plattformen leverte tre hovedfordeler for meg for å redusere tiden for å utvikle Rat Catcher betydelig:

  1. Den stramme integrasjonen av datamodelleringen i utviklingsscenariet tillot meg å gjøre endringer i datamodellen og få dem umiddelbart reflektert i applikasjonen. Dette var langt bedre enn ORM-ene jeg vanligvis ser som krever endringer i databasen, og deretter få ORM-modellen regenerert, og deretter få endringene reflektert i forretningsobjektene. TrueChange-systemet spilte tungt inn i dette. En annen vinkel her er måten identifikatoren for en enhet blir sin egen type, og hvordan systemet automatisk baserer ting på den typen. På samme måte er Service Studio subtil smart om visse ting; Hvis du for eksempel har en variabel som heter EmailAddress og enheten har et attributt som heter EmailAddress, fyller den automatisk oppdrag fordi den gjetter (det er riktig 95% av tiden) at du vil tilordne verdien til EmailAddress attributtet til variabelen "EmailAddress" .
  2. Handlingenes visuelle natur tillot meg enkelt å se hva en gitt handling gjør, selv om jeg ikke hadde sett på den handlingen på flere måneder (ja, prosjektet var faktisk spredt over omtrent tre måneder). Som et resultat ble kilden til de fleste avlyttinger funnet uten å bruke avluseren. (Jeg kan telle på en hånd antall ganger jeg brukte avluseren!) "Koden" er bokstavelig talt selvdokumenterende (og dokumentasjonen er alltid oppdatert), noe som har vært et mål for utviklere i lang tid .
  3. Service Studio-paradigmet tillot meg å "tenke høyt", noe som er umulig i ASP.NET. Fordi endringer lett og raskt ble reflektert gjennom systemet, gadd jeg ikke å utføre den vanlige planleggingen som jeg ville ha gjort i et ASP.NET-prosjekt. Det morsomme er at planleggingen jeg vanligvis ville gjort (dvs. Visio-diagrammer over datamodeller og arbeidsflyter) ser ut akkurat som hvordan Service Studio fungerer generelt. Selv om jeg ikke fulgte en sann, smidig metodikk, kan jeg se hvorfor dette kalles Agile-plattformen og ikke den raske utviklingsplattformen (selv om det også hadde vært nøyaktig). Endringene var smertefrie. Antall ganger jeg brukte et Finn alt for å finne ut hvordan jeg skulle sammenstille en endring var enten to eller tre ganger, og det hadde sammenheng med en større strukturell overhaling i hvordan jeg håndterte rapportene. Det er virkelig utrolig for meg. Jeg startet denne delen av prosjektet med bare en vag ide om hva jeg ville gjøre eller hvordan jeg gjorde det, og verktøyene gjorde det faktisk lettere for meg å utforske nye ideer og konsepter fordi det var så enkelt å gjøre endringer.

På dette stadiet i spillet har Rat Catcher vært i en offentlig beta i noen tid, og jeg har fått massevis av gode tilbakemeldinger på det. Det ser også ut som at noen som brukte en tidlig prototype av Rat Catcher (jeg skrev en enkel WinForms .NET-applikasjon for å samhandle med backend for lenge siden) har byttet til den nye nettversjonen, og jeg håper å få mer tilbakemelding fra det person også.

På dette tidspunktet er buglisten min nede på tre elementer, og min "must-have" -funksjonsliste blir også ganske kort. Akkurat nå er de viktigste fremtredende elementene å fullføre forbedring av utseendet og følelsen av applikasjonen og å binde inn faktureringssystemet. Jeg venter på faktureringen av ting fordi jeg vurderer en rekke forskjellige valg, og det er ikke noe travelt med å gjøre det før resten av søknaden er god å gå. Jeg har noen mindre smertepunkter, som et antall e-postmeldinger som trenger mer beskrivende tekst, et behov for å omdirigere brukere fra innloggingssystemet til siden de prøvde å nå, og så videre. Jeg har også en rekke varer med lavere prioritet som jeg også ønsker å få noe trekkraft på, men de er ikke kritiske for produktet.

Jeg er virkelig fornøyd med hvor godt dette prosjektet har utviklet seg over tid, og jeg har lært mye underveis. En ekstra spesiell takk går til Miguel Baltazar (OutSystems Solutions Delivery Manager i USA), som virkelig har vært flink til å finne ting som må fikses, og som viser meg bedre måter å bruke Agile-plattformen for å nå mine mål.

J.Ja

Avsløring av Justin's tilknytning til industrien: Justin James har en kontrakt med Spiceworks for å skrive produktkjøpsguider; han har en kontrakt med OpenAmplify, som eies av Hapax, for å skrive en serie blogger, opplæringsprogrammer og artikler; og han har en kontrakt med OutSystems om å skrive artikler, eksempelskode, etc.

-------------------------------------------------- -------------------------------------

Få ukentlige utviklingstips i innboksen Hold utviklerferdighetene dine skarpe ved å registrere deg på TechRepublics gratis nyhetsbrev for Web Developer, levert hver tirsdag. Abonner automatisk i dag!

© Copyright 2021 | pepebotifarra.com