Eifos frameworket  

Eifos frameworket er et generisk komponentbaseret framework beregnet til udvikling af .NET baserede applikationer. Frameworket, der gør mange af de oftest forekommende programmeringsopgaver langt simplere at håndtere, kan bruges til mange forskellige typer af applikationer lige fra Windows applikationer og Windows services over XML web services til web applikationer.


Indhold:


Hvorfor benytte og udvikle frameworks?

.NET platformen er en udviklings- og afviklingsplatform omfattende teknologier, udviklingsværktøjer, serverprodukter og meget andet. Set fra en udviklers synspunkt er .NET frameworket, med dets store klassebibliotek, langt den vigtigste del af .NET platformen. Klassebiblioteket indeholder dog hovedsagligt kun basal teknisk funktionalitet, der ikke direkte addresserer egentlig bruger- og systemfunktionalitet. Det er et omfattende og godt udgangspunkt, men som udvikler indser man hurtigt, at ved udvikling af selv almindelige applikationer er der stadig utrolig meget, man selv skal håndtere.

Hvis man i længden skal lave gode applikationer, bør man placere den generiske del af applikationen i selvstændige genbrugelige komponenter - allerhelst udviklet med henblik på skabelsen af et sammenhængende framework. Implementation af frameworks drives dels naturligvis af ønsket om at kunne genbruge funktionalitet på tværs af applikationer, men også af ønsket om at skabe klare opsplitninger mellem generel funktionalitet og konkret implementation, hvorved der opnåes en klarere arkitektur og langt lettere vedligehold af koden.

Et eksempel: Windows operativsystemet indeholder ganske vist integreret brugerhåndtering, men i forbindelse med eksempelvis en webapplikation ønsker man typisk at håndtere brugeradgangen eksplicit uden om Windows. I .NET findes der naturligvis basal funktionalitet til at implementere database tilgang og GUI (til implementation af login-form og administrationsprogram), men desværre indeholder .NET frameworkets klassebiblioteker ikke direkte komponenter og værktøjer til at implementere ens egen brugerhåndtering.

Af andre lignende typiske eksempler på framework elementer kan nævnes generel fejlhåndtering og logning,  håndtering af konfigurationsfiler, automatisk opbygning af user interface, internationalisering af applikationer etc.


Introduktion til designkriterier for gode frameworks

Ved udviklingen af Eifos frameworket er der taget hensyn til mange forhold, der har afgørende betydning for effektiviteten og kvaliteten af softwareudviklingen. Blandt de aspekter der har været mest afgørende for Eifos frameworkets opbygning er:

  • At Eifos frameworket bygger videre på Microsofts .NET framework

    Eifos frameworket er på ingen måde en erstatning for Microsofts .NET framework, men bygger i stedet videre på den funktionalitet, der allerede findes der i. Eifos frameworket går et skridt videre i understøttelsen af applikationsudviklingen end det meget basale .NET framework ved at stille højniveau-funktionalitet til rådighed for udviklerne. Eksempelvis er Eifos.Data ikke en erstatning for .NET frameworkets System.Data, men i stedet en udvidelse, der bygger på de allerede eksisterende klasser. En udvidelse der gør, at det er langt hurtigere og lettere at udvikle og vedligeholde database-applikationer end, hvis man som udvikler skulle starte på bar bund udelukkende ud fra System.Data.

  • At Eifos frameworket danner gode abstraktioner

    Den helt afgørende begrundelse for, at man vil lave frameworks er, at man ønsker at skabe abstraktioner. Abstraktioner der løfter niveauet for softwareudviklingen.

    Det kan enten være for at give udviklerne mulighed for at implementere funktionalitet, der ellers realistisk set ville være uden for rækkevidde, fordi det ville alt for resourcekrævende for applikationsudviklere selv at skulle lave det fra bunden af (traditionelle og lidt overdrevne eksempler her på kunne være at implementere sin egen SQL server, sine egne krypterings- og komprimeringsalgoritmer eller måske at lave sit eget vinduessystem). Selvom det naturligvis vil være muligt at implementere sådanne grundlæggende funktionaliteter, vil det for de fleste applikationsudviklere være langt smartere at basere sig på allerede eksisterende funktionalitet udviklet af specialister, der har netop det som deres hovedopgave. Ellers vil resultatet ofte blot være et stort tidsforbrug på noget, der alligevel ikke kan leve op til det bedste, der findes på markedet.

    Der udover ønsker man at skabe abstraktioner i softwareudviklingen for at give effektivitet, overblik, transparens og ensretning. Et veldesignet højniveau-framework tager aktivt stilling til, hvordan man bedst muligt designer arkitekturer, og hvordan man bør implementere applikationer byggende på sådanne arkitekturer. At det er et højniveau-framework betyder, at det ikke forsøger at dække over samtlige de muligheder, man har for at implementere en given funktionalitet. Tværtimod angiver det en enkelt eller måske nogle ganske få gyldne veje, der fører til det ønskede resultat. Derved opnåes, at applikationsudviklerne kan koncentrere sig om den ønskede funktionalitet fra en forretningsmæssig eller applikationsorienteret synsvinkel. Til gengæld betyder det så også, at der vil være funktionalitet, der ikke som udgangspunkt er dækket af Eifos frameworket. Det forsøger ikke at blive en erstatning for det meget basale lavniveau .NET framework, men søger i stedet at supplere det i form af - fra applikationsudviklerens synspunkt - nogle meget simple tilgangsvinkler til komplekse problemstillinger.

  • At Eifos frameworket er fleksibelt

    I designet af Eifos frameworket har vi lagt vægt på at skabe stor fleksibilitet i softwareudviklingen.

      - Eifos frameworket begrænser ikke de muligheder, man har som udvikler. Alt hvad man har mulighed for at gøre uden Eifos frameworket, har man naturligvis også stadig adgang til at kunne gøre med Eifos frameworket.

      - Eifos frameworket er designet med henblik på at kunne udvides over tid. Et framework er en dynamisk størrelse - det vokser efterhånden som tiden går, og efterhånden som det bliver brugt i forskellige projekter. Et framework er aldrig færdigt, men der findes en række versioner med stadig mere funktionalitet. Et godt eksempel på dette er Eifos Logging, hvor vi har implementeret en række medier til hvilke, der kan foretages logning. På et tidspunkt dukker der givetvis behov op for at kunne logge til medier til, hvilke vi ikke allerede har implementeret logning. Og på det tidspunkt vil det så være ganske simpelt at udvide med nye logningsmedier - og det naturligvis uden at der skal laves om i de applikationer, der iøvrigt benytter logning.

      - Eifos frameworket benytter alt efter konteksten forskellige tilgangsvinkler til at sikre både nutidig og fremtidig fleksibilitet. En af de oftest anvendte teknikker er forskellige varianter af de designpatterns, der ofte går under betegnelsen strategi og provider kombineret med et factory-designpattern. Disse designpatterns implementerer vi alt efter omstændighederne typisk baseret på brug af abstrakte klasser, interfaces eller delegates.

      - Hvis man allerede har eksisterende .NET kode er det let at integrere denne med Eifos frameworket, hvilket beror i høj grad på, at Eifos frameworket er designet som en udvidelse til Microsofts .NET framework og ikke som en erstatning heraf.

  • At Eifos frameworket er transparent og generisk

    Eifos frameworket er et generisk, teknisk framework forstået på den måde, at det ikke er bundet til hverken bestemte typer af applikationer (det kan bruges til alle former for .NET applikationer) eller til bestemte applikationsdomæner. Der er tale om et såkaldt horisontalt framework i modsætning til vertikale frameworks, der er specifikke for anvendelse i forbindelse med konkrete, snævre domæner (som f.eks. økonomisystemer, forsikringssystemer, personalesystemer eller lign.).

    Langt størstedelen af Eifos frameworket kan benyttes på præcis samme måde uanset om der er tale om Windows eller web applikationer (eller nogle af de andre .NET applikationstyper for den sags skyld). Og det gælder endda også for de dele af Eifos frameworket, der hjælper udvikleren med at opbygge brugergrænseflader. Faktisk kan langt størstedelen af denne kode køre fuldstændigt uændret uanset applikationstypen!

    Rationalet for udviklingen af de enkelte dele af frameworket har mange steder været at skabe transparens og generalitet; forstået på den måde, at man i applikationsudviklingen ikke bør beskæftige sig med ligegyldige detaljer, der beror på små forskelle i implementationen af forskellige "versioner" af en given funktionalitet. Det bør eksempelvis ikke være nødvendigt, at have forskellige udgaver af ens kode alt efter om man ønsker at køre mod Microsofts eller Oracles SQL Server.

  • At Eifos frameworket understøtter en høj grad af genbrug, stabilitet og korrekthed

    Det er helt oplagt, at ønsket om at benytte frameworks i softwareudviklingen hænger sammen med ønsket om at opnå softwaregenbrug. Det er langt fra det mest effektive at skulle udvikle den samme kode gang på gang, og det er iøvrigt også de færreste udviklere, der synes, at det er særligt sjovt. Men et vel implementeret framework kan ikke bare skabe en højere grad af genbrug, det kan også skabe et bedre genbrug. Et godt framework kan være med til at sikre, at koden kører mere stabilt og korrekt. At kode udover at være testet har været anvendt af forskellige udviklere i forskellige projekter giver tillid til, at koden også i den næste applikation kører stabilt og fungerer korrekt. Herved undgåes at udviklere gang på gang bruger tid på at verificere hver eneste linje kode i hvert eneste program, de udvikler.

  • At Eifos frameworket angiver en implicit kodestandard og implementation af best-practices

    Når udviklere benytter et fælles framework, fordi det giver en hurtigere og mere stabil udvikling og vedligehold, opnår man også automatisk, at koden bliver mere ensartet, fordi et framework ligger op til, at man udvikler sine applikationer efter nogle ensartede mønstre. Det betyder dermed, at frameworket kommer til at virke som en implicit kodestandard. Det, der i denne forbindelse er yderst væsentlig, er så naturligvis, at frameworket er konsistent opbygget både i struktur og med hensyn til navngivning og lignende. Og at det i dets konstruktion lever op til de eksisterende kodestandarder og best practices, der findes.

  • At Eifos frameworket fremmer sikringen af skalerbarhed og performance

    Skal udviklere have tiltro til et udviklingsframework, skal det være lavet på en sådan måde, at man er i stand til at indfri de krav til performance og skalerbarhed, man måtte komme ud for i fremtiden. Det er selvfølgelig ikke alle applikationer for, hvilke det eksempelvis er nødvendigt, at kunne skalere til mange tusinde samtidige brugere, men det er langt at foretrække, at skulle behovet opstå så ved man, at det kan lade sig gøre. Bemærk dog at Eifos frameworket ikke sikrer, at ens applikation skalerer og performer tilstrækkeligt - det er stadig nødvendigt, at man som udvikler og/eller softwarearkitekt tænker sig godt og grundigt om.

  • At Eifos frameworket giver adgang til spidskompetence

    Moderne softwareudvikling kræver viden inden for mange forskellige tekniske områder lige fra arkitektur over programmering til idriftsættelse. Og ikke mindst kræver det ofte dybtgående forretningsmæssig viden; viden omkring det konkrete domæne. Uanset at vi som udviklere ofte gerne vil deltage i mange forskellige faser i et udviklingsforløb, er det ikke realistisk at tro, at vi alle kan være eksperter i alt. Ved at benytte et godt framework får man - ganske vist inddirekte men til gengæld automatisk - indbygget spidskomptence i ens applikationer; spidskompetence der hjælper til med implementere en god og stabil arkitektur, der også er fleksibel i forhold til fremtidens udfordringer.

Eksempler på funktionaliteter i Eifos Frameworket

Ved at benytte Captators Eifos framework reduceres udviklingstiden af applikationer markant. Eifos frameworket er et godt fundament for at skabe en fleksibel og stabil applikationsarkitektur.

Eifos frameworket er til stadighed under udvikling og udvidelse, men som eksempler på hvad det indeholder, og hvad der for øjeblikket er under udvikling kan nævnes:

  • Eifos Data
    • Indeholder abstraktioner baseret på ADO.NET - disse abstraktioner er ikke en erstatning for standard ADO.NET, men er designet som et tyndt lag ovenpå - og ved siden af - ADO.NET således, at der om ønsket stadig kan integreres til eksisterende teknologier og komponenter.
    • Uafhængighed af konkrete ADO.NET datakilder således, at man i modsætning til, hvis man benytter ADO.NET direkte, hvor koden vil være specifik for den enkelte dataprovider, kan udvikle generelt mod alle ADO.NET datakilder som for eksempel Microsofts og Oracles SQL servere.
    • Eifos Data indeholder bl.a. også automatiseret og generel håndtering af automatisk genererede nøgleværdier (autocounters) og timestamps således, at autocounters og timestamps også virker på tværs af forskellige dataprovidere.
    • Typestærk ConnectionInfo-klasse til erstatning for typesvage connectionstrenge.
    • Indeholder en lang række utilityfunktioner der gør, at man skal skrive markant færre kodelinjer end, hvis der udvikles direkte ovenpå ADO.NET.
    • Integration til typestærke entitetsklasser.
    • Caching understøttelse til performanceoptimering af databaseadgang.

  • Eifos Conflict
    • Indeholder logik til generel håndtering af databasekonflikter som følge af samtidige brugere.
    • Indeholder et user interface der generelt kan anvendes til brugerstyret konflikthåndtering.

  • Eifos DataInfo
    • Metamodel for relationelle informationer - som eksempelvis kan bruges til blandt andet automatisk run-time generering af brugergrænseflader (Eifos AutoEditing), automatisk data-integration til brugergrænseflader (Eifos AutoFilling), generering af rapporter, fil-import og eksport, automatisk validering (Eifos Validation) og generering af typestærke klasser.
    • Indbefatter automatisk opbygning af metamodellen ud fra konkrete databaser.
    • Udover at DataInfo er en metamodel for databaser (uafhængigt af det konkrete database produkt) understøttes endvidere information om forretningsregler og user interface opbygning.

  • Eifos Logging
    • Et generelt logging framework.
    • Via simple opsætninger (i kode eller i konfigurationsfil) er det muligt meget fleksibelt at logge til databaser, message-køer, mail, XML filer, kommaseparerede filer m.m. uden at ændre i selve koden, der foretager logningen.
    • Eifos Loggings indbyggede failover loggers håndterer helt automatisk , hvis logningen fejler, fordi man eksempelvis ikke har netværksadgang til databasen. I disse tilfælde logges til sekundære logmedier, så der f.eks. logges til en XML fil, hvis det primære logmedie ikke er tilgængeligt.
    • Funktionalitet der ved eksempelvis opstart af klientapplikation, kan gemme data logget til en XML fil (som eksempelvis har ageret sekundært logmedie) i en central database.

  • Eifos ExceptionHandling
    • Funktionalitet baseret på Eifos Logging, der gør det simpelt at logge opståede fejl enten manuelt eller automatisk.
    • Automatisk logning af alle ikke-håndterede exceptions og systemts kontekst-informationer - informationer om systemets (applikationens og maskinens) status.
    • Indbefatter administrativ brugergrænseflade, hvor exceptions der er logget til for eksempel en central database kan filtreres og browses.

  • Eifos ActivityLogging
    • Funktionalitet baseret på Eifos Logging, der gør det simpelt at logge (forretnings-) hændelser i systemet.
    • Kan bruges både med auditing og debugging formål for øje.
    • Kan filtreres og browses med samme værktøj som benyttes i forbindelse med Eifos ExceptionHandling. Activities og exceptions kan ses adskilt eller samtidigt i dette værktøj.

  • Eifos Configuration
    • En erstatning for .NET frameworkets indbyggede konfigurationsfiler, der er stærkt begrænsede i deres anvendelse.
    • Indbefatter en fuldt API til læsning og skrivning af enkeltværdier såvel som grupper af værdier.
    • Inkluderer dels et typesvagt dels et typestærkt API.
    • Understøtter med samme kode af konfigurationer kan persisteres i XML konfigurationsfiler og databaser (andre lagermedier som eksempelvis XML web services vil kunne tilføjes uden at ændre Configuration iøvrigt).
    • Indbefatter et redigeringsværktøj rettet mod systemadministratorer, udviklere og lign. til vedligehold af konfigurationerne.
    • En specialversion af dette redigeringsværktøj, der vil gøre det muligt at indbygge redigeringsfunktionalitet i slutbrugerapplikationer er under overvejelse.
    • Caching understøttelse til performanceoptimering af adgang til konfigurationer.

  • Eifos Synchronization
    • Anvendes til synkronisering af data mellem forskellige datakilder (databaser) ved implementation af disconnectede scenarier.
    • Relevant ved eksempelvis implementation af Smart Client løsninger.

  • Eifos Libra System
    • Eifos Libra System er et simpelt CMS (Content Management System) framework. Det består af tre dele:
      • En dokument/artikel datamodel med tilhørende API. Denne datamodel er anvendelig ikke bare fra web applikationer, men også fra andre typer af applikationer, så som f.eks. kataloger eller lign.
      • Et web site framework der bygger på dokumentmodellen, og som gør, at det er let og hurtigt at få et færdigt web site i luften. Bemærk at det er et framework - det giver ingen begrænsninger i, hvad der kan implementeres.
      • En redigeringsapplikation hvor man dels kan definere træstrukturer (som ikke behøver at være strengt hierarkiske) for ens dokumenter, dels kan redigere de enkelte dokumenter - både selve deres indhold og metadata for dem.
    • Eifos Libra adskiller sig fra andre CMS"er ved ikke at være en færdig applikation, men derimod et framework, hvor det er let at integrere ny funktionalitet. Tilpasninger til den enkelte organisations behov er derfor lette at indføre. Captators eget website er bygget v.h.a. Eifos Libra System.
    • EifosLibra vil næppe være anvendeligt i de situationer, hvor der ønskes et egentligt, færdigt Content Management System.

  • Eifos AutoEditing og AutoFilling
    Ofte har man i eksempelvis database baserede applikationer brug for at kunne redigere mange forskellige data. Hvis man for hver eneste tabel, som man ønsker at kunne redigere, skal dels opbygge dedikerede skærmbilleder fra bunden, dels manuelt skal håndtere hentning, visning og lagring af data, er der tale om en meget stor arbejdsindsats. En arbejdsindsats der ofte ikke kaster det store af sig i forhold til applikationens forretningsmæssige målsætning.
    • Eifos AutoEditing er et større funktionskompleks, hvis formål det er ultimativt at kunne skære mængden af kode, der skal til at redigere data i en enkelt tabel ned til én eneste linje.
    • AutoEditing er dog også et meget fleksibelt framework, der kan benyttes i mange forskellige scenarier, hvor graden af automatisering varierer bredt. Lige fra fuldstændig automatisk redigering af en tabel ud fra basalt set én kodelinje til hjælp til fysisk placering af kontroller (layoutmanagement), hjælp til ud fra en metamodel at generere de kontroller, der repræsenterer data i en tabel (inkl. data i relaterede lookup-tabeller), hjælp til hentning, visning og lagring af data og meget mere.
    • Ved det mest automatiserede scenarie er der i sagens natur foretaget en række valg af default opsætninger, men Eifos AutoEditing er som sagt et meget fleksibelt userinterface framework, og så godt som al funktionalitet er konfigurerbar og kan ændres. Så ønsker man, at datoer skal redigeres i en anden kontrol end den standard kalender-kontrol, vi har valgt at bruge som udgangspunkt, er det simpelt at ændre denne default, så man i stedet benytter en vilkårlig anden kalender kontrol eller måske blot en almindelig textbox.
    • Eifos AutoEditing er ikke rettet mod at skulle dække alle behov for opbygning af user interfaces, men sigter i stedet mod at automatisere de mest trivielle (men i de fleste projekter også meget tidskrævende) skærmbilleder, sådan at resourcerne kan koncentreres om at udvikle den i en brugs- og forretningsmæssig sammenhæng vigtigste funktionalitet.
    • Arkitekturen i Eifos AutoEditing er uafhængig af den konkrete brugergrænseflade teknologi, så det er muligt ved kald af de samme kodelinjer at kunne generere såvel Windows som web brugergrænseflader!
    • En videreudvikling af AutoEditing er i gang til håndtering af relaterede tabeller (ud over den ovenfor nævnte håndtering af relaterede lookup-tabeller der allerede eksisterer). Denne udvidelse (som af og til benævnes som en supermarkedsmodel) vil principielt set gøre det muligt at redigere en hel database med en enkelt (eller i hvertfald ganske få linjer kode). I praksis vil man dog nok vælge at begrænse supermarkedsmodellen til nogle udvalgte tabeller fremfor en total database.

  • Eifos Validation
    • Komponent til automatisk validering af eksempelvis brugergrænsefladedata og forretningsregler.
    • Understøtter en række forskellige former for automatisk brugernotificering, med mulighed for at tilføje nye via en providermodel.
    • Et eksempel blandt mange på en validering der kan implementeres med én linje kode: Alle textboxe på en form skal være udfyldte, og hvis en textbox ikke er det, vises et baloon-tooltip, når kontrollen forlades, og fokus sættes tilbage til kontrollen.

  • CapLingus
    At en applikation skal kunne benyttes til at understøtte flere sprog komplicerer ofte udviklingsprocessen. Programmet har en tendens til at blive mere kompliceret, fordi alle tekststrenge skal hentes fra f.eks. en ressourcefil i stedet for blot at stå direkte i programkoden/Windows formen/web formen.
    • Med CapLingus er det muligt at tage en .NET applikation, hvor der ikke fra starten er tænkt på internationalisering og så efterfølgende gøre den flersproget.
    • CapLingus understøtter både C# og VB.NET samt Windows såvel som web applikationer.
    • Processen starter med at programmet analyseres af en Visual Studio add-in, og alle tekststrenge findes og lægges ned i en database.
    • Efterfølgende kan man (som udvikler eller superbruger) ved hjælp af et administrationsværktøj oprette nye sprog, redigere teksterne for de specifikke sprog og så videre.
    • Via brugeradministration er det muligt at give forskellige personer rettigheder til at ændre i ét eller flere udvalgte sprog. Herved opnåes den ideelle opdeling, hvor udviklerne kan koncentrere sig om programmet og sprogkyndige om oversættelsen til de enkelte sprog.
    • Efter oversættelsen når applikationen skal distribueres kan man vælge mellem flere strategier for at persistere teksterne: Man kan blandt andet beholde dem i databasen, eksportere dem til en XML baseret resource fil eller til satellit-dll"er samt tilgå dem via XML web services.
    • CapLingus indeholder selvfølgelig også en runtime komponent, der automatisk sørger for, at de relevante tekster hentes ind i programmet.
    • CapLingus hjælper med til at sikre, at alle oversættelser er komplette og at tekster på de enkelte sprog ikke overskrider den plads, der er tilrådighed i den enkelte kontrol (f.eks. label).
    • Sidst men ikke mindst kræver CapLingus minimale ændringer af din kode, og så godt som alle ændringer foretages automatisk.
    • CapLingus vil blive et selvstændigt produkt, der er uafhængigt af resten af Eifos frameworket.

  • Eifos AutoUpdating
    • Automatisk udrulning og opdatering af Smart Client (Windows) applikationer.
    • Fjerner behovet for manuel opdatering af applikationer.
    • Indbefatter funktionalitet til at eksekvere funktionalitet som en del af opdateringen så som eksempelvis definitionen af en lokal SQL Server database.

  • Eifos MessageStore
    • Ikke-visuel komponent til opsamling af (tekst)beskedder.
    • Brugergrænseflade til præsentation af disse beskedder.
    • Notifikation af tilstedeværelsen af nye beskedder via System Tray"en i Windows.

  • Eifos FileSystemTraversing
    • Komponent til traversering af filsystemet.
    • Strategibaseret model til filtrering af hvilke directories og filer der skal medtages.
    • Strategibaseret model for eksekvering af funktionalitet for de fundne filer. Default strategi til opsamling af de fundne filer i collection datatype.

  • Eifos IO
    • Særdeles simpel import og eksport af meget fleksible CSV-fil formater ("komma"-separerede filer).
    • Utilities til håndtering af streams.

  • Eifos ImageProcessing og PictureHandling
    • Up- og download fra Windows-klient (via XML web service).
    • Upload fra web-klient.
    • Automatisk skalering (eager eller lazy).
    • Billedebrowser til generel håndtering af forskellige billedliste-formater.

  • Eifos WinForms
    • Wizard-framework.
    • Applikationscontainer framework.
    • Komponent til transparent og samtidig implementation af menuer og toolbars.
    • Undo/redo framework.

  • Eifos Mail
    • Afsendelse af mail.
    • Bruges ved brugeroprettelse, nyhedsbrevsudsendelse og så videre.
    • Understøtter templatebaseret nyhedsbrevsdefinition.
    • Understøttelse af HTML / plain text mails.
    • Via et RecepientFilter kan man sikre, at kun mails til f.eks. ens eget domæne sendes. Dette er yderst nyttigt i en udviklingssituation, hvor man kan afprøve mail funktionalitet hele vejen gennem programmet uden at risikere at få sendt mails til uvedkommende.

  • Eifos Web - UrlRewriter
    • Til implementation af virtuelle url"er baseret på eksempelvis databasedata.
    • Integration til templatebaserede web sider.
    • Understøtter virtuelle url"er med dynamisk indhold. f.eks. /profil/[navn]/post (/profil/billg/post, /profil/andersh/post)
    • Anonym eller authenticated adgang til sider.
    • Mulighed for specielle fejlsider til forskellige sider på sitet.

  • Eifos Extensions
    • En lang række mindre funktioner, der dækker der, hvor .NET frameworket ikke har indbygget standardfunktionalitet. Det spænder over reflektion, versionering, strenghåndtering, filhåndtering, Windows Forms utilities, Web Forms (ASP.NET) utilities og meget, meget mere.

  • Eifos Calculus
    • Eifos Calculus er en formelberegner, der kan kaldes fra en vilkårlig funktion. Udvikleren kan definere egne funktioner, variable og konstanter. Ud over selve formelberegneren medfølger en visuel kontrol, der kan integreres i en applikation, når der er brug for, at slutbrugeren kan indtaste formler, som skal kunne syntaks checkes og beregnes. Læs mere om Calculus.

  • Eifos FtpWebClient
    • En FTP komponent skrevet til .NET platformens WebClient API.
    • .NET frameworket indeholder et API til håndtering af request/response web protokoller. Uvist hvorfor har Microsoft (indtil videre) valgt kun at lave understøttelse for filer og HTTP og ikke FTP. Eifos FtpWebClient er Captators implementation af denne "mangel" i .NET frameworket. Der kommer en FTP implementation i version 2 af .NET frameworket.

  • Eifos Authentication
    • Authentification af brugere baseret på en XML f.eks. username/password i en database, i Active Directory eller via en web-service. Yderligere valideringskilder vil kunne tilføjes uden det store ekstraarbejde.

  • Eifos EventCentralization
    • Komponent der gør det meget simpelt (det bliver basalt set en one-liner), at implementere centraliseret eventhåndtering i en applikation.
    • Et eksempel kunne være at alle kontroller skal have ensartet opførsel, når de mister fokus.

  • Eifos Payment
    • Implementation der gør det simpelt at implementere DIBS betalingssystem i .NET applikationer.

  • Eifos XmlRpc
    • Simpelt framework til implementation af proxyklasser for xmlrpc-baseret kommunikation.

  • Eifos Parser og CodeModel
    • P.t. kan VB.NET kode parses - C# kode følger som det næste.
    • Eifos CodeModel er en fælles objektmodel til repræsentation af både VB.NET og C# kode.
    • Eifos CodeModel kan bruges til eksempelvis kodegeneratorer, statiske kodeanalyse værktøjer, refaktoreringsværktøjer og lignende. Eifos CodeModel danner (med tilhørende parser) blandt andet grundlag for det kontekstafhængige udtræk af resourcer i add-in"en i CapLingus (Captators internationaliseringsprodukt).

  • Eifos SQL Object Model, SQL Generator og Query
    • Objekt model til repræsentation af SQL.
    • Giver dynamisk - men typestærk - generering af SQL.
    • Danner basis for Eifos Query som blandt andet giver mulighed for meget fleksible, brugerdefinerede søgninger.
    • Understøtter persistens af en hel objektmodel via XML serialisering/deserialisering, hvilket gør det særdeles simpelt at gemme brugerdefinerede søgninger.
    • Eifos Query indbefatter en færdig kontrol som brugere kan benytte til definition af søgninger.

  • Eifos BatchEngine
    • Generel batch jobafvikler der installeres som en Windows Service, hvorefter den konfigurerbart kan afvikle et vilkårligt antal forskellige batchjobs skrevet i .NET.
    • Det enkelte batchjob kan afvikles dagligt, ugentligt, månedligt eller på baggrund af at et andet batchjob startes eller afsluttes. Det enkelte batchjob kan også afvikles manuelt.
    • Logning af jobafviklingen er konfigurerbart ,og mens et batchjob afvikles kan jobbets progress monitoreres.
    • Batchjob afvikleren kan konfigureres og afviklingen styres via Remoting. Der er implementeret en ASP.NET løsning, hvorfra man kan monitorere afviklingen samt suspende og afvikle de enkelte batchjobs. En tilsvarende windowsklient vil ret simpelt kunne implementeres.

  • Eifos Documents
    • Overordnet set en objektmodel til at håndtere documenter af forskellige typer. Udgangspunktet er Microsoft Word, men yderligere dokumentformater vil kunne implementeres ud fra modellen.
    • Det primære formål er, at stille funktionalitet til rådighed for at kunne lave brevfletning, rapportudskrivning og lignende, men Eifos Documents har også været anvendt som komponent i forbindelse med mere specialiseret Word-orienteret integration, hvor Words funktionalitet har været udvidet med .NET baseret kode.
    • Eifos Documents vil i princippet kunne understøtte alle "nyere" versioner af Microsoft Word, men har kun været anvendt i forbindelse med Microsoft Word 2000 og efterfølgende Word versioner.

  • Eifos Entities
    • Benyttes til implementation af stærkt typede entiteter (eller forretningsobjekter om man vil).
    • Baserer sig på en tynd indpakning af typesvage data.
    • Understøtter komplekse objekter (data som i databasen typisk repræsenteres ved hjælp af relationer).
    • Understøtter objekter der ikke er fuldt populerede, hvilket muliggør, at der arbejdes objekt objektorienteret uden, at der hentes flere data fra den underliggende sql server end højest nødvendigt.


Eifos frameworket har stor nytte uafhængigt af typen af applikation du udvikler. Hos Captator benytter vi selv Eifos frameworket i vores projekter, der spænder over alle applikationstyper fra Windows applikationer over Windows services til web applikationer og XML web services.

Vilkårene for erhvervelse af Eifos frameworket afhænger af den konkrete brugssituation - frameworket vil kunne erhverves i dets helhed eller som enkelte bestanddele samt både med og uden medfølgende kildekode.

Kontakt Captator
Ønsker du yderligere information om vores komponenter så kontakt os, info@captator.dk.


    Andre artikler i kategorien Eifos frameworket finder du her:

    Eifos Calculus
    Eifos Calculus er dels en ikke-visuel komponent til udtryksevaluering, dels en visuel kontrol der integreret i din applikation kan fungere som en slags formel-lommeregner.