en multi - klient miljøvenligt eksempel på anvendelse.

, anvendelse, vi skal bygge kan anvendes til opsamling af arbejdstid og pauser i arbejdstiden.den arbejdstid kan blive fanget med flere kunder og - anvendelse, giver et overblik over alle data fanget., [kunden del],,, du starter med at oprette en winform eco - ansøgning.denne ansøgning skal være klient.jeg hedder det worktimeclient. du er nødt til at have uml klasser i en pakke, så kan du tilføje dem senere hen til server applikation.,,, skabe følgende model:,,, arbejdstid og breaktime er specialiserede grupper af et tidsrum.en arbejdstid kan have flere breaktimes. operationen calctotal giver tilbage tidsrammen for en arbejdstid nedsættes med den samlede timespans af breaktimes.resultatet af calctotal er fastsat i forsk attribut i arbejdstiden, klasse.sørg for at ændre de klasser i henhold til følgende kode stumper:, funktion timestartend. calctotal(): tidsrum; begynder, resultat: = tidsrum (self. endtime selv. starttime);,;, funktion arbejdstid. calctotal(): tidsrum;, var ib: ibreaktimelist; jeg: heltal, begynder, ib: = get_breaktime; for jeg: = 0 til ib.count-1 begynder, self.diff: = self.diff - ib.item [i]. calctotal;,;,; funktion breaktime.get_diff: tidsrum; begynder, //hvis du tilføjer bruger kode her, tag venligst [ecoautomaintained] attribut, //fra ejendommen erklæring i grænsefladen afsnit, resultat: = tidsrum (self. _endtime-self. _starttime);,; funktion worktime.get_diff: tidsrum; begynder, //hvis du tilføjer bruger kode her, tag venligst [ecoautomaintained] attribut, //fra ejendommen erklæring i grænsefladen afsnit, resultat: = tidsrum (self. _endtime - selv. _starttime);,;, nu udarbejde ansøgningen, gå til ecospace designer og tilføje den pakke til ecospace.læg en persistencemapperxml komponent på ecospace, således at de kan udvikle klient uden behov for serveren del hidtil.sæt den på fil af persistencemapper til data.xml eller hvad suiter dig godt. skift til winform og skabe en frontend svarende til dette:,, tilføje to udtryk, skafter og håndtag til datagrids valuta manager., for at få den sidste række i datagrid udvalgte stille følgende kode i den datagrids maling begivenhed:,, procedure twinform. datagrid1_paint (afsender: system. objekt; e: system. vinduer. former. painteventargs), begynder, datagrid1. bindingcontext [datagrid1. datasource,, datagrid1. datamember]. stilling: = ehworktime. getlist. tæl;, cmhworktime.position: = ehworktime. getlist. tæl;,;, der kunne måske være klogere pladser til det –, men jeg kender dem ikke. -), men lad mig vide hvis du ved. for den eneste kunde.st af app 'en, du bare kan tildele ajourføre databasen ecoaction til ajourføring af db knap – i flere kunder om, du har brug for følgende kode:, var, c: ichange; begynder, ecospace. persistenceservice. retrievechanges; for c i ecospace.persistenceservice.getchanges, hvis c.isdirectconflict så c. aktion: = changeactionkind af andre. c. aktion: = changeactionkind. hold;, ecospace. persistenceservice. applyallchanges;,;,, denne kodeks får via ecospace persistens tjeneste alle ved ændringer.det kunne i en multi - klient miljø ske, at nogen ændrede data, at de allerede var blevet ændret i deres lokale ecospace lager.den vedvarende service, giver dig evnen til at håndtere, der opstår konflikter, hvis det er tilfældet.i vores tilfælde (loging arbejdstid) det bør ikke ske. ikke desto mindre, efter du fik ændringer går via... i loop på dem for at se, om du har en konflikt eller ej.du er nødt til at, der er fastsat for hver ichange grænseflade i getchanges liste, de foranstaltninger, der skal anvendes, når applyallchanges procedure er. hvis du er færdig med kunden på denne måde, det eneste, der er tilbage til at gøre det muligt for klientserver er at ændre persistencemapper.vi har brug for en persistencemapperclient komponent i vores ecospace, eftersom det ikke er om miljøvenligt componet palette af misligholdelse.vi er nødt til at tilføje, at det som følger:, højre klik på det værktøj, palet og vælge "installeret. netto komponenter" fra pop - op - menu.,,,, så trække det til eco - kategori. det persistencemapperxml klient fra ecospace og smid persistencemapperclient på det.sæt url ejendom "tcp: //localhost: 8000 /testserver1" –, da vil vi have - - en klient på vores lokale maskine før anvendelse.,, medmindre projektet og lukke det eller lade det stå åbent, hvis du vil have klient og server i en projektgruppe.da det ikke vil løbe, så længe vi har vores server udviklede - op og køre, fordi den sokkel, den peristencemapperclient forsøger at forbinde til vil ikke blive registreret.,, [serveren del], skabe en ny eco winform projekt.jeg hedder det worktimeserver. tilføje arbejdstid klasser pakke og en vedvarende mapper udbyder:,, i vores eksempel, vi bruger interbase med bdp.så smid en persistencemapperbdp og en bdpconnection komponent på persistancemapperprovider ecospace.oprette persistencemapperbdp for interbase og konfigurere sammenkobling af bdpconnection i henhold til deres lokale miljø.du har lige sat et tomt database.tabellerne vil blive oprettet senere via persistens mapper udbyder. gå til den ecospace (ikke persistencemapperprovider, men den, der er forbundet med winform) og vælge den arbejdstid pakke fra tilgængelige pakker liste:,,, udarbejdelsen af projektet og vælge den ecospacetype anvendes for den vedholdenhed mapper udbyder.(klik på overfladen af de vedvarende mapper udbyder og vælge det fra ned liste i den genstand, inspektør. du kan nu klik på skabe schema knap på bunden af ecopersistancemapper udbyder.resultatet bør se ud som følger:,,, du nu skal uncomment koden for remoting i vedholdenheden mapper udbyder.glem ikke at uncomment erklæring om proceduren og at tilføje den krævede gennemførelse anvender erklæring som anført i bemærkningerne. //prøvens kode for registrering af tjenesteyderen som en server med, //binære formatering på en tcp kanal. //føje følgende til deres gennemførelse plan anvender erklæring, når uncommenting koden //system.runtime.serialization.formatters, system.runtime.remoting, system.runtime.remoting.channels, system. runtime. remoting. kanaler. tcp, klasse procedure tecopersistencemapperprovider. registertcpserver (havn: heltal), var leverandør: binaryserverformattersinkprovider;, rekvisitter: idictionary;, chan. tcpchannel; begynder, udbyder: = binaryserverformattersinkprovider. skabe;, provider.typefilterlevel: = typefilterlevel. fuld; //, der er nødvendige for serializations, rekvisitter: = hashtable. skabe;, rekvisitter ['port ']: = havn, chan: = tcpchannel. skabe (rekvisitter, nul, udbyder), channelservices. registerchannel (ai), remotingconfiguration. registerwellknownservicetype (, type (tecopersistencemapperprovider), testserver1 ", wellknownobjectmode. singleton);,;,, at afslutte etableringen af den vedvarende mapper udbyder, der er attributten syncactive til ægte.du kan også øge værdien af de attributter maxopenconnections og maxpoolconnections, hvis du har en masse kunder med forbindelse til serveren. nu tilføje en persistancemapperclient til ecospace.sæt url ejendom til tcp: //localhost: 8000 /testserver1, eller hvis du ændrede registertcpserver procedure til de værdier, der leveres der. vi må ringe til registertcpserver element inden persistencemapperclient er igangsat.at gøre så ændre konstruktøren af ecospace som følger:,, konstruktøren tworktimeserverecospace. skabe; begynder, arvede skabe;, ecopersistencemapperprovider. tecopersistencemapperprovider. registertcpserver (8), initializecomponent; //todo: tilføje konstruktøren kode her,,,, - - er nu fuldt funktionsdygtigt.for at tilføje en indsigt i de oplysninger, der leveres af vores arbejde - kunder, skaber vi følgende frontend:,,, timeren tik, hvis du kode persistens service kode allerede kendt fra kunden: procedure twinform. timer1_tick (afsender: system. objekt; e: system. eventargs), var, c: ichange; begynder, ecospace. persistenceservice. retrievechanges; for c i ecospace.persistenceservice.getchanges, hvis c.isdirectconflict så c. aktion: = changeactionkind. kasseres, c. aktion: = changeactionkind. hold;, ecospace. persistenceservice. applyallchanges;,;,, sæt timeren gav ejendom.save og starte projektet og løsrive det fra delphi.,,, åbne klient projekt igen.start klient projekt fjerne det og starte en anden klient.ændre brugernavnet i anden klient og eksperiment.det burde virke, og det er meget nemt, når opnåede eco kan gøre dig glad. lad mig vide, hvis jeg gik glip af nogle vigtige skridt for at forstå, hvordan det skal gøres, eller hvis jeg gjorde noget, der ikke er bedste praksis.jeg vil ændre artikel i henhold til deres feedback.,, samplecode af serveren og klient, findes her.,,

New File - ECO UML Package
WorkTime Model
WorkTimeClient Frontend
Adding the peristence mapper client
Adding the ECO persistence mapper provider
Adding the WorkTime calsses
ECO createt DB Mapping
Server Frontend
Detach program from Delphi



Previous:
Next Page: