SteveSandersonMS / WebWindow

.NET Core library to open native OS windows containing web UI on Windows, Mac, and Linux. Experimental.
Apache License 2.0
1.98k stars 215 forks source link

Similar project #11

Closed JBildstein closed 4 years ago

JBildstein commented 4 years ago

Hi,

stumbled upon your blog recently and realized how similar my project is: https://github.com/JBildstein/SpiderEye I took a bit a different approach tough and used only C# (and don't have anything Blazor specific).

Could be fun to collaborate/exchange on this subject a bit :)

SteveSandersonMS commented 4 years ago

Very interesting - thanks for letting me know!

It is interesting to see how far you’ve been able to get without writing any native code. I guess there’s a trade off between the convenience of only writing C# versus the ability to manage some aspects of state on the C++ side.

Does your published package work on all the supported platforms, or does the developer have to reference a different one for each platform? It looks like the latter, though maybe I’m misinterpreting. If I am right you might want to use the technique used in WebWindow so there’s only one package and it works everywhere (i.e different binaries for each RID).

JBildstein commented 4 years ago

There is definitely some trade off, especially when it comes to macOS. Calling Objective C functions is quite a pain. But overall I prefer the C# approach for the portability (e.g. compiling/intellisense on every platform) and ease of development (once the native stuff is wrapped up nicely).

Yes it's a different package for each platform. I tried for hours to get it into a single package but just couldn't get it to work (the documentation is a bit thin on that subject). I think it's ok though because I already need separate projects for each platform due to the different project SDK for Windows (Microsoft.NET.Sdk.WindowsDesktop) vs macOS/Linux (Microsoft.NET.Sdk). I might also add platform specific functionality so it'd be necessary anyway.

You used WebView2 on Windows, right? I'd love to implement it too but I don't think it's available for .Net yet. Do you have some insight on when it'll come out?