1

Azure Service Fabric 应用程序有一个 ApplicationParameters 文件夹,其中包含针对不同部署位置的 XML 配置文件。这些文件中的设置似乎处理了所包含的参与者和服务的实例/分区的数量;我还没有看到这些设置影响参与者或服务逻辑的示例。

此外,可靠服务和可靠参与者可以在 ServiceManifest.xml 文件中指定配置包,该文件指向包含 Settings.xml 文件的文件夹。您可以在 Settings.xml 中创建自定义配置部分,并通过 ServiceInitializationParameters.CodePackageActivationContext.GetConfigurationPackageObject() 通过服务/参与者的 ConfigurationPackage 访问它们。与应用程序级别的配置不同,这些配置文件似乎并不容易针对特定的部署位置。

通过针对部署位置的配置文件来定制参与者/服务逻辑的正确方法是什么?例如,如果您的服务依赖于具有不同 URL 的外部 API 用于开发环境和生产环境,那么如何使用配置文件轻松建立这些 API?如果 ApplicationParameters 文件是答案,您如何以编程方式从参与者或服务访问此信息?如果 Settings.xml 文件中的自定义部分是答案,那么参与者/服务如何知道它在哪个环境中?

4

1 回答 1

4

在此处查看“每个环境的服务配置设置”部分:管理多个环境的应用程序参数

简而言之,您可以ConfigOverride在将服务清单导入应用程序清单时创建一个。假设您在Stateful1服务的 Settings.xml 中有以下设置:

<Section Name="MyConfigSection">
  <Parameter Name="MaxQueueSize" Value="25" />
</Section>

在应用程序清单中,您将指定以下内容:

<ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="Stateful1Pkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides>
       <ConfigOverride Name="Config">
           <Settings>
              <Section Name="MyConfigSection">
                  <Parameter Name="MaxQueueSize" Value="[Stateful1_MaxQueueSize]" />
              </Section>
           </Settings>
       </ConfigOverride>
    </ConfigOverrides>
</ServiceManifestImport>

然后,您可以指定应用程序/环境特定的值以MaxQueueSize使用应用程序参数。

于 2015-11-25T19:34:06.743 回答