Какой хороший способ управлять развертыванием изменений кода в средах разработки, тестирования и производственной среды в Azure? На сайте Azure / Service Fabric есть статья для указания номеров портов с помощью параметров в разделе Практические руководства - Управление жизненным циклом приложения (https://docs.microsoft.com/en-us/azure/service-fabric/Service-Fabric-How-to-Spec-Port-Number-using-Parameters), но я не уверен, как можно управлять именами хостов - есть ли свойство, связанное с именем хоста, которое можно включить в файл Publish Profile .xml (например, Cloud.xml)?
Предыстория: я перехожу с автономного приложения WCF, работающего как служба Windows, и использую WebHttpBinding с конечными точками http и https (использует шаблоны файла конфигурации T4 для определения имени хоста и номера порта в зависимости от среды). Я переношу это на приложение Azure ServiceFabric WcfCommunicationListener (похоже на образец, найденный здесь: https://github.com/loekd/ServiceFabric.WcfCalc) ....
internal sealed class ServiceFabricWcfService : StatelessService
{
public ServiceFabricWcfService(StatelessServiceContext context) : base(context)
protected override IEnumerable<ServiceInstanceListener>
CreateServiceInstanceListeners()
{
yield return new ServiceInstanceListener(CreateRestListener);
}
private ICommunicationListener CreateRestListener(StatelessServiceContext context)
{
var host = context.NodeContext.IPAddressOrFQDN;
var endpointConfig = context.CodePackageActivationContext.GetEndpoint("ServiceEndpoint");
var port = endpointConfig.Port;
var scheme = endpointConfig.Protocol.ToString();
var uri = string.Format(CultureInfo.InvariantCulture, "{0}://{1}:{2}/webhost/", scheme, host, port);
var listener = new WcfCommunicationListener<IJsonService>(context, new JsonServicePerCall(), new WebHttpBinding(WebHttpSecurityMode.None), new EndpointAddress(uri));
var ep = listener.ServiceHost.Description.Endpoints.Last();
ep.Behaviors.Add(new WebHttpBehavior());
return listener;
}
}
Как вы можете видеть, имя хоста получается из NodeContext StatelessServiceContext - есть ли хороший способ настроить его для таргетинга на разные имена хостов для каждой среды? Мои клиенты должны иметь возможность выполнять вызовы http / https на основе имени хоста, чтобы определять, к какой среде они подключаются. Спасибо!