Excuses si cela semble que je veux que mon problème soit sauvegardé pour moi, mais je suis tombé sur stact il y a quelque temps et il semble que ce serait une bibliothèque à portée de main, et je pense que ça marcherait bien pour le problème à portée de main. J'ai regardé le code source, et il y en a beaucoup là-dedans! :) Je ne sais pas par où commencer. Ce dont j'ai besoin, c'est d'un composant (acteur?) Qui envoie périodiquement des requêtes web asynchrones et stocke les résultats localement (un peu d'analyse des résultats aura lieu en premier). D'autres discussions demanderont les résultats à différents moments. D'après ce que je peux voir, j'ai besoin d'un planificateur, d'une fibre et d'un canal pour gérer le renvoi des résultats à ceux qui le demandent. Quelque chose le long des lignes de:Faire une demande asynchrone avec stact
private static readonly ConcurrentDictionary<Uri, ServerLoad> ServerLoads = new ConcurrentDictionary<string, ServerLoad>();
public Channel<Request<IEnumerable<ServerLoad>>> ServerLoadChannel { get; private set;
public LoadRetriever(Inbox inbox, Fiber fiber, Scheduler scheduler, ILoadBalancerConfiguration config)
{
this.inbox = inbox;
this.fiber = fiber;
this.scheduler = scheduler;
this.scheduler.Schedule(
0,
config.FetchIntervalMilliSecs,
fiber,
() =>
{
foreach (var server in config.Servers)
{
// need someway to send async web request to url in
// server.LoadRetrievalAddress and save/update result
// in ServerLoads dictionary
}
});
this.ServerLoadChannel = new ConsumerChannel<Request<IEnumerable<ServerLoad>>>(this.fiber,
request => request.Respond(ServerLoads.Values));
}
}
Ceci est d'autant théorique pour le moment, et peut-être mal completly, le principal problème que j'ai fait les demandes async (WebClient.DownloadStringAsync() et DownloadStringCompleted). Quelque chose qui fait le contraire de AsyncResultChannel
Des conseils/exemples/pousser dans la bonne direction seraient appréciés!
(a essayé de créer une balise pour stact mais ma réputation est pas assez bon: S)
Je vais aussi souligner, Stact est sous une forme très nette avec la version 1.0. Si vous ne faites pas attention, vous pouvez vous couper. :) –
Merci pour les conseils, je vais essayer. Espérons que la coupe ne sera pas fatale, et la coupe qui ne vous tue pas vous rend plus fort! ;) –
Comment la boîte de réception est-elle fournie à cet acteur? – Damian