In the intelligence community, intelligence is defined as the right information to the right party at the right time. This definition also applies to business intelligence used by government and financial institutions, patient information used by healthcare providers and meteorological and geological reports provided by research institutions and environmental agencies. Modern software development has to tackle the problems associated with building large and complex distributed systems that have to deliver business value in a reliable and timely fashion; even the best prediction has no value if it is delivered after the fact. It is imperative that the producers in a larger system are responsible for publishing their output to minimize the lead-time for consumers. Using regular web services, the consumer can only check for new data by polling the producer. In a system with many consumers, resources are wasted handling these status requests. Instead of the client interacting with service provider, the client should be reacting to it. The reactive programming model supports building systems with these properties. On the .NET platform, the Reactive Extensions library provides functionality for creating reactive applications by composing functions that operate on asynchronous event streams. The library provides powerful tools for building reactive programs, unfortunately it does not contain an abstraction for inter-process event streams that is needed for building distributed reactive systems. This thesis presents the design and implementation of a framework for creating and using observable web services as a means to bridge the inter-process gap that exist when building a system using Reactive Extensions. The solution is based on a conceptual modeled created by extending the web service architecture. The solution is implemented as a framework made up by two parts; a service component used for creating observable web services and client component that connects to an observable web service and generates code used for subscribing to events exposed by that service. The client subscription functionality integrates with Reactive Extensions, making it possible to build reactive and distributed systems. Integration tests are used to verify that the implementation fulfils the requirements specified for the conceptual model. / I underrättelsevärlden definieras en underrättelse som väsentlig information förmedlad till rätt instans vid rätt tidpunkt. Samma definition gäller för omvärldsanalys som används av regeringar och finansinstitut, patientinformation som används av vårdaktörer och metrologiska och geologiska rapporter som tillhandahålls av forskningsinstitut och miljöorganisationer. Modern mjukvaruutveckling måste lösa problem associerade med att bygga stora, komplexa och distribuerade system som på ett tillförlitligt sätt ska leverera företagsnytta i rätt tid; även den bästa förutsägelsen är utan värde om den levereras för sent. Det är absolut nödvändigt producenter i ett större system ansvarar för att publicera sitt data så att konsumenter kan agera med så lite ledtid som möjligt. Vid användande av vanliga webtjänster måste klienten aktivt fråga om ny data finns tillgänglig. I ett system med många användare slösas resurser på att hantera statusefterfrågningar. Istället för att klienten interagerar interaktivt med tjänsten, borde den istället reagera reaktivt. Med den reaktiva programmeringsmodellen stöds systemkonstruktion med dessa egenskaper. På .NET-plattformen tillhandahåller kodbiblioteket Reactive Extensions funktionalitet för att skapa reaktiva applikationer genom skapandet av funktioner som arbetar med asynkrona händelseströmmar. Biblioteket tillhandahåller kraftfulla verktyg för utformningen av reaktiva program, dock innehåller den inte en abstraktion för arbete med händelseströmmar som rör sig mellan olika processer, en nödvändighet för skapandet av distribuerade reaktiva system. Denna uppsats presenterar den bakomliggande designen och implementationen av ett ramverk för skapandet och användandet av observerbara webtjänster vars syfte är att brygga händelseströmmar mellan olika processer. Lösningen är baserad på en konceptuell modell som bygger på arkitekturen för webbtjänster. Den är implementerad som ett ramverk som består av två delar; en tjänstekomponent som används för att skapa observerbara webbtjänster och klientkomponent som ansluter till en observerbar webbtjänst och genererar kod som används för att prenumerera på händelser som exponeras av denna tjänst. Prenumerationsfunktionaliteten är skapad för att fungera med Reactive Extensions och gör det möjligt att bygga reaktiva och distribuerade system. Integrationstest används för att kontrollera att ramverket uppfyller de krav som anges för den konceptuella modellen.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-177576 |
Date | January 2015 |
Creators | Zaccheus, Stan-Erik |
Publisher | KTH, Skolan för informations- och kommunikationsteknik (ICT) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-ICT-EX ; 2015:150 |
Page generated in 0.0027 seconds