你不應該使用ActorProxy和ServiceProxy集羣外的類。而應使用面向公衆的服務,如使用https的Web Api,以充當服務的網關。然後在Azure負載均衡器上打開https端口。
請仔細閱讀the docs因爲他們列出所有你需要採取的步驟。
這是一個例子,它使用HTTPS的服務的(從文檔獲取):
class HttpCommunicationListener : ICommunicationListener
{
...
public Task<string> OpenAsync(CancellationToken cancellationToken)
{
EndpointResourceDescription endpoint =
serviceContext.CodePackageActivationContext.GetEndpoint("WebEndpoint");
string uriPrefix = $"{endpoint.Protocol}://+:{endpoint.Port}/myapp/";
this.httpListener = new HttpListener();
this.httpListener.Prefixes.Add(uriPrefix);
this.httpListener.Start();
string publishUri = uriPrefix.Replace("+", FabricRuntime.GetNodeContext().IPAddressOrFQDN);
return Task.FromResult(publishUri);
}
...
}
class WebService : StatelessService
{
...
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[] { new ServiceInstanceListener(context => new HttpCommunicationListener(context))};
}
...
}
公共服務等的一個以上應該使用ActorProxy和ServiceProxy類工作委託給底層服務和演員。
所以總結:
但我應該這樣一些事情?那麼在那種情況下怎麼樣?
我的主要職業blem是如何創造ActorProxy和ServiceProxy 這僅在集羣中的適用於通信服務之間
那麼,你所談論的是使用此API作爲一個網關我每次使用通過服務遠程我必須調用方法現在通過Api調用它,對吧? 我現在有一些問題: 我的應用程序是一個在線遊戲,我的客戶端是一個控制檯應用程序。它使用遠程方法與無狀態服務(登錄服務)和演員服務(遊戲會話)進行交互。我的客戶現在將如何調用Api方法(作爲客戶端和服務方法之間的接口)並接收這些服務方法的返回值? 我的客戶使用了Actor Events。我的客戶現在如何接收它? – Shkire
通過使用具有正確端口號的集羣FQDN,您的客戶端可以像調整任何其他服務一樣調用web/wcf api。揭露演員事件可能會更具挑戰性。也許SignalR或者讓服務可以調用的客戶端監聽器是一個選項 –