Можно ли запрашивать VIP (с портами конечных точек) как в эмулируемой вычислительной среде, так и в облаке "чисто"?

У меня есть две веб-роли, одна из которых предоставляет API данных, а другая - веб-сайт внешнего интерфейса, а затем несколько вычислительных ролей, создающих данные.

Чего я хотел бы добиться, так это с помощью веб-роли www, чтобы запросить VIP веб-роли API данных, запустив функцию запроса, которая абстрагирует детали, если я работаю локально или в Azure. Похоже, запрос PublicIPEndpoint будет работать в Azure, но не локально. Потребность была бы такова, что я мог бы выдать, скажем, некоторые константы URL для JavaScript.

Есть ли лучший способ, чем жестко закодировать некоторую строку или, скажем, прочитать .csdef файл с относительным путем и взять его оттуда?

В коде грубо что-то вроде

let IsInAzureFabric =
    try
        RoleEnvironment.IsAvailable       
    with _ ->
        false                

let IsInAzureCloud =
    try
        IsInAzureFabric && not RoleEnvironment.IsEmulated
    with _ ->
        false

let GetVirtualIP(roleName, endPoint) =        
    try
        if IsInAzureCloud then
            //Collect the protocol (http/https) from the endpoint information and pick only one endpoint as it's the one shown on the loadbalancer...
            RoleEnvironment.Roles.[roleName].Instances
            |> Seq.map(fun roleInstance -> "http://" + roleInstance.InstanceEndpoints.[endPoint].PublicIPEndpoint.ToString())
        elif IsInAzureFabric then
            //In local development fabric...
            Seq.ofList ["http://localhost:8080"]
        else
            //This is locally outside of Azure Fabric (or in virtual machine?).
            Seq.ofList ["http://localhost:1943"]
    with _ ->
        Seq.empty

0 ответов

Другие вопросы по тегам