I am going to implement a server application that should update client software remotely. Clients mostly use pull mechanism for receiving updated software.
As a beginner I am looking for architectures to implement this application. And I know that Life Cycle layer of OSGi would give such service.
I want to know is there any other architectures that give similar service to clients?
Comparable Architectures With OSGi?
218 Views Asked by Reza At
1
There are 1 best solutions below
Related Questions in ARCHITECTURE
- I want to be able to use 4 different variables in a select statement in c ++
- llvm headers do not compile under msvc 2013
- VC++ .net: Functionality from managed DLL is not exported
- Add a picture to Picture Control in a dialog box (error RC2108: expected numerical dialog constant)
- Within a .vcxproj file what are the possible values for the <ConfigurationType> and what do those values mean?
- converting string to a double in visual c++ by parsing
- How to integrate opencv C++ codings with windows application?
- Create string with ESC characters
- What does the thing between "class" and the class name in VC++ mean?
- How to assign (Root)Folder ID in C++? Wherein, those files and folder under it would have the same ID as the RootFolder
Related Questions in OSGI
- I want to be able to use 4 different variables in a select statement in c ++
- llvm headers do not compile under msvc 2013
- VC++ .net: Functionality from managed DLL is not exported
- Add a picture to Picture Control in a dialog box (error RC2108: expected numerical dialog constant)
- Within a .vcxproj file what are the possible values for the <ConfigurationType> and what do those values mean?
- converting string to a double in visual c++ by parsing
- How to integrate opencv C++ codings with windows application?
- Create string with ESC characters
- What does the thing between "class" and the class name in VC++ mean?
- How to assign (Root)Folder ID in C++? Wherein, those files and folder under it would have the same ID as the RootFolder
Related Questions in SERVER-APPLICATION
- I want to be able to use 4 different variables in a select statement in c ++
- llvm headers do not compile under msvc 2013
- VC++ .net: Functionality from managed DLL is not exported
- Add a picture to Picture Control in a dialog box (error RC2108: expected numerical dialog constant)
- Within a .vcxproj file what are the possible values for the <ConfigurationType> and what do those values mean?
- converting string to a double in visual c++ by parsing
- How to integrate opencv C++ codings with windows application?
- Create string with ESC characters
- What does the thing between "class" and the class name in VC++ mean?
- How to assign (Root)Folder ID in C++? Wherein, those files and folder under it would have the same ID as the RootFolder
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
If you're writing an Eclipse based application then p2 is the probably the simplest way to go. But if your application is either maven built or you're intending to run more generically on other OSGi containers (Karaf, Felix etc) then you should consider an OSGi Bundle Repository (see standard spec) such as the Felix implementation. If the OBR doesn't quite do what you want, then is API is exposed so you can manipulate it.
The OSGi lifecycle you refer to will give you true hot-deploy (as well as other "perks" of modularity) but the automatic update functionality is much more high level and not part of the framework core (container don't have to implement a remote update mechanism to be compliant).
Where I work we're using Karaf XML features (sets of versioned bundles constituting functionality or an entire application) which are created as part of maven build. From the OSGi shell we can use commands to instruct the OSGi container to find and install these features. This is really neat from a controlled deploy point of view, but if you want fully automatic updates then an OBR is what you want.
If your question refers to alternatives to OSGi as the basis for an update mechanism, then you're looking at things like webstart (JNLP) etc - which will only give you updates at start up time.
IMO OSGi is worth investigating as it's very pleasant to code with and deploy to. As an update/plugin mechanism it cannot really be beaten and you can embed the framework or customize it easily.