Mellanprogramvara
Från Rilpedia
Den här artikeln anses undermålig och kan behöva skrivas om helt för att leva upp till Wikipedias artikelstandard. Diskutera frågan på diskussionssidan och förbättra gärna artikeln. Var uppmärksam på artikelns innehåll. Motivering: rörigt språk och disposition, faktamässigt konstigt urval, hafsiga "nästanrätta" definitioner (med nedanstående definition är TCP/IP-stacken mellanvara - men den har inte betraktats som detta sedan åtminstone början på nittiotalet...) |
Mellanprogramvara (även MW, middleware (från engelskan) eller mellanvara) är mjukvara mellan nätverk och applikationer. Denna mjukvara tilhandahåller tjänster såsom identifiering, autentisering och säkerhet. En vanlig analogi brukar vara att middleware är som ett lim mellan två redan existerande mjukvarukomponenter.
Middleware används oftast för att stödja distribuerade system, såsom vanliga webservrar
Innehåll |
Definition
Det finns många definitioner av middleware. Från till exempel publikationen av ett NGI (Next Generation Internet) seminarium som ägde rum 1997 kan man läsa att ”Middleware kan ses som ett återanvändbart, utvecklingsbart set av tjänster och funktioner som används ofta av många applikationer för att fungera väl i en nätverksmiljö”.
Applikationslagret |
Transportlagret |
Nätverkslagret |
Länklagret |
Fysiska lagret |
Om man tittar på var i protokoll stacken middleware finns, så skiljer sig meningarna åt beroende på vad man sysslar med. Programmerare kanske ser det som att allt under API är middleware, medan det även finns de som ser allt över nätlagret som middleware. RFC 2768[1] definierar dock att middleware är det som finns ovan transportlagret och under applikationslagret.
Ursprung
Middleware började användas under slutet av 1970-talet och början av 1980-talet. I ett projekt vid namn I-WAY, där man jobbade med att koppla ihop datorer till ett (i USA) nationellt nätverk, kom man snart fram till att för att få ett ordentligt hög-prestanda nätverk så behövdes tjänster som då inte fanns. Globus, ett annat projekt, demonstrerade hur middleware kunde användas för att öka applikationsprestandan i distribuerade domäner.
Typer av Middleware
Bland de vanligaste typerna av Middleware är[2]:
- transaktionell mellanprogramvara (transactional MW) - Tillhandahåller verktyg och miljö för att utveckla och sprida distribuerade applikationer (typiskt databaser).
- procedurell mellanprogramvara (procedural MW) - Tillåter en klient att anropa funktioner på en server, som att det vore lokalt. Typexempel: RPC.
- meddelandeinriktad mellanprogramvara (message-oriented MW - MOM) - Tillhandahåller verktyg för att överföra data från program till program genom meddelandeskickande.
- objekt- och komponentmellanvara (object and component MW) - vidareutveckling av procedurell mellanprogramvara som dessutom möjliggör användande av distribuerad objekt-orienterad programmering.
Vanliga tjänster
Enligt Internet2[3] så finns det 5 huvudtjänster som alla andra middleware tjänster är beroende av. Dessa är;
Identifiers – Används för att hålla koll på vilken person, grupp eller vilket objekt som hanteras.
Authentication – Processen att säkerställa (exempelvis en användarens) identitet.
Directories – Innehåller information som används för att exempelvis beskriva vilken väg specifik nätverkstrafik ska ta, eller spara information om användare.
Authorization – Definierar vad som är tillåtet (tex vad en användare får göra).
Den femte är Certificates and public key infrastructure.
Objektorienterad Middleware
Objektorienterad Middleware (OOM) skapades för att kunna använda det objektorienterade programmeringsmönstret i distribuerade system[4]. Det ger bland annat tillgång till att använda distribuerade objekt, vilket betyder att en klient kan anropa ett objekts funktion som ligger på en annan dator, allt medan klienten tror att anropet sker lokalt.
Exempel på teknologier som stödjer objektorientering är CORBA, Java RMI, JINI, DCOM och .NET.
Källor
- ↑ RFC2768
- ↑ Wolfgang Emmerich, "Software Engineering and Middleware: a Roadmap", in Proceedings of the Conference on The Future of Software Engineering (ICSE '00), ACM, 2000, pp. 117-129
- ↑ Internet2
- ↑ Introduktion till OOM