SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Creating a Service
Platform for .NET
Clement EscoffierClement Escoffier –– PhD StudentPhD Student
University ofUniversity of GrenobleGrenoble
LSRLSR--IMAG :IMAG : LogicielsLogiciels,, SystSystèèmesmes && RRééseauxseaux
•• LSR :LSR :
–– Software, Systems & NetworksSoftware, Systems & Networks
–– IMAG federationIMAG federation
–– Member of theMember of the ObjectObjectWebWeb consortiumconsortium
ObjectObjectWebWeb
•• ObjectObjectWebWeb
–– Open Source MiddlewareOpen Source Middleware
–– ConsortiumConsortium
•• NonNon--profit, open, business neutralprofit, open, business neutral
•• IndustryIndustry--grade projectsgrade projects
•• Compliance with open standardsCompliance with open standards
ContextContext
•• OSGi specifications areOSGi specifications are JavaJava--centriccentric
•• Microsoft .NETMicrosoft .NET
–– Virtual MachineVirtual Machine
–– Well knownWell known
–– Already deployed with Windows XPAlready deployed with Windows XP
–– Able to load and to unload dynamic codeAble to load and to unload dynamic code
•• Why not implement OSGi R3 specifications onWhy not implement OSGi R3 specifications on
.NET ?.NET ?
OutlineOutline
•• .NET overview.NET overview
•• Goals ofGoals of OSGi.NETOSGi.NET
•• Issues & alternative approachesIssues & alternative approaches
•• Conclusion & perspectivesConclusion & perspectives
Microsoft .NETMicrosoft .NET
•• .NET initiative announced in July 2000 by Microsoft.NET initiative announced in July 2000 by Microsoft
–– COM+, ASP, XML, SOAP, WSDL, UDDICOM+, ASP, XML, SOAP, WSDL, UDDI
–– Microsoft .NET, Mono, Shared Source CLI, Compact .NETMicrosoft .NET, Mono, Shared Source CLI, Compact .NET
•• .NET Goals :.NET Goals :
–– Distributed computing and mainly InternetDistributed computing and mainly Internet
–– ComponentizationComponentization
–– Enterprise servicesEnterprise services
Operating System
.NET
Enterprise
Servers
.NET
Framework
.NET
Building
Block Services
Exchange
Server;
SQL Server
…
Microsoft
Passport,
…
Microsoft Visual Studio .NET
.NET Framework Overview.NET Framework Overview
•• CLR : Common Language RuntimeCLR : Common Language Runtime
–– Support of several languages (C#, J#,Support of several languages (C#, J#, Cobol.NETCobol.NET))
–– Interpretation of MSIL CodeInterpretation of MSIL Code
Operating System
Common Language Runtime
(debug, exception, JIT …)
Framework Base Classes
Data & XML classes
Web
Services
Web
Forms
Win
Forms
Framework
.NET Framework Overview : Assembly.NET Framework Overview : Assembly
•• Assemblies :Assemblies :
–– Set of classes, resources and metadataSet of classes, resources and metadata
–– Support of versionSupport of version
–– Possibility to sign an assemblyPossibility to sign an assembly
–– Unit of packaging & deploymentUnit of packaging & deployment
–– Unit of loadingUnit of loading
.NET Framework Overview : Application Domain.NET Framework Overview : Application Domain
•• Application Domain (Application Domain (AppdomainAppdomain))
–– Isolated Execution EnvironmentIsolated Execution Environment
•• An application runs in an application domainAn application runs in an application domain
•• Several application domains in one CLRSeveral application domains in one CLR
•• Virtual processVirtual process
–– Assemblies are loaded inside application domainAssemblies are loaded inside application domain
–– Unloading unitUnloading unit
Common Language Runtime
AppDomain1 AppDomain2
ASM 1 ASM 2
ASM1.dll
ASM2.dll
ASM3.dllASM 3
.NET Framework Overview : Java.NET Framework Overview : Java vsvs .NET.NET
JavaJava .NET.NET
Virtual MachineVirtual Machine JVMJVM CLRCLR
LanguagesLanguages
JavaJava
(supported by Sun)(supported by Sun)
C# (ECMA & ISO)C# (ECMA & ISO)
J#, VB.NETJ#, VB.NET ……
Internal languageInternal language Byte codeByte code MSILMSIL
Deployment UnitDeployment Unit Classes, JARClasses, JAR AssembliesAssemblies
Load unitLoad unit ClassesClasses AssembliesAssemblies
Unload UnitUnload Unit
Classes (GarbageClasses (Garbage
Collector)Collector)
Application domainApplication domain
OSGi.NETOSGi.NET : Goals: Goals
•• Implement OSGi specification on .NETImplement OSGi specification on .NET
MailService
MailwithTemp
Temperature
HTTPServer
VideoontheWeb
Camera
•• Service InvocationService Invocation
•• Dynamic Code LoadingDynamic Code Loading
•• Dynamic Code UnloadingDynamic Code Unloading
•• Code SharingCode Sharing
Operating System
Common Language Runtime
OSGi.NET
•• Service arrivalService arrival
and departureand departure
Key Technical DifferencesKey Technical Differences
•• Technical differences between .NET and JavaTechnical differences between .NET and Java
–– Class loading flexibilityClass loading flexibility
–– Loading / Unloading systemLoading / Unloading system
–– Code sharingCode sharing
•• No direct way to map OSGi features onto .NETNo direct way to map OSGi features onto .NET
Alternative Implementation ApproachesAlternative Implementation Approaches
•• Four alternative approachesFour alternative approaches
–– MonoMono--application domainapplication domain
–– MultiMulti--application domainsapplication domains
–– Hybrid alternativeHybrid alternative
–– CLR modificationCLR modification
MonoMono--application domainapplication domain
•• 1 Bundle = 1 Assembly1 Bundle = 1 Assembly
•• 1 Application domain for1 Application domain for OSGi.NETOSGi.NET & Services& Services
Operating System
Common Language Runtime
ASM 1 :
Provider
Loader
Application domain
ASM 2 :
Requester
ASM 3 :
Contract
Registry
MonoMono--Application DomainApplication Domain
•• Service invocationService invocation ………………………………………………………….... OkOk
•• Service arrival & departureService arrival & departure …………....………………………….. OkOk
•• Dynamic loadingDynamic loading ……………………..………………………………………… OkOk
•• Code sharingCode sharing ……………………………………………………………………...... NoNo
–– All loaded code is shared inside an application domainAll loaded code is shared inside an application domain
–– Does not support private codeDoes not support private code
•• Dynamic unloadingDynamic unloading ………………………………………………………….. NoNo
MultiMulti--Application DomainApplication Domain
•• 1 bundle inside 1 application domain1 bundle inside 1 application domain
•• OSGi.NETOSGi.NET in one application domain, bundlesin one application domain, bundles
reside in their own application domainsreside in their own application domains
.NET Remoting
Operating System
Common Language Runtime
AppDomain 1
AppDomain 0 : OSGi.NET
Provider
AppDomain 3
Contract
AppDomain 2
Requester
ContractContract
LoaderRegistry
MultiMulti--Application DomainApplication Domain
•• Service invocationService invocation ………………………………………………………… Ok/NoOk/No
–– Service invocation must use .NETService invocation must use .NET RemotingRemoting
–– Significant overheadSignificant overhead
•• Service arrival & departureService arrival & departure ……....……………………………….. OkOk
•• Dynamic loadingDynamic loading …………..…………………………………………………… OkOk
–– Not fully transparentNot fully transparent
•• Code sharingCode sharing ……………………………………………………………………...... NoNo
–– All code is privateAll code is private
•• Dynamic unloadingDynamic unloading ………………………………………………………….. OkOk
Hybrid SolutionHybrid Solution
•• Mix the 2 previous solutionsMix the 2 previous solutions
–– Different services set inside application domainDifferent services set inside application domain
–– Allow bindings inside & outside application domainAllow bindings inside & outside application domain
–– Different range of services (local /Different range of services (local / ““remoteremote”” services)services)
–– Several registries (local and global)Several registries (local and global)
•• Trade off for application designerTrade off for application designer
–– How to group services into application domainsHow to group services into application domains
•• Hypothesized, but not implementedHypothesized, but not implemented
Hybrid SolutionHybrid Solution
AppDomain 2
Operating System
Common Language Runtime
AppDomain 1
AppDomain 0 : OSGi.NET
Remote Provider Requester
Contract2Contract1
LoaderGlobal Registry
Local Provider
Registry
Contract2
Registry
The Hybrid SolutionThe Hybrid Solution
•• Service invocationService invocation …………………………………………………………………………..……....OkOk
–– Choice between local service & remote serviceChoice between local service & remote service
•• Service apparition & departureService apparition & departure …………………………………………..……........OkOk
•• Dynamic loadingDynamic loading ……………………………………………………………………....……......……OkOk
•• Code sharingCode sharing ……………………………………………………………………………………..……....NoNo
–– Inside application domain, all code is sharedInside application domain, all code is shared
–– Outside application domain, no code sharingOutside application domain, no code sharing
•• Dynamic unloadingDynamic unloading ………………………………………………………………..……......……OkOk
–– Unload an application domain = unload a set ofUnload an application domain = unload a set of
servicesservices
CLR ModificationCLR Modification
•• Introspection of an application domainIntrospection of an application domain
Operating System
Common Language Runtime
ASM1
Application domain
Stub Heap
Low
Frequency
Heap
High
Frequency
Heap
CL
.NET
Object1
.NET
Object1
.NET
Object2
.NET
Object2
Class 2
Set and look in
the LFP
Set and look
in the same memory
ASM2
Class 1
CL
Class 1Class 1
Class 2Class 2
CLR Modification in ROTORCLR Modification in ROTOR
•• The approach :The approach :
–– modification of the internal class loadermodification of the internal class loader
•• Enable private code sharingEnable private code sharing
–– Add a garbage collectorAdd a garbage collector
•• Enable unloadingEnable unloading
Operating System
Common Language Runtime
Requester
Application domain
Stub Heap
Low
Frequency
Heap
High
Frequency
Heap CL
Provider
CL
.NET
Object1
.NET
Object1
.NET
Object2
.NET
Object2
Requester-1
Contract-1
LoaderRegistry
Contract
CL
Provider-1
CLR ModificationCLR Modification
•• Service InvocationService Invocation …………………………………………………………....OkOk
•• Service apparition & departureService apparition & departure ………………………………..OkOk
•• Dynamic LoadingDynamic Loading ………………………………………………………………OkOk
•• Code sharingCode sharing ……………………………………………………………………......OkOk
•• Dynamic UnloadingDynamic Unloading …………………………………………………………OkOk
•• But itBut it’’s no longer standard .NET and was toos no longer standard .NET and was too
complex to implement within our time constraintscomplex to implement within our time constraints
Alternatives SummaryAlternatives Summary
1 2 3 4
Hybrid
solution
CLR
Modification
ROTOR with
a lot of
modifications
Standard
CLR
Reference
Mono
application
domain
Multi
Application
Domains
OSGi
Dynamism of
services
Dynamic
code loading
Dynamic
code
unloading
Direct
Invocation
Virtual
Machine
Standard
CLR
Standard
CLR
Standard
JVM
(>= 1.1)
ConclusionConclusion
•• .NET.NET
–– WellWell--known virtual machineknown virtual machine
–– Distributed with Windows XPDistributed with Windows XP
•• OSGi technology is JavaOSGi technology is Java--centriccentric
•• Tried to implement OSGi on .NET =>Tried to implement OSGi on .NET => OSGi.NetOSGi.Net
–– Four alternativesFour alternatives
•• Is any alternative fully compliant with OSGiIs any alternative fully compliant with OSGi
specification ?specification ?
–– NoNo
PerspectivesPerspectives
•• OSGi Release 4OSGi Release 4
–– More difficult (more sophisticated class sharing &More difficult (more sophisticated class sharing &
management)management)
•• Waiting the next release of the .NET FrameworkWaiting the next release of the .NET Framework
–– 2007 ??2007 ??
–– Not yet clear :Not yet clear :
•• Unloading assemblies individuallyUnloading assemblies individually
•• .NET.NET RemotingRemoting optimizationsoptimizations
Questions ???Questions ???
ROTORROTOR
•• Shared Source CLI :Shared Source CLI :
–– Distributed by MicrosoftDistributed by Microsoft
–– Very close with the official frameworkVery close with the official framework
–– Contains VM, CompilersContains VM, Compilers ……
•• Some numbersSome numbers
–– 1.9 millions of LOC (C++, C#, MSIL, Assembler)1.9 millions of LOC (C++, C#, MSIL, Assembler)
–– 5900 sources files, 9700 files5900 sources files, 9700 files
–– Kernel (Kernel (mscorlibmscorlib) : 867 classes in C++) : 867 classes in C++
•• DiscussionsDiscussions
–– With the DOTNETWith the DOTNET--ROTOR mailing listROTOR mailing list
–– Microsoft newsgroupsMicrosoft newsgroups
MultiMulti--Domain Approach : BenchmarkDomain Approach : Benchmark
•• Method invocation timeMethod invocation time
–– Calls intraCalls intra--application domainapplication domain vsvs Calls interCalls inter--applicationapplication
domaindomain
–– Processor 1Processor 1 GhzGhz, RAM 768 Mo, Windows XP SP2,, RAM 768 Mo, Windows XP SP2,
CLR 1.1CLR 1.1
Void Small Object Medium Object Huge Object
0
20
40
60
80
100
120
140
160
180
Temps des appels locaux
Tempsenms
Void Small Object Medium
Object
Huge Object
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
11000
12000
Appel locaux via .Net Remoting
Tempsenms
Intra Domain Calls Inter Domains Calls
Timeinms
Timeinms

Weitere ähnliche Inhalte

Was ist angesagt?

Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsArnaud Bouchez
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesCharlie Gracie
 
Conole vilnius 3_nov
Conole vilnius 3_novConole vilnius 3_nov
Conole vilnius 3_novgrainne
 
Enabling Java: Windows on Arm64 - A Success Story!
Enabling Java: Windows on Arm64 - A Success Story!Enabling Java: Windows on Arm64 - A Success Story!
Enabling Java: Windows on Arm64 - A Success Story!Monica Beckwith
 
DVB-I masterclass introductions-packaging-encoding-v2
DVB-I masterclass introductions-packaging-encoding-v2DVB-I masterclass introductions-packaging-encoding-v2
DVB-I masterclass introductions-packaging-encoding-v2Rufael Mekuria
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Eclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process OrchestrationEclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process OrchestrationDietmar Schmidt
 
NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017Mark Kilgard
 

Was ist angesagt? (13)

Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side Notifications
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
SDAccel Design Contest: Intro
SDAccel Design Contest: IntroSDAccel Design Contest: Intro
SDAccel Design Contest: Intro
 
Conole vilnius 3_nov
Conole vilnius 3_novConole vilnius 3_nov
Conole vilnius 3_nov
 
FD.io - The Universal Dataplane
FD.io - The Universal DataplaneFD.io - The Universal Dataplane
FD.io - The Universal Dataplane
 
Enabling Java: Windows on Arm64 - A Success Story!
Enabling Java: Windows on Arm64 - A Success Story!Enabling Java: Windows on Arm64 - A Success Story!
Enabling Java: Windows on Arm64 - A Success Story!
 
DVB-I masterclass introductions-packaging-encoding-v2
DVB-I masterclass introductions-packaging-encoding-v2DVB-I masterclass introductions-packaging-encoding-v2
DVB-I masterclass introductions-packaging-encoding-v2
 
Understanding open max il
Understanding open max ilUnderstanding open max il
Understanding open max il
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Eclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process OrchestrationEclipse Con2009 Practical Process Orchestration
Eclipse Con2009 Practical Process Orchestration
 
Erlang on OSv
Erlang on OSvErlang on OSv
Erlang on OSv
 
IPv6
IPv6IPv6
IPv6
 
NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017
 

Ähnlich wie Creating a Service Platform for .NET - Clément Escoffier, University of Grenoble

Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...
Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...
Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...mfrancis
 
Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...
Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...
Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...mfrancis
 
2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...
2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...
2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...mfrancis
 
Eating our Own Dogfood - How Automic Automates
Eating our Own Dogfood - How Automic AutomatesEating our Own Dogfood - How Automic Automates
Eating our Own Dogfood - How Automic AutomatesCA | Automic Software
 
Eclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBM
Eclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBMEclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBM
Eclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBMmfrancis
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemTomoya Fujita
 
Aws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, ImplementationAws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, Implementationserkancapkan
 
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...NRB
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Patrick Chanezon
 
Breaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersBreaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersAmazon Web Services
 
Tech trends 2018 2019
Tech trends 2018 2019Tech trends 2018 2019
Tech trends 2018 2019Johan Norm
 
Interop 2017 - Managing Containers in Production
Interop 2017 - Managing Containers in ProductionInterop 2017 - Managing Containers in Production
Interop 2017 - Managing Containers in ProductionBrian Gracely
 
InterConnect2016_4932
InterConnect2016_4932InterConnect2016_4932
InterConnect2016_4932Clare Carty
 
How we scale up our architecture and organization at Dailymotion
How we scale up our architecture and organization at DailymotionHow we scale up our architecture and organization at Dailymotion
How we scale up our architecture and organization at DailymotionStanislas Chollet
 
Open Audit
Open AuditOpen Audit
Open Auditncspa
 
Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015Patrick Chanezon
 
Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...
Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...
Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...mfrancis
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePiotr Pelczar
 

Ähnlich wie Creating a Service Platform for .NET - Clément Escoffier, University of Grenoble (20)

Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...
Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...
Infusion of OSGi Technology into a J2EE Application Server - Mikaël Desertot...
 
Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...
Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...
Using OSGi R4 Service Platform in Vehicle Embedded Systems - Miguel Lopez, So...
 
2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...
2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...
2005 OSGi Alliance Status - John Barr, Ph.D., Past President, OSGi Alliance; ...
 
Eating our Own Dogfood - How Automic Automates
Eating our Own Dogfood - How Automic AutomatesEating our Own Dogfood - How Automic Automates
Eating our Own Dogfood - How Automic Automates
 
Eclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBM
Eclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBMEclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBM
Eclipse the Rich Client Platform - Jeff McAffer, Eclipse Architect, IBM
 
Kubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster SystemKubernetes Robotics Edge Cluster System
Kubernetes Robotics Edge Cluster System
 
Aws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, ImplementationAws Deployment Tools - Overview, Details, Implementation
Aws Deployment Tools - Overview, Details, Implementation
 
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
The NRB Group mainframe day 2021 - Containerisation on Z - Paul Pilotto - Seb...
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
 
Breaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersBreaking the Monolith Road to Containers
Breaking the Monolith Road to Containers
 
Tech trends 2018 2019
Tech trends 2018 2019Tech trends 2018 2019
Tech trends 2018 2019
 
Interop 2017 - Managing Containers in Production
Interop 2017 - Managing Containers in ProductionInterop 2017 - Managing Containers in Production
Interop 2017 - Managing Containers in Production
 
InterConnect2016_4932
InterConnect2016_4932InterConnect2016_4932
InterConnect2016_4932
 
How we scale up our architecture and organization at Dailymotion
How we scale up our architecture and organization at DailymotionHow we scale up our architecture and organization at Dailymotion
How we scale up our architecture and organization at Dailymotion
 
Open Audit
Open AuditOpen Audit
Open Audit
 
Micro-services meetup
Micro-services meetupMicro-services meetup
Micro-services meetup
 
Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015
 
Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...
Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...
Apache Directory and the OSGi Service Platform - Enrique Rodriguez, PMC Membe...
 
Distributing OSGi
Distributing OSGiDistributing OSGi
Distributing OSGi
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
 

Mehr von mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruumfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...mfrancis
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)mfrancis
 

Mehr von mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Kürzlich hochgeladen

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Kürzlich hochgeladen (20)

"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Creating a Service Platform for .NET - Clément Escoffier, University of Grenoble

  • 1.
  • 2. Creating a Service Platform for .NET Clement EscoffierClement Escoffier –– PhD StudentPhD Student University ofUniversity of GrenobleGrenoble
  • 3. LSRLSR--IMAG :IMAG : LogicielsLogiciels,, SystSystèèmesmes && RRééseauxseaux •• LSR :LSR : –– Software, Systems & NetworksSoftware, Systems & Networks –– IMAG federationIMAG federation –– Member of theMember of the ObjectObjectWebWeb consortiumconsortium
  • 4. ObjectObjectWebWeb •• ObjectObjectWebWeb –– Open Source MiddlewareOpen Source Middleware –– ConsortiumConsortium •• NonNon--profit, open, business neutralprofit, open, business neutral •• IndustryIndustry--grade projectsgrade projects •• Compliance with open standardsCompliance with open standards
  • 5. ContextContext •• OSGi specifications areOSGi specifications are JavaJava--centriccentric •• Microsoft .NETMicrosoft .NET –– Virtual MachineVirtual Machine –– Well knownWell known –– Already deployed with Windows XPAlready deployed with Windows XP –– Able to load and to unload dynamic codeAble to load and to unload dynamic code •• Why not implement OSGi R3 specifications onWhy not implement OSGi R3 specifications on .NET ?.NET ?
  • 6. OutlineOutline •• .NET overview.NET overview •• Goals ofGoals of OSGi.NETOSGi.NET •• Issues & alternative approachesIssues & alternative approaches •• Conclusion & perspectivesConclusion & perspectives
  • 7. Microsoft .NETMicrosoft .NET •• .NET initiative announced in July 2000 by Microsoft.NET initiative announced in July 2000 by Microsoft –– COM+, ASP, XML, SOAP, WSDL, UDDICOM+, ASP, XML, SOAP, WSDL, UDDI –– Microsoft .NET, Mono, Shared Source CLI, Compact .NETMicrosoft .NET, Mono, Shared Source CLI, Compact .NET •• .NET Goals :.NET Goals : –– Distributed computing and mainly InternetDistributed computing and mainly Internet –– ComponentizationComponentization –– Enterprise servicesEnterprise services Operating System .NET Enterprise Servers .NET Framework .NET Building Block Services Exchange Server; SQL Server … Microsoft Passport, … Microsoft Visual Studio .NET
  • 8. .NET Framework Overview.NET Framework Overview •• CLR : Common Language RuntimeCLR : Common Language Runtime –– Support of several languages (C#, J#,Support of several languages (C#, J#, Cobol.NETCobol.NET)) –– Interpretation of MSIL CodeInterpretation of MSIL Code Operating System Common Language Runtime (debug, exception, JIT …) Framework Base Classes Data & XML classes Web Services Web Forms Win Forms Framework
  • 9. .NET Framework Overview : Assembly.NET Framework Overview : Assembly •• Assemblies :Assemblies : –– Set of classes, resources and metadataSet of classes, resources and metadata –– Support of versionSupport of version –– Possibility to sign an assemblyPossibility to sign an assembly –– Unit of packaging & deploymentUnit of packaging & deployment –– Unit of loadingUnit of loading
  • 10. .NET Framework Overview : Application Domain.NET Framework Overview : Application Domain •• Application Domain (Application Domain (AppdomainAppdomain)) –– Isolated Execution EnvironmentIsolated Execution Environment •• An application runs in an application domainAn application runs in an application domain •• Several application domains in one CLRSeveral application domains in one CLR •• Virtual processVirtual process –– Assemblies are loaded inside application domainAssemblies are loaded inside application domain –– Unloading unitUnloading unit Common Language Runtime AppDomain1 AppDomain2 ASM 1 ASM 2 ASM1.dll ASM2.dll ASM3.dllASM 3
  • 11. .NET Framework Overview : Java.NET Framework Overview : Java vsvs .NET.NET JavaJava .NET.NET Virtual MachineVirtual Machine JVMJVM CLRCLR LanguagesLanguages JavaJava (supported by Sun)(supported by Sun) C# (ECMA & ISO)C# (ECMA & ISO) J#, VB.NETJ#, VB.NET …… Internal languageInternal language Byte codeByte code MSILMSIL Deployment UnitDeployment Unit Classes, JARClasses, JAR AssembliesAssemblies Load unitLoad unit ClassesClasses AssembliesAssemblies Unload UnitUnload Unit Classes (GarbageClasses (Garbage Collector)Collector) Application domainApplication domain
  • 12. OSGi.NETOSGi.NET : Goals: Goals •• Implement OSGi specification on .NETImplement OSGi specification on .NET MailService MailwithTemp Temperature HTTPServer VideoontheWeb Camera •• Service InvocationService Invocation •• Dynamic Code LoadingDynamic Code Loading •• Dynamic Code UnloadingDynamic Code Unloading •• Code SharingCode Sharing Operating System Common Language Runtime OSGi.NET •• Service arrivalService arrival and departureand departure
  • 13. Key Technical DifferencesKey Technical Differences •• Technical differences between .NET and JavaTechnical differences between .NET and Java –– Class loading flexibilityClass loading flexibility –– Loading / Unloading systemLoading / Unloading system –– Code sharingCode sharing •• No direct way to map OSGi features onto .NETNo direct way to map OSGi features onto .NET
  • 14. Alternative Implementation ApproachesAlternative Implementation Approaches •• Four alternative approachesFour alternative approaches –– MonoMono--application domainapplication domain –– MultiMulti--application domainsapplication domains –– Hybrid alternativeHybrid alternative –– CLR modificationCLR modification
  • 15. MonoMono--application domainapplication domain •• 1 Bundle = 1 Assembly1 Bundle = 1 Assembly •• 1 Application domain for1 Application domain for OSGi.NETOSGi.NET & Services& Services Operating System Common Language Runtime ASM 1 : Provider Loader Application domain ASM 2 : Requester ASM 3 : Contract Registry
  • 16. MonoMono--Application DomainApplication Domain •• Service invocationService invocation ………………………………………………………….... OkOk •• Service arrival & departureService arrival & departure …………....………………………….. OkOk •• Dynamic loadingDynamic loading ……………………..………………………………………… OkOk •• Code sharingCode sharing ……………………………………………………………………...... NoNo –– All loaded code is shared inside an application domainAll loaded code is shared inside an application domain –– Does not support private codeDoes not support private code •• Dynamic unloadingDynamic unloading ………………………………………………………….. NoNo
  • 17. MultiMulti--Application DomainApplication Domain •• 1 bundle inside 1 application domain1 bundle inside 1 application domain •• OSGi.NETOSGi.NET in one application domain, bundlesin one application domain, bundles reside in their own application domainsreside in their own application domains .NET Remoting Operating System Common Language Runtime AppDomain 1 AppDomain 0 : OSGi.NET Provider AppDomain 3 Contract AppDomain 2 Requester ContractContract LoaderRegistry
  • 18. MultiMulti--Application DomainApplication Domain •• Service invocationService invocation ………………………………………………………… Ok/NoOk/No –– Service invocation must use .NETService invocation must use .NET RemotingRemoting –– Significant overheadSignificant overhead •• Service arrival & departureService arrival & departure ……....……………………………….. OkOk •• Dynamic loadingDynamic loading …………..…………………………………………………… OkOk –– Not fully transparentNot fully transparent •• Code sharingCode sharing ……………………………………………………………………...... NoNo –– All code is privateAll code is private •• Dynamic unloadingDynamic unloading ………………………………………………………….. OkOk
  • 19. Hybrid SolutionHybrid Solution •• Mix the 2 previous solutionsMix the 2 previous solutions –– Different services set inside application domainDifferent services set inside application domain –– Allow bindings inside & outside application domainAllow bindings inside & outside application domain –– Different range of services (local /Different range of services (local / ““remoteremote”” services)services) –– Several registries (local and global)Several registries (local and global) •• Trade off for application designerTrade off for application designer –– How to group services into application domainsHow to group services into application domains •• Hypothesized, but not implementedHypothesized, but not implemented
  • 20. Hybrid SolutionHybrid Solution AppDomain 2 Operating System Common Language Runtime AppDomain 1 AppDomain 0 : OSGi.NET Remote Provider Requester Contract2Contract1 LoaderGlobal Registry Local Provider Registry Contract2 Registry
  • 21. The Hybrid SolutionThe Hybrid Solution •• Service invocationService invocation …………………………………………………………………………..……....OkOk –– Choice between local service & remote serviceChoice between local service & remote service •• Service apparition & departureService apparition & departure …………………………………………..……........OkOk •• Dynamic loadingDynamic loading ……………………………………………………………………....……......……OkOk •• Code sharingCode sharing ……………………………………………………………………………………..……....NoNo –– Inside application domain, all code is sharedInside application domain, all code is shared –– Outside application domain, no code sharingOutside application domain, no code sharing •• Dynamic unloadingDynamic unloading ………………………………………………………………..……......……OkOk –– Unload an application domain = unload a set ofUnload an application domain = unload a set of servicesservices
  • 22. CLR ModificationCLR Modification •• Introspection of an application domainIntrospection of an application domain Operating System Common Language Runtime ASM1 Application domain Stub Heap Low Frequency Heap High Frequency Heap CL .NET Object1 .NET Object1 .NET Object2 .NET Object2 Class 2 Set and look in the LFP Set and look in the same memory ASM2 Class 1 CL Class 1Class 1 Class 2Class 2
  • 23. CLR Modification in ROTORCLR Modification in ROTOR •• The approach :The approach : –– modification of the internal class loadermodification of the internal class loader •• Enable private code sharingEnable private code sharing –– Add a garbage collectorAdd a garbage collector •• Enable unloadingEnable unloading Operating System Common Language Runtime Requester Application domain Stub Heap Low Frequency Heap High Frequency Heap CL Provider CL .NET Object1 .NET Object1 .NET Object2 .NET Object2 Requester-1 Contract-1 LoaderRegistry Contract CL Provider-1
  • 24. CLR ModificationCLR Modification •• Service InvocationService Invocation …………………………………………………………....OkOk •• Service apparition & departureService apparition & departure ………………………………..OkOk •• Dynamic LoadingDynamic Loading ………………………………………………………………OkOk •• Code sharingCode sharing ……………………………………………………………………......OkOk •• Dynamic UnloadingDynamic Unloading …………………………………………………………OkOk •• But itBut it’’s no longer standard .NET and was toos no longer standard .NET and was too complex to implement within our time constraintscomplex to implement within our time constraints
  • 25. Alternatives SummaryAlternatives Summary 1 2 3 4 Hybrid solution CLR Modification ROTOR with a lot of modifications Standard CLR Reference Mono application domain Multi Application Domains OSGi Dynamism of services Dynamic code loading Dynamic code unloading Direct Invocation Virtual Machine Standard CLR Standard CLR Standard JVM (>= 1.1)
  • 26. ConclusionConclusion •• .NET.NET –– WellWell--known virtual machineknown virtual machine –– Distributed with Windows XPDistributed with Windows XP •• OSGi technology is JavaOSGi technology is Java--centriccentric •• Tried to implement OSGi on .NET =>Tried to implement OSGi on .NET => OSGi.NetOSGi.Net –– Four alternativesFour alternatives •• Is any alternative fully compliant with OSGiIs any alternative fully compliant with OSGi specification ?specification ? –– NoNo
  • 27. PerspectivesPerspectives •• OSGi Release 4OSGi Release 4 –– More difficult (more sophisticated class sharing &More difficult (more sophisticated class sharing & management)management) •• Waiting the next release of the .NET FrameworkWaiting the next release of the .NET Framework –– 2007 ??2007 ?? –– Not yet clear :Not yet clear : •• Unloading assemblies individuallyUnloading assemblies individually •• .NET.NET RemotingRemoting optimizationsoptimizations
  • 29. ROTORROTOR •• Shared Source CLI :Shared Source CLI : –– Distributed by MicrosoftDistributed by Microsoft –– Very close with the official frameworkVery close with the official framework –– Contains VM, CompilersContains VM, Compilers …… •• Some numbersSome numbers –– 1.9 millions of LOC (C++, C#, MSIL, Assembler)1.9 millions of LOC (C++, C#, MSIL, Assembler) –– 5900 sources files, 9700 files5900 sources files, 9700 files –– Kernel (Kernel (mscorlibmscorlib) : 867 classes in C++) : 867 classes in C++ •• DiscussionsDiscussions –– With the DOTNETWith the DOTNET--ROTOR mailing listROTOR mailing list –– Microsoft newsgroupsMicrosoft newsgroups
  • 30. MultiMulti--Domain Approach : BenchmarkDomain Approach : Benchmark •• Method invocation timeMethod invocation time –– Calls intraCalls intra--application domainapplication domain vsvs Calls interCalls inter--applicationapplication domaindomain –– Processor 1Processor 1 GhzGhz, RAM 768 Mo, Windows XP SP2,, RAM 768 Mo, Windows XP SP2, CLR 1.1CLR 1.1 Void Small Object Medium Object Huge Object 0 20 40 60 80 100 120 140 160 180 Temps des appels locaux Tempsenms Void Small Object Medium Object Huge Object 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 Appel locaux via .Net Remoting Tempsenms Intra Domain Calls Inter Domains Calls Timeinms Timeinms