|
|
51CTO旗下网站
|
|
移动端

2.3.6.1 编写Reliable Actors 应用

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍编写Reliable Actors 应用。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-12 17:57

2.3.6.1 编写Reliable Actors 应用

目前Reliable Actors 支持.NET,Reliable Service 还不支持Java,所以也不支持ReliableActors。接下来,将以.NET 为例来介绍,使用Visul Studio 开发一个简单的Reliable Actors应用。

首先,确保已经安装Service Fabric 的SDK 和Visual Studio 工具包;之后,在VisualStudio 中新建Service Fabric 解决方案;然后,在下一个对话框中,选择Actor Service,选择好之后,就完成了创建,如图2.3.6-3 所示。在默认情况下,Visual Studio 会附带创建一个简单的Actor 示例。

创建好之后的项目结构是包含一个Actor 服务的简单Reliable Actors 应用,如图2.3.6-4所示。其结构主要分为以下三个部分。

(1) 应用程序项目(MyActorApplication),应用程序项目目录,该项目是用来配置,打包部署应用的项目,它主要包含ApplicationManifest.xml 和部署的PowerShell 脚本。

(2) 服务接口项目(MyActor.Interface),这是包含Actor 服务接口定义的项目,Actor通信是基于接口生成代理对象的,所以Actor 公开的服务,都需要在该项目中进行接口定义。服务接口项目可以被多个Actor 服务项目共享。

(3) Actor 服务项目(MyActor),这个项目主要包含Actor 服务的具体实现。

Actor 接口C#代码示例,接口定义必须要继承自IActor。

  1. public interface IMyActor : IActor  
  2. {  
  3. Task<string> HelloWorld();  

Actor 必须实现之前定义的接口,另外还需要继承Actor,在实现类构造函数中,须传递的ActorService 和ActorId 参数给基类Actor 构造函数。平台将依赖这两个参数完成Actor的一些初始化操作。以下是Actor 实现的C#代码示例。

  1. [StatePersistence(StatePersistence.Persisted)]  
  2. class MyActor : Actor, IMyActor  
  3. {  
  4. public MyActor(ActorService actorService, ActorId actorId)  
  5. : base(actorService, actorId)  
  6. {  
  7. }  
  8. public Task<string> HelloWorld()  
  9. {  
  10. return Task.FromResult("Hello world!");  
  11. }  

在初始化应用程序时,必须对ActorService 进行服务类型注册。为了使Actor 能够运行,还必须将Actor 注册到ActorService 中,Reliable Actors 提供的ActorRuntime API 可以帮助完成服务和Actor 的注册。如下C#代码示例:

  1. internal static class Program  
  2. {  
  3. private static void Main()  
  4. {  
  5. try  
  6. {  
  7. ActorRuntime.RegisterActorAsync<MyActor>(  
  8. (context, actorType) => new ActorService(context, actorType,  
  9. () => new MyActor())).GetAwaiter().GetResult();  
  10. Thread.Sleep(Timeout.Infinite);  
  11. }  
  12. catch (Exception e)  
  13. {  
  14. ActorEventSource.Current.ActorHostInitializationFailed(e.ToString());  
  15. throw;  
  16. }  
  17. }  

默认Visual Studio 生成的项目只包含一个Actor 服务。可以在项目中,再添加一个Actor。同样,当添加完成后,可以使用以下代码,注册新加入的Actor:

  1. ActorRuntime.RegisterActorAsync<MyOtherActor>(); 

完成之后就可以在本地调试应用程序。在Visual Studio 中,可以直接使用F5 进行调试,Visual Studio 会自动启动本地Service Fabric 群集,将应用程序注册并部署到ServiceFabric 中,并且还附加调试器。也可以在输出窗口下,查看部署的进度和应用程序的执行情况,如图2.3.6-5 所示。

这样就完成了一个简单的Reliable Actors 应用程序的开发。当然在实际业务中,一个应用程序中肯定有很多种Actor,并且多个Actor 之间也会有交互。后续的章节,会讲述更加复杂的情况下的开发。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java程序设计专家门诊

精选目前国内外最流行的程序设计语言——Java作为本书的选题,并以丰富的内容来解决读者学习该语言时可能遇到的各种问题。以专业的论坛为基...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊