Ich habe in den letzten Wochen von Cloud Services auf Service Fabric umgestellt und bin mit Remoting zwischen zwei Diensten in einige Stolpersteine geraten.Service Fabric Service Remoting
Ich habe mit der offiziellen Dokumentation und Beispielcode auf Service-Remoting- und insbesondere ich versuche, die Probe, hier zu arbeiten skizzierte zu erhalten:
Ich habe 2 Dienstleistungen. Eine heißt "RemoteService" und die andere heißt "CallerService". Beide stammen aus einem Standard-Stateless-Service-Projekt.
Sowohl in der „Remoteservice“ und „CallerService“ Projekte, die ich die folgende Schnittstelle hinzugefügt haben den Dienstvertrag zwischen ihnen zu beschreiben:
public interface IMyService : IService
{
Task<string> HelloNameAsync(string name);
}
Im „Remoteservice“ Ich habe erstellt asociated Methode innerhalb der Klasse Remoteservice
public Task<string> HelloNameAsync(string name)
{
return Task.FromResult("Hello " + name + "!");
}
I außer Kraft setzen auch CreateServiceInstanceListeners mit den folgenden
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[] { new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context)) };
}
In meinem "CallerService" wenn ich versuche, den Aufruf der "Remoteservice" zu verbinden, machen mit den folgenden:
IMyService helloNameClient = ServiceProxy.Create<IMyService>(new Uri("fabric:/Application/RemoteService"));
string message = await helloNameClient.HelloNameAsync("Luke");
Ich erhalte diese Ausnahme
InnerException = {"Interface id '1994370306' is not implemented by object 'RemoteService.RemoteService'"}
Ich bin über diese Probe mit einem feinen Zahnkamm gegangen und bin sicher, dass ich alles habe n Platz wie es sein sollte. Ich habe über das Einrichten von Endpunkten und das Registrieren Ihrer Dienste in einem Dienstverzeichnis gelesen, aber von dem, was ich verstehe, sind diese für externe Dienste und die Remoting-Dokumentation erwähnt dies nicht erforderlich.
UPDATE:
Hier ist, wie die Remoteservice Klasse deklariert ist:
internal sealed class RemoteService : StatelessService, IMyService
UPDATE 2
Hier ist, was die Settings.xml wie für beide Dienste aussieht. Dies sind die Standardeinstellungen, die mit dem Projekt aus der Box kommen. Ich habe nichts hinzugefügt oder entfernt. Ich möchte auch anmerken, dass ich all dies auf meiner lokalen Service-Struktur laufen lasse.
<?xml version="1.0" encoding="utf-8" ?>
<Settings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<!-- Add your custom configuration sections and parameters here -->
<!--
<Section Name="MyConfigSection">
<Parameter Name="MyParameter" Value="Value1" />
</Section>
-->
</Settings>
Können wir sehen, wie Sie die RemoteService-Klasse deklariert haben? Auch Settings.xml für beide Dienste. – cassandrad
Ja, ich habe gerade ein Update hinzugefügt. – CodeAbundance
Die Datei Settings.xml wurde ebenfalls hinzugefügt. – CodeAbundance