mattkol
Joined 8 years ago
Joined 8 years ago
Chromely - https://github.com/mattkol/Chromely was introduced earlier. Thanks to all that gave feedbacks.
Based on demands from some developers, there are new features added - like Websocket implementation for real-time apps development, frame handling (to execute JavaScript functions see - https://github.com/mattkol/Chromely/wiki/Frame-Handling) and "iframe" support.
> Other relevant bits to being lightweight - how fast is the application to start/stop? What's the minimum runtime overhead? etc...
I have not had the bandwidth to check this. My hunch is Chromely may have some edge on this. But we leave that until it is proven or not.
> There are a lot of potential reasons to use something like this ..
I thought so too, so have many developers, thanks for pointing this out.
Appreciate the feedbacks! Thanks.
What has lying got to do with a subjective definition of "lightweight". See discussion on Javascript - https://stackoverflow.com/questions/39797181/why-javascript-...
What does "lightweight" really mean?
The idea that everyone sees "lightweight" and they ONLY think of Chromium size seems an ascription of "lightweight" ONLY to chromium size. I understand that has been a more common approach to chromium based solutions. This is not it here.
I have said in a few of my comments that this is simple referring to "simpler".
See a definition of "lightweight" from wikipedia:
A lightweight programming language is one that is designed to have very small memory footprint, is easy to implement (important when porting a language), and/or has minimalist syntax and features.
https://en.wikipedia.org/wiki/Lightweight_programming_langua...
So if we replace "lightweight programming language" with Chromely, while the small memory footprint, may be arguable false, it is however easier to implememt and minimal features. Note the "and/or" part.
However, I believe @m_fayer is right too. The performance issue can creep up on you if you are not constantly watching it.
The weak-reference used by DelegateCommand in most WPF framework implementations - Prism, MVVMLight, Caliburn.Micro can cause extra headaches if one is not watching it. I have seen memory clogs with InputBindings; I have seen unexplaiined performance issues with ColumnSpan, RowSpan usages, and others issues I can't remember at the moment.
Buttom line is one needs to take C/C++ mindset to WPF to achieve optimal performance - that is you may have to have a strategy to clean up after yourself (just like pointers) and not rely too much on Garbage Collector (GC).
CEF3 still allows single process, but it is only advisable for testing/debugging only. Multi process is recommended for optimal performance and likely some functions may not work well without it. My experience is for simpler apps, single process can still be used.
Chromely is fully configurable and allows single process usage. Please see configuration wiki page at : https://github.com/mattkol/Chromely/wiki/Configuration
Chromely is based on CefGlue, CefSharp that are also based on CEF. So yes, restrictions, unless overridden will pass up from base.
However ... Ajax is one of the options of IPC, and this is common to both CefGlue and CefSharp implementations. The options are:
1. Ajax HTTP/XHR (Xilium.CefGlue, CefSharp) 2..NET/Javascript integration (CefSharp) 3. Generic Message Routing (Xilium.CefGlue)
I see 2 and 3 as the common usage for the CEF .NET community. Ajax may see less usage because it's use can result in other issues -- like cross-origin error and may be more complex for some people.
Like I said, I have just started looking into WebSocket and may soon be implemented for CefGlue apps.
Sure Xamarin.Forms will be a lot more "lightweight".
Chromely is an HTML desktop app.
All the options you mention will end up being traditional (with their own controls) desktop apps with HTML support. Chromely is pure HTML. Chromely is not tied to rigid frontend controls .. you can use any html/javascript/css framework you like.
Chromely does not use WinForm or WPF. Extendable to WinForms and WPF for those who want to.
So, a different approach, if you may.
Contributions are always welcome, via issues raised, or PRs or any other means.
However, as I have mentioned to others in the past, help and contributions are welcome.