Информация об изменениях

Сообщение Re[2]: Blazor Desktop от 24.05.2020 16:28

Изменено 24.05.2020 17:13 Serginio1

Re[2]: Blazor Desktop
Здравствуйте, Rhino, Вы писали:

R>Здравствуйте, Serginio1, Вы писали:


S>>Интересная статья

S>>Exploring lighter alternatives to Electron for hosting a Blazor desktop app
R>Похоронят как Сильвер и скажут что так и нужно было. В пень Блазор.
То есть у блазора нет надежды даже на Вэб?
Сильвер не Blazor Desktop и не Blazor WebAssembly.
Тогда проблема была в Хром https://support.microsoft.com/ru-ru/help/3058254/microsoft-silverlight-may-not-work-in-recent-versions-of-google-chrome
C WebAssembly и Mono это уже другая технология.
А Blazor Desktop это и близко к Сильвер, так как это десктоп для UI использующй Web браузер

Exploring WebWindow examples for Blazor on desktop

static void Main(string[] args)
{
     var window = new WebWindow(".NET Core + Vue.js file explorer");
     window.OnWebMessageReceived += HandleWebMessageReceived;
     window.NavigateToLocalFile("wwwroot/index.html");
     window.WaitForExit();
}


В данном случае можно обрабатывать методы из браузера через OnWebMessageReceived
 window.external.sendMessage(JSON.stringify({

                command: 'navigateTo',

                basePath: app.directoryInfo.name,

                relativePath: relativePath

            }));


И обрабатывать на стороне .Net

 static void HandleWebMessageReceived(object sender, string message)

        {

            var window = (WebWindow)sender;

            var parsedMessage = JsonDocument.Parse(message).RootElement;

            switch (parsedMessage.GetProperty("command").GetString())

            {

                case "navigateTo":


И отсылать обратно
 static void SendCommand(WebWindow window, string commandName, object arg)

        {

            window.SendMessage(JsonSerializer.Serialize(new { command = commandName, arg = arg }));

        }


Это очень близко к CEF CEF, ES6, Angular 2, TypeScript использование классов .Net Core. Создание кроссплатформенного GUI для .Net с помощью CEF


Но можно хостить и блазоровские страницы
https://blog.stevensanderson.com/2019/11/18/2019-11-18-webwindow-a-cross-platform-webview-for-dotnet-core/
static void Main(string[] args)
{
    ComponentsDesktop.Run<Startup>("My Blazor App", "wwwroot/index.html");
}


Напомним, что это не включает в себя WebAssembly, Node.js, или Chromium. Это просто .NET Core работает изначально, напрямую взаимодействуя с собственной технологией веб-рендеринга ОС.


How it works
On Windows, WebWindow uses the new Chromium-based Edge via webview2, assuming you have that browser installed (it could fall back on older Edge if you don’t, but I haven’t implemented that)
On Mac, it uses the OS’s built-in WKWebView, which is the same technology behind Safari
On Linux, it uses WebKitGTK+2, which is yet again a WebKit-based technology
The whole point of this, compared with using Electron, is to produce apps that are smaller to download and use less memory. But does it actually? Here are the stats for download size:

Re[2]: Blazor Desktop
Здравствуйте, Rhino, Вы писали:

R>Здравствуйте, Serginio1, Вы писали:


S>>Интересная статья

S>>Exploring lighter alternatives to Electron for hosting a Blazor desktop app
R>Похоронят как Сильвер и скажут что так и нужно было. В пень Блазор.
То есть у блазора нет надежды даже на Вэб?
Сильвер не Blazor Desktop и не Blazor WebAssembly.
Тогда проблема была в Хром https://support.microsoft.com/ru-ru/help/3058254/microsoft-silverlight-may-not-work-in-recent-versions-of-google-chrome
C WebAssembly и Mono это уже другая технология.
А Blazor Desktop это и близко к Сильвер, так как это десктоп для UI использующй Web браузер

Exploring WebWindow examples for Blazor on desktop

static void Main(string[] args)
{
     var window = new WebWindow(".NET Core + Vue.js file explorer");
     window.OnWebMessageReceived += HandleWebMessageReceived;
     window.NavigateToLocalFile("wwwroot/index.html");
     window.WaitForExit();
}


В данном случае можно обрабатывать методы из браузера через OnWebMessageReceived
 window.external.sendMessage(JSON.stringify({

                command: 'navigateTo',

                basePath: app.directoryInfo.name,

                relativePath: relativePath

            }));


И обрабатывать на стороне .Net

 static void HandleWebMessageReceived(object sender, string message)

        {

            var window = (WebWindow)sender;

            var parsedMessage = JsonDocument.Parse(message).RootElement;

            switch (parsedMessage.GetProperty("command").GetString())

            {

                case "navigateTo":


И отсылать обратно
 static void SendCommand(WebWindow window, string commandName, object arg)

        {

            window.SendMessage(JsonSerializer.Serialize(new { command = commandName, arg = arg }));

        }


Это очень близко к CEF CEF, ES6, Angular 2, TypeScript использование классов .Net Core. Создание кроссплатформенного GUI для .Net с помощью CEF


Но можно хостить и блазоровские страницы
https://blog.stevensanderson.com/2019/11/18/2019-11-18-webwindow-a-cross-platform-webview-for-dotnet-core/
static void Main(string[] args)
{
    ComponentsDesktop.Run<Startup>("My Blazor App", "wwwroot/index.html");
}


Напомним, что это не включает в себя WebAssembly, Node.js, или Chromium. Это просто .NET Core работает изначально, напрямую взаимодействуя с собственной технологией веб-рендеринга ОС.


How it works
On Windows, WebWindow uses the new Chromium-based Edge via webview2, assuming you have that browser installed (it could fall back on older Edge if you don’t, but I haven’t implemented that)
On Mac, it uses the OS’s built-in WKWebView, which is the same technology behind Safari
On Linux, it uses WebKitGTK+2, which is yet again a WebKit-based technology
The whole point of this, compared with using Electron, is to produce apps that are smaller to download and use less memory. But does it actually? Here are the stats for download size:


Пример Blazor Desktop

То есть делаешь обычное Razor проект, только используешь его на клиенте используя HTML для отображения, а среда будет родная.Net Core или CoreRT.