azos
azos copied to clipboard
[METABASE] Need IaaS resolver contract/module which absolutely all services use to resolve ALL addresses: Azos.Client, TcpSockets, MongoDb, MySql etc.
The design would allow to use the process model WITH or WITHOUT Sky.METABASE. ** Need to see SKY ResolveAddress ** function Proposed:
namespace: `Azos.Apps.Topology`
interface IAddressResolver
{
string Resolve(net: atom, binding: atom, address: string);// /w/us/ca/sys/h1 -> 10.0.1.23
}
then DB server names may use Sky host names, Uris may use:
http://</w/us/ca/sys/h1>/Home will parse out between < > in the server name
or
http://${{/w/us/ca/sys/h1}}/Home will parse out between ${{ }} in the server name
ResolveUri() extension method the searched for ${{..}} and resolves it via IAddressResolver.Resolve(net, binding, address): string
The benefit would be great: it would allow to de-couple from physical IaaS (such as Amazon), so we would not need to use their DNS or other temporary host names. The configuration would use logical server names only.
We would also not need to maintain extra machine.xml
files with huge service manifests, instead we can delegate it to Resolver which will do the mapping.
Better yet, the resolver may be able to introspect on the list of available endpoints, instead of us having to declare them in config like we do now.
Re #567 - Central Service Client Registry
This will not be created. Such service on its own does not make sense. We should use Metabase instead, which should be refactored into your system
for now, disregard this request and keep your config structure as-is Future path is to use metabase