REST: come memorizzare e riutilizzare le query di chiamata REST

6

Sto imparando C # programmando una vera mostruosità di un'applicazione per uso personale. Parte della mia applicazione utilizza diverse query SPARQL in questo modo:

const string ArtistByRdfsLabel = @"
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?artist
WHERE
{{
    {{
        ?artist rdf:type <http://dbpedia.org/ontology/MusicalArtist> .
        ?artist rdfs:label ?rdfsLabel .
    }}
    UNION
    {{
        ?artist rdf:type <http://dbpedia.org/ontology/Band> .
        ?artist rdfs:label ?rdfsLabel .
    }}
    FILTER 
    (
        str(?rdfsLabel) = '{0}'
    ) 
}}";

string Query = String.Format(ArtistByRdfsLabel, Artist);

Non mi piace l'idea di mantenere tutte queste query nella stessa classe in cui le sto utilizzando, quindi ho pensato di spostarle nella loro classe dedicata per rimuovere il disordine nella mia classe RestClient.

Sono abituato a lavorare con SQL Server e sto semplicemente avvolgendo tutte le query in una stored procedure ma poiché non si tratta di SQL Server, mi sto sfogliando la testa su quale sarebbe la soluzione migliore per queste query SPARQL. Esistono approcci migliori per archiviare queste query utilizzando particolari caratteristiche del linguaggio C # (o approcci generali, non specifici di C #) di cui forse non sono a conoscenza?

EDIT: In realtà, queste query SPARQL non sono nulla di speciale. Solo frammenti di testo che in seguito voglio catturare, inserire alcuni parametri in String.Format e inviare una chiamata REST. Suppongo che tu possa pensare a loro come qualsiasi query SQL che è mantenuta nel livello dell'applicazione, non mi sono mai esercitato a mantenere le query SQL nel livello applicazione, quindi mi chiedo se ci siano pratiche "standard" con questo tipo di cose .

    
posta programmer 23.06.2012 - 23:04
fonte

3 risposte

2

Si può anche considerare il File di risorse (quello con estensione .resx in VS) per questa attività. Può servire come un dizionario, un paio di < chiave, valore > per memorizzare / accedere ai "blob di testo" molto facilmente. Ecco alcuni link di coppia: MSDN

risposta data 24.06.2012 - 02:35
fonte
1

È sempre possibile memorizzarli in una tabella del database e recuperarli all'avvio dell'applicazione o al primo utilizzo. Con un corretto caching le prestazioni sarebbero altrettanto buone. Il vantaggio è che possono essere modificati senza ricompilare l'applicazione. Una classe statica dedicata o addirittura la memorizzazione come risorse è una buona idea.

    
risposta data 24.06.2012 - 02:12
fonte
-1

Non dovresti creare query dinamiche. La soluzione migliore in questo ambiente sarebbe creare stored procedure. Assicurati che anche le tue stored procedure non siano generate dinamicamente. Ogni campo deve essere parametrizzato per evitare il rischio di un attacco di iniezione sql. È anche una violazione della separazione delle preoccupazioni. Il codice dell'applicazione deve essere costituito dalla logica dell'applicazione. Il tuo database dovrebbe contenere le tue query del database.

Per non parlare, queste query generate dinamicamente diventeranno un incubo da mantenere.

    
risposta data 24.06.2012 - 02:21
fonte

Leggi altre domande sui tag