Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何调用Orleans grain方法而不参考grain实现?_.net_.net Core_Orleans - Fatal编程技术网

.net 如何调用Orleans grain方法而不参考grain实现?

.net 如何调用Orleans grain方法而不参考grain实现?,.net,.net-core,orleans,.net,.net Core,Orleans,如何调用Orleans grain方法而不参考grain实现 Grain client-.Net核心应用程序 Grain实现类-经典的.Net Framework库,不能添加到.Net核心应用程序中 从客户项目中仅参考接口项目(核心->标准) 从主项目引用中,实现项目(完整->完整)和实现项目引用接口项目(完整->标准) 它就像一个符咒,请参见:从客户机项目中仅参考接口项目(核心->标准) 从主项目引用中,实现项目(完整->完整)和实现项目引用接口项目(完整->标准) 它就像一个符咒,请参见:

如何调用Orleans grain方法而不参考grain实现

  • Grain client-.Net核心应用程序
  • Grain实现类-经典的.Net Framework库,不能添加到.Net核心应用程序中

从客户项目中仅参考接口项目(核心->标准)

从主项目引用中,实现项目(完整->完整)和实现项目引用接口项目(完整->标准)


它就像一个符咒,请参见:

从客户机项目中仅参考接口项目(核心->标准)

从主项目引用中,实现项目(完整->完整)和实现项目引用接口项目(完整->标准)

它就像一个符咒,请参见:

Minimal Orleans sample 服务器 .Net Framework控制台应用程序

Install-Package Microsoft.Orleans.Core.Abstractions
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Server

class Program
{
    static async Task Main(string[] args)
    {
        await StartSilo();
    }
    static async Task StartSilo()
    {
        using (var host = new SiloHostBuilder()
            .UseLocalhostClustering()
            //.ConfigureLogging(logging => logging.AddConsole())
            .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(SampleGrain).Assembly).WithReferences())
            .Build())
        {
            await host.StartAsync();

            Console.WriteLine("Silo started. Press any key to terminate...");
            Console.ReadKey();
        }
    }


}

public class SampleGrain : Grain, ISample
{
    public Task<string> Ping(string message)
    {
        Console.WriteLine($"Pinged with '{message}'");
        return Task.FromResult($"Message '{message}' received");
    }
}
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Client

static async Task Main(string[] args)
{
    await PingSample();
}

static async Task PingSample()
{
    using (var client = new ClientBuilder()
        .UseLocalhostClustering()
        //.ConfigureLogging(logging => logging.AddConsole())
        .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(ISample).Assembly).WithReferences())
        .Build())
    {
        await client.Connect();
        Console.WriteLine("Client successfully connected to silo host.");

        var sample = client.GetGrain<ISample>("one");

        var result = await sample.Ping("hello");
        Console.WriteLine(result);
    }

}
安装软件包Microsoft.Orleans.Core.Abstractions
安装软件包Microsoft.Orleans.OrleansCodeGenerator.Build
安装软件包Microsoft.Orleans.Server
班级计划
{
静态异步任务主(字符串[]args)
{
等待开始silo();
}
静态异步任务StartSilo()
{
使用(var host=new-SiloHostBuilder()
.UseLocalhostClustering()
//.ConfigureLogging(logging=>logging.AddConsole())
.ConfigureApplicationParts(parts=>parts.AddApplicationPart(typeof(SampleGrain).Assembly).WithReferences())
.Build())
{
等待host.StartAsync();
Console.WriteLine(“思洛存储器已启动。按任意键终止…”);
Console.ReadKey();
}
}
}
公共类样本Grain:Grain,ISample
{
公共任务Ping(字符串消息)
{
WriteLine($“ping为“{message}”);
返回Task.FromResult($“已收到消息{Message}”);
}
}
接口 .Net标准类库

Install-Package Microsoft.Orleans.Core.Abstractions

public interface ISample : IGrainWithStringKey
{
    Task<string> Ping(string message);
}
安装软件包Microsoft.Orleans.Core.Abstractions
公共接口很简单:IGrainWithStringKey
{
任务Ping(字符串消息);
}
客户 .Net核心控制台应用程序

Install-Package Microsoft.Orleans.Core.Abstractions
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Server

class Program
{
    static async Task Main(string[] args)
    {
        await StartSilo();
    }
    static async Task StartSilo()
    {
        using (var host = new SiloHostBuilder()
            .UseLocalhostClustering()
            //.ConfigureLogging(logging => logging.AddConsole())
            .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(SampleGrain).Assembly).WithReferences())
            .Build())
        {
            await host.StartAsync();

            Console.WriteLine("Silo started. Press any key to terminate...");
            Console.ReadKey();
        }
    }


}

public class SampleGrain : Grain, ISample
{
    public Task<string> Ping(string message)
    {
        Console.WriteLine($"Pinged with '{message}'");
        return Task.FromResult($"Message '{message}' received");
    }
}
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Client

static async Task Main(string[] args)
{
    await PingSample();
}

static async Task PingSample()
{
    using (var client = new ClientBuilder()
        .UseLocalhostClustering()
        //.ConfigureLogging(logging => logging.AddConsole())
        .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(ISample).Assembly).WithReferences())
        .Build())
    {
        await client.Connect();
        Console.WriteLine("Client successfully connected to silo host.");

        var sample = client.GetGrain<ISample>("one");

        var result = await sample.Ping("hello");
        Console.WriteLine(result);
    }

}
安装软件包Microsoft.Orleans.OrleansCodeGenerator.Build
安装软件包Microsoft.Orleans.Client
静态异步任务主(字符串[]args)
{
等待PingSample();
}
静态异步任务PingSample()
{
使用(var client=new ClientBuilder()
.UseLocalhostClustering()
//.ConfigureLogging(logging=>logging.AddConsole())
.ConfigureApplicationParts(parts=>parts.AddApplicationPart(typeof(ISample).Assembly).WithReferences())
.Build())
{
等待client.Connect();
WriteLine(“客户端成功连接到思洛存储器主机”);
var样本=client.GetGrain(“一”);
var result=wait sample.Ping(“你好”);
控制台写入线(结果);
}
}

最小奥尔良样本 服务器 .Net Framework控制台应用程序

Install-Package Microsoft.Orleans.Core.Abstractions
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Server

class Program
{
    static async Task Main(string[] args)
    {
        await StartSilo();
    }
    static async Task StartSilo()
    {
        using (var host = new SiloHostBuilder()
            .UseLocalhostClustering()
            //.ConfigureLogging(logging => logging.AddConsole())
            .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(SampleGrain).Assembly).WithReferences())
            .Build())
        {
            await host.StartAsync();

            Console.WriteLine("Silo started. Press any key to terminate...");
            Console.ReadKey();
        }
    }


}

public class SampleGrain : Grain, ISample
{
    public Task<string> Ping(string message)
    {
        Console.WriteLine($"Pinged with '{message}'");
        return Task.FromResult($"Message '{message}' received");
    }
}
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Client

static async Task Main(string[] args)
{
    await PingSample();
}

static async Task PingSample()
{
    using (var client = new ClientBuilder()
        .UseLocalhostClustering()
        //.ConfigureLogging(logging => logging.AddConsole())
        .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(ISample).Assembly).WithReferences())
        .Build())
    {
        await client.Connect();
        Console.WriteLine("Client successfully connected to silo host.");

        var sample = client.GetGrain<ISample>("one");

        var result = await sample.Ping("hello");
        Console.WriteLine(result);
    }

}
安装软件包Microsoft.Orleans.Core.Abstractions
安装软件包Microsoft.Orleans.OrleansCodeGenerator.Build
安装软件包Microsoft.Orleans.Server
班级计划
{
静态异步任务主(字符串[]args)
{
等待开始silo();
}
静态异步任务StartSilo()
{
使用(var host=new-SiloHostBuilder()
.UseLocalhostClustering()
//.ConfigureLogging(logging=>logging.AddConsole())
.ConfigureApplicationParts(parts=>parts.AddApplicationPart(typeof(SampleGrain).Assembly).WithReferences())
.Build())
{
等待host.StartAsync();
Console.WriteLine(“思洛存储器已启动。按任意键终止…”);
Console.ReadKey();
}
}
}
公共类样本Grain:Grain,ISample
{
公共任务Ping(字符串消息)
{
WriteLine($“ping为“{message}”);
返回Task.FromResult($“已收到消息{Message}”);
}
}
接口 .Net标准类库

Install-Package Microsoft.Orleans.Core.Abstractions

public interface ISample : IGrainWithStringKey
{
    Task<string> Ping(string message);
}
安装软件包Microsoft.Orleans.Core.Abstractions
公共接口很简单:IGrainWithStringKey
{
任务Ping(字符串消息);
}
客户 .Net核心控制台应用程序

Install-Package Microsoft.Orleans.Core.Abstractions
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Server

class Program
{
    static async Task Main(string[] args)
    {
        await StartSilo();
    }
    static async Task StartSilo()
    {
        using (var host = new SiloHostBuilder()
            .UseLocalhostClustering()
            //.ConfigureLogging(logging => logging.AddConsole())
            .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(SampleGrain).Assembly).WithReferences())
            .Build())
        {
            await host.StartAsync();

            Console.WriteLine("Silo started. Press any key to terminate...");
            Console.ReadKey();
        }
    }


}

public class SampleGrain : Grain, ISample
{
    public Task<string> Ping(string message)
    {
        Console.WriteLine($"Pinged with '{message}'");
        return Task.FromResult($"Message '{message}' received");
    }
}
Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
Install-Package Microsoft.Orleans.Client

static async Task Main(string[] args)
{
    await PingSample();
}

static async Task PingSample()
{
    using (var client = new ClientBuilder()
        .UseLocalhostClustering()
        //.ConfigureLogging(logging => logging.AddConsole())
        .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(ISample).Assembly).WithReferences())
        .Build())
    {
        await client.Connect();
        Console.WriteLine("Client successfully connected to silo host.");

        var sample = client.GetGrain<ISample>("one");

        var result = await sample.Ping("hello");
        Console.WriteLine(result);
    }

}
安装软件包Microsoft.Orleans.OrleansCodeGenerator.Build
安装软件包Microsoft.Orleans.Client
静态异步任务主(字符串[]args)
{
等待PingSample();
}
静态异步任务PingSample()
{
使用(var client=new ClientBuilder()
.UseLocalhostClustering()
//.ConfigureLogging(logging=>logging.AddConsole())
.ConfigureApplicationParts(parts=>parts.AddApplicationPart(typeof(ISample).Assembly).WithReferences())
.Build())
{
等待client.Connect();
WriteLine(“客户端成功连接到思洛存储器主机”);
var样本=client.GetGrain(“一”);
var result=wait sample.Ping(“你好”);
控制台写入线(结果);
}
}

将grain接口添加到核心项目中,从框架实现中引用它,核心客户端不工作?@lmagyar不工作,错误:找不到grain接口的实现类:IBlaBla。确保谷物组件正确部署并装载到筒仓中。和编写的文档:向客户端代码添加接口和实现引用。可能您遗漏了一些内容,例如,从实现中引用谷物基类,这可能会导致类似的错误,因为是的,接口没有实现(实现继承接口和基谷物类)。请看下面我的答案。@感谢您提供项目示例。我错过了对Microsoft.Orleans.OrleansCodeGenerator.build的引用。将grain接口添加到核心项目,从框架实现中引用它,而核心客户端不工作?@lmagyar不工作,错误:找不到grain接口的实现类:IBlaBla。确保谷物组件正确部署并装入sil中