是否可以在Blazor网站中嵌入.NET应用程序?

时间:2019-04-28 06:00:16

标签: c# asp.net-core blazor

类似于如何使用<iframe><embed><object>等将外部视频,插件等嵌入网站,是否可以将应用程序直接嵌入Blazor?大概.NET应用程序会更容易。

类似

<div>

    <application path="/dist/file/myApplication.exe"></application>

</div>

看看Web Assembly的功能,我可以确定一般概念是可以实现的。我只是想知道Blazor中是否有一种轻松做到这一点的方法。

请澄清:

我最初的问题措辞也许过于简单。我并不一定意味着<application path="myApplication.exe"></application>确实可以解决问题。我真正在考虑的是一种通过WASM将非Javascript应用程序嵌入网站的用户友好方法的概念。我之所以提到Blazor,是因为它似乎是当前提供最佳方法的最佳竞争者。

以下是启发该问题的原因:https://webassembly.org/demo/Tanks/

我认为,由于已成功将Unity游戏移植到浏览器上的Web组件中运行,因此可能在任何应用程序中执行类似的操作(在合理的情况下)。

也许不是现在,但是在不远的将来。

2 个答案:

答案 0 :(得分:1)

在Linux或iOS上运行exe文件时会遇到问题。

在Windows上,这将是一个很大的,无法接受的安全风险。我们去过那里,是用ActiveX完成的。没有人想重复一遍。

我不确定您是指哪种“ Web Assembly功能”,但目前它需要JS才能在屏幕上显示任何内容。

因此:不,这不可能,而且永远不会。

答案 1 :(得分:0)

如果您拥有“托管在网络上”的内容,则可以使用以下代码将其“嵌入” Blazor应用程序内部:

node.js

    <script type="text/javascript">
    // From: https://gomakethings.com/getting-html-asynchronously-from-another-page/
    var getHTML = function (url, callback) {
        // Feature detection
        if (!window.XMLHttpRequest) return;
        // Create new request
        var xhr = new XMLHttpRequest();
        // Setup callback
        xhr.onload = function () {
            if (callback && typeof (callback) === 'function') {
                callback(this.responseXML);
            }
        };
        // Get the HTML
        xhr.open('GET', url);
        xhr.responseType = 'document';
        xhr.send();
    };
    </script>

    <script type="text/javascript">
    var populateDiv = function (element) {
        getHTML('https://blazor.net/', function (response) {
            element.innerHTML = response.documentElement.innerHTML;
        });
    };
    </script>
ElementRef modalBody; // reference to the DIV
protected override void OnAfterRender()
{
  // This will set the content of the Div
  // to the content of the server Login page
  setDivContent(modalBody);
}
    
public Task setDivContent(ElementRef elementRef)
{
   return JSRuntime.InvokeAsync<object>("populateDiv", elementRef);
}

请参阅: Razor Components Popups and JavaScript Interop