Domanda

Ho fatto molte ricerche cercando di trovare il modo migliore per comunicare una richiesta di post di assegnazione di massa con la mia app ASP.NET MVC3 senza molto successo.


Ecco lo scenario:
Come ho già detto, ho un ASP.NET MVC3 con metodi di riposo standard, con cui sto cercando di comunicare con un'applicazione desktop (un'altra app scritta internamente). Per iniziare come prototipo, abbiamo appena usato il caricamento del documento XML di Brute Force Webclient e quindi avere l'applicazione MVC3 analizza attraverso il documento XML. Al fine di mantenere questo comportamento dovremmo costruire costantemente più metodi, uno per l'analisi del documento XML e uno per l'utilizzo standard del modello sul sito Web. Vorrei stare lontano da quello se posso.


Dopo tutte le mie ricerche mi sono imbattuto RESSHARP E mi chiedo se c'è in qualche modo per gestire le richieste di posti di assegnazione di massa utilizzando RestSharp. Mi piacerebbe poter fare qualcosa come il seguente:

Nell'app MVC3 ...

public class RegistrationRequest {
    public string Email { get; set; }
    public string RequestedUserName { get; set; }

    public bool Register(string domain) {
        // Do registration stuff.
    }
}

public class AccountController : Controller {
    [Authorize,HttpPost]
    public ActionResult Register(IEnumerable<RegistrationModel> models) {
        return models.Any(model => !model.Register(this.Url.DnsSafeHost))
                   ? new HttpStatusCodeResult(400)
                   : new HttpStatusCodeResult(200);
    }
}

Nell'app desktop ...

public class RegistrationRequest {
    public string Email { get; set; }
    public string RequestedUserName { get; set; }
}

public class RegistrationService {
    public void CreateUsers() {
        List<RegistrationRequest> registrations = new List<RegistrationRequest>();
        // list of requested users built up by app

        var client = new RestClient(baseUrl);
        var request = new RestRequest("Account/Register", Method.POST);
        //request.AddAllMyObjects(registrations);
        var response = client.Execute(request);
    }
}

Qualcuno può darmi qualche consiglio su come raggiungere questo obiettivo?

È stato utile?

Soluzione

Dopo aver guardato attraverso i documenti e un rapido avanti e indietro con John Sheenan, Ho scoperto che questo non è attualmente possibile. Ho finito per fare richieste singolari all'API che abbiamo sviluppato. Dal momento che questo funziona in background, non influisce davvero sull'esperienza utente sull'app desktop e le richieste dovevano comunque essere più piccole e più succinte.

Ho scoperto che ciò ci ha effettivamente permesso di ottenere risultati migliori comunque su ogni singolo caso pass/fail e gestire quelli in modo appropriato. Anche se potrebbe essere stato bello, questa richiesta "uno alla volta" in realtà si è rivelata migliore alla fine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top