Arkitektur for begyndere

Relaterede dokumenter
Forskellige Java versioner

Curriculum Vitae for Søren Brønsted

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

CV for Christian Plougmann Hag

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

IT projekt person galleri

Computer Networks Specielt om Infrastrukturer og Teknologi

Curriculum Vitae for Søren Brønsted

Introduction til.net remoting i VB.NET

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Introduction til.net remoting i C#

KIH Database. Systemdokumentation for KIH Databasen. 1. maj Side 1 af 13

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med.

PHP Quick Teknisk Ordbog

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

Curriculum Vitae Jack Petersen

Singleton pattern i Java

Erhvervserfaring Senior IT Specialist, IBM Systemudvikler, Dan Net Systemudvikler, KMD

Undervisningsbeskrivelse

Java web applikationer med Tomcat

Procesbeskrivelse - Webprogrammering

OpenTele datamonitoreringsplatform

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

Undervisningsbeskrivelse

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

med Java og Linux Jacob Nordfalk Linuxforum 2004 Lørdag 6. marts Center for Videreuddannelse Ingeniørhøjskolen i København

I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud.

2. Systemarkitektur... 2

APPLIKATIONSARKITEKTUR ERP INFRASTRUKTUR. EG Copyright

Database programmerings tips

Torbjörn Eriksson 1 af 6

Common Denmark. Jan Koefoed-Nielsen. Common Denmark

Logging i Java. Den forudsætter kendskab til Java og noget generel udviklings erfaring. Denne guide er oprindeligt udgivet på Eksperten.

SAP R/3. Henrik Kroos

Gs Gruppen App. Jan Koefoed-Nielsen Gs Gruppen

Web services i brug. Anvendelse uden for biblioteksverdenen

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

SSSystems.local. Netværk. Sikkerhed. Webserver

Introduktion til SQL queries

Curriculum Vitae: Jeg kan hurtigt overskue forretningers ønsker samt komplekse systemer og finde overskuelige løsninger på selv vanskelige problemer.

Agenda. Exchange 2010 Client Access Server arkitektur. Outlook Web App (OWA) Office Outlook Outlook Mobile (EAS) Outlook Voice Access (OVA)

Grundlæggende OOA - OOD

Datatekniker med programmering som speciale

Curriculum Vitae for Hardy Henneberg

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Indhold. Grundmodul. Teknologisk opbygning og indhold. Mulighed for udbygning. Forretningsmæssig funktionalitet

Den nye struktur. Offentlig version C. Generelle ændringer:

Undervisningsbeskrivelse

Tech College Aalborg. ASP.NET Hjemmeside. Projekt Smart Zenior Home - Guide til ASP.NET hjemmeside med Visual Studio

Database design for begyndere

Singleton pattern i C#

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Curriculum Vitae: Jeg kan hurtigt overskue forretningers ønsker samt komplekse systemer og finde overskuelige løsninger på selv vanskelige problemer.

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

Hvorfor skal vi bruge objekt orienteret databaser?

Elektronik tekniker, Frederiksberg tekniske skole. Elektronik ingeniør Ingeniørhøjskolen Ballerup

Kontrol-strukturer i PHP

Udvikler på diverse web-baserede systemer der anvender teknologier som: Servlets, JSP, Ajax, XMLBeans, XML, XSL, CSS, HTML, JQuery, JavaScript.

Finn Rosenkilde Rasmussen

Endnu mere om tilfældige tal

OpenTele Server Performance Test Rapport

Loginsystem (med MySQL)

Undervisningsbeskrivelse

Internet Information Services (IIS)

APEX i Praksis Martin B. Nielsen. Navn. MBNDATA Emne

Delphi og Databaser for begyndere

Serversideprogrammering, CMS og eshop. Dag 1: Introduktion og serverside programmering Niels Østergaard

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

Forskellige databaser

Undervisningsbeskrivelse

Bootstrap Tutorial LAV EN SIMPEL RESPONSIVE SIDE MED BOOTSTRAP MATHIAS HERSKIND GROTRIAN

OIS - Applikationskatalog

Web 2.0. World Wide Web (www)

Præsentation af Kim Kjærsulf.

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Dit budskab i centrum

Digital Print Room Implementering og tilretning. 11. Sep TMC Plot-SIG

Upload af billeder/filer for nybegyndere Del. 2

IT SUMMER CAMP Dato for arr. og. dato for seneste tilmelding. bliver offentliggjort i maj. Ubuntu-Linux, Web-Server, Anvendte Web-Teknologier

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

LotusPhere comes to you IM Agent Manager - IM Support - Sametime / 27 Tobias Fonsmark -

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

Umbraco installationsvejledning

Installation og Drift. Aplanner for Windows Systemer Version 8.15

Dennis Cassøe Mobil:

XProtect-klienter Tilgå din overvågning

Paper to be presented at the TEST Conference. on Adresse 1 \n vejnummer 25. Paper Title. Author Name Affiliation @abc.dk.

CV for Ralph Rezende Larsen

Afsending af s vha. ASP

Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder.

intra-mart ver /02/19 intra-mart BaseModule Version3.1

DATO DOKUMENT SAGSBEHANDLER MAIL TELEFON

Curriculum Vitae: Jeg kan hurtigt overskue komplekse systemer og finde brugbare løsninger på selv vanskelige problemer.

IT-Basecamp Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S

DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort. Martin Dissing-Hansen Alexander Poopeiko Jens Riise Danielsen

Lav en hjemme side der kan sælge fly billetter til en stor i Europa.

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Transkript:

Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle et system. Den forudsætter kun en smule kendskab til IT termer. Skrevet den 15. feb 2010 af arne_v I kategorien Programmering / Generelt Historie: V1.0-01/02/2004 - original V1.1-20/06/2005 - tilføj lidt om layers V1.2-14/02/2010 - smårettelser Indledning Når man skal igang med et mere kompleks projekt er det meget vigtigt at man får styr på de forskellige tiers i ens arkitektur. Man ved hvor mange der er. Man ved hvilken teknologi de skal baseres på. Man ved hvilken funktionalitet der ligger i hver af dem. Denne oversigt over forskellige gængse arkitekturer skulle gerne hjælpe til at forstå mulighederne og dermed også hjælpe med beslutningen. Det er ikke en komplet oversigt. Men dækker formentligt langt de fleste tilfælde. Inden vi går igang lige en definition: tier = lag som kan (men ikke behøver) køre på separat system layer = lag som er en logisk opdeling af ens kode Der er stor forskel. Når man skal kalde fra et tier til et andet tier er der noget netværk og en netværks protkol involveret. Når man kalder fra et layer til et andet layer indenfor samme tier er det et normalt kald af noget kode. En opdeling i tiers vil derfor normalt koste performance men kan give skalerbarhed og sikkerhed. Forskellige tiers kan sagtens implementeres i forskellige teknologier. Forskellige layers indenfor samme tier vil typisk skulle udvikles i samme teknologi. applikation (1-tier)

Dette er den simplest mulige arkitektur - en applikation (typisk en GUI applikation) som kører og evt. læser/skriver nogle filer. Al funktionalitet ligger i sagens natur i applikationen. Bruges til små systemer som kun skal bruges af en enkelt person. Typiske sprog: Java, C, C++, C#, Pascal, Basic applikation ---- database server (2-tier) Dette er en udvidelse af den simple model, hvor applikationen (typisk en GUI applikation) i.s.f. at læse/skrive til filer læser/skriver til en database. Logikken ligger i applikationen. Alle data gemmes på database serveren. Bruges til data orienterede systemer som skal bruges af flere brugere internt i firmaet. Typiske sprog: Java, C, C++, C#, Pascal, Basic Typiske database servere: DB2, MS SQLServer client applikation ---- server applikation (2-tier) Dette er en klassisk client/server løsning. X clienter snakker med 1 server. Logikken ligger på serveren. Bruger interfacet ligger i klienterne. Serveren har mulighed for at lade klienterne interaktere. Bruges til ikke-data-orienterede systemer kunne f.eks. være noget chat lignende. Typiske sprog på client side: Java, C#, Pascal, VB Typiske sprog på server side: C, C++, C#, Java Kommunikationen mellem client og server er typisk TCP/IP sockets. Evt. med et lag ovenpå i form af Java RMI eller.net remoting. browser ---- web server (2-tier) Dette er en web løsning som oprindeligt tilbage i midten af 1990'erne med statisk indhold. Web serveren server kun filer og sender filernes indhold ud til browseren uden at bekymre sig om indhold. Filerne indeholder så HTML, CSS og JS (JavaScript) og de fortolkes af browseren og vises. Der kan diskuteres om det egentlig er en programmerings løsning, fordi

der er ikke nogen egentlig applikations logik. Men vær opmærksom på at opgaven med at få siderne til at se ens ud og virke ens i alle browsere kan være en meget stor opgave. Bruges til simpel publicering af information over internettet. Typiske web servere: Apache HTTPD, MS IIS client applikation ---- server applikation ---- database server (3-tier) Dette er den oprindelige 3 tier løsning. En GUI client applikation som tager sig af bruger interfacet. En server applikation med logikken. Og en database server til at gemme data på. Bruges til større systemer som skal bruges af flere brugere internt i firmaet. Typiske sprog på client side: Java, C#, Pascal, VB Typiske sprog på server side: C, C++, C#, Java Typiske database servere: Oracle, DB2, MS SQLServer Kommunikationen mellem client og server er typisk TCP/IP sockets. Evt. med et lag ovenpå i form af Java RMI eller.net remoting. browser ---- web server med ASP ---- database server (3-tier) browser ---- web server med PHP ---- database server (3-tier) browser ---- web server med ASP.NET ---- database server (3-tier) browser ---- JSP/servlet container ---- database server (3-tier) browser ---- web server med CGI ---- database server (3-tier) Dette er en typisk web applikation. I.s.f. at serve filer med statisk indhold, så genereres der helt eller delvist dynamisk indhold af HTML, CSS og JS (JavaScript) på server side. Indholdet fortolkes og vises i browseren. Logikken og den egentlige præsentation ligger i server side scriptene. Databasen gemmer data. Bruges til services på internettet som f.eks. forum'er og web butikker. Typiske server side sprog: ASP (VBScript), PHP, ASP.NET Lidt mindre typiske server side sprog: JSP/servlet (Java), Perl CGI Typiske web servere: Apache HTTPD, MS IIS Typiske JSP/servlet containere: Apache Tomcat, Caucho Resin Typiske database servere: MySQL, MS SQLServer

browser ---- JSP/Servlet container ---- EJB container ---- database server (4-tier) Indholdet fortolkes og vises i browseren. Den egentlige præsentation ligger JSP og servlet. Selve logikken ligger i EJB. Databasen gemmer data. Bruges til større e business løsninger. Alt er Java baseret. Typiske J2EE app servere: IBM WebSphere, BEA WebLogic, JBoss (inkl. Apache Tomcat) Typiske database servere: Oracle, DB2, MS SQLServer layers Normalt vil man ønske at dele koden op i layers. Hvis vi kigger på nogle af de mest bruge arkitekturer: applikation ---- database server (2-tier) vil man have opdelt applikationen i layers. browser ---- web server med XXX ---- database server (3-tier) vil man have opdelt web applikationen der kører på web serveren i layers. Den helt klassiske opdeling er: presentation layer = bruger grænsefladen business logic layer = den bagvedliggende logik som er uafhængig af brugergrænsefladen data access layer = koden til at tilgå databasen I meget simple tilfælde vil business logic layer helt kunne undværes. Bemærk at der ikke er grund til at have et layer som ikke gøre noget. Personligt foretrækker jeg dog opdelingen: presentation layer = koden til at vise noget for brugeren controller layer = koden som ekskveres når brugeren gør noget business logic layer = den bagvedliggende logik som er uafhængig af brugergrænsefladen data access layer = koden til at tilgå databasen Det er naturligvis vigtigt at layers er klart adskilte med simple interfaces. Ideelt består et lag af: - data klasser - interfaces - en factory klasse til at hente instans af lag med Nogen gange bruger man et IoC framework fremfor en egen factory klasse til at instantiere med.

Kommentar af simonvalter d. 28. okt 2004 1 Meget lærerigt, jeg havde godt en forestilling om hvad det var men havde ikke undersøgt det nærmere. Kommentar af elf d. 04. feb 2004 2 Spændende læsning Kommentar af zatz d. 28. okt 2005 3 Kommentar af thundergod d. 25. maj 2004 4 Kommentar af poolo d. 06. feb 2004 5 Rigtig god! Kommentar af mikkel_strack d. 18. maj 2004 6 Fin artikel Kommentar af cdull d. 20. feb 2006 7