OData con core EF / core ASP.NET - Buono o cattivo?




 Ho letto molto su OData con EF Core / ASP.NET Core. Mi sembra che tutti abbiano un'opinione su questo e si è un po 'confuso, quindi, a costo di sembrare stupido, ho alcune domande: 

 Notare che:   
 ! NON sto parlando del classico ASP.NET 4.6 o 4.7 con EF6!   
 ! Sto parlando di ASP.NET Core con EF Core! 

1. Considerando le API di costruzione: ci sono cose che EF Core da solo non è in grado di gestire così come EF Core con OData?
2. Considerando la creazione di API - Non è meglio costruire API RESTful pulite invece di API in stile OData?
3. Non sta implementando la tecnologia OData sacrificando le best practice per comodità?
4. E a lungo termine? ASP.NET Core + EF Core non è stato creato pensando alla velocità e all'efficienza e quindi non saranno più veloci e più efficienti da soli?
Vado con [il consiglio di Shawn Wildermuth](https://app.pluralsight.com/library/courses/aspdotnetcore-implementing-securing-api/discussion) che ho trovato su Pluralsight: 


>  OData significa che le query sono sul client in modo tale che i **servizi OData di versioning divengano rischiosi** e sembra che la **SM si stia allontanando da essa,** quindi non ho fiducia nemmeno sulla redditività a lungo termine di esso. 
> 
>
Io, riguardo l'ultimo aggiornamento, non ho riscontrato problemi. Completo con facilità e velocità le lezioni, e anche quando non carica velocemente, aspetto qualche secondo, esco e rientro nell'App. Non so se tu ne sia a conoscenza, ma esiste anche il sito, per PC. Lì è molto più efficiente, veloce, e ci sono più funzioni. Spero di essere stata d'aiuto. Buono studio a tutti! <p>per non dire che le altre risposte qui non hanno merito, fanno dei buoni punti. ma vado contro il consenso generale e sono d'accordo con te sul fatto che passare a siti web per qualcosa di più delle semplici funzionalità in tempo reale è molto interessante.</p><p>sto seriamente pensando di spostare la mia app da un'architettura restful a più di uno stile rpc tramite websocket. questa non è una "app giocattolo" e non sto parlando solo di funzionalità in tempo reale, quindi ho delle riserve. ma vedo molti vantaggi nel percorrere questa strada e sento che potrebbe rivelarsi una soluzione eccezionale.</p><p>il mio piano è di usare <a href="http://substack.net/posts/85e1bd/dnode-asynchronous-remote-method-invocation-for-node-js-and-the-browser">dnode</a> , <a href="http://socket.io/">socketio</a> e <a href="https://github.com/jashkenas/backbone">backbone</a> . con questi strumenti, i miei modelli e raccolte backbone possono essere passati da/a client e server semplicemente chiamando uno stile rpc di funzioni. niente più gestione rest endpoint, serializzazione/deserializzazione di oggetti e così via. non ho ancora lavorato con socketstream, ma vale la pena dare un'occhiata.</p><p>ho ancora molta strada da fare prima di poter affermare definitivamente che questa è una buona soluzione e sono sicuro che non sia la soluzione migliore per ogni applicazione, ma sono convinto che questa combinazione sarebbe eccezionalmente potente. ammetto che ci sono alcuni svantaggi, come la perdita della capacità di memorizzare nella cache le risorse. ma ho la sensazione che i vantaggi li supereranno.</p><p>sarei interessato a seguire i tuoi progressi esplorando questo tipo di soluzione. se hai qualche esperimento su github, ti prego di indicarmi. non ne ho ancora, ma spero presto.</p><p>di seguito è riportato un elenco di collegamenti da leggere in seguito che ho raccolto. non posso garantire che valgano tutti la pena, dato che ne ho solo scremati molti. ma spero che alcuni possano aiutare.</p><hr><p>ottimo tutorial sull'uso di socket.io con express. espone sessioni espresse a socket.io e discute come avere stanze diverse per ogni utente autenticato.</p><ul> <li> <a href="http://www.danielbaulig.de/socket-ioexpress/">http://www.danielbaulig.de/socket-ioexpress/</a> </li> </ul><p>tutorial su node.js/socket.io/backbone.js/express/connect/jade/redis con autenticazione, joyent hosting, ecc:</p><ul> <li> <a href="http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time-chat-app/">http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time- chat-app /</a> </li> <li> <a href="http://fzysqr.com/2011/03/27/nodechat-js-continued-authentication-profiles-ponies-and-a-meaner-socket-io/">http://fzysqr.com/2011/03/27/nodechat-js-continued-authentication-profiles-ponies-and-a-meaner-socket-io/</a> </li> </ul><p>tutorial sull'uso di pusher con backbone.js (usando rails):</p><ul> <li> <a href="http://blog.pusher.com/2011/6/21/backbone-js-now-realtime-with-pusher">http://blog.pusher.com/2011/6/21/backbone-js-now-realtime-with-pusher</a> </li> </ul><p>crea un'applicazione con backbone.js sul client e node.js con express, socket.io, dnode sul server.</p><ul> <li> <a href="http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/">http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/</a> </li> <li> <a href="http://addyosmani.com/blog/building-spas-jquerys-best-friends/">http://addyosmani.com/blog/building-spas-jquerys-best-friends/</a> </li> <li> <a href="http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time-chat-app/">http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time- chat-app /</a> </li> <li> <a href="http://fzysqr.com/2011/03/27/nodechat-js-continued-authentication-profiles-ponies-and-a-meaner-socket-io/">http://fzysqr.com/2011/03/27/nodechat-js-continued-authentication-profiles-ponies-and-a-meaner-socket-io/</a> </li> </ul><p>utilizzando backbone con dnode:</p><ul> <li> <a href="http://quickleft.com/blog/backbone-without-ajax-part-ii">http://quickleft.com/blog/backbone-without-ajax-part-ii</a> </li> <li> <a href="http://quickleft.com/blog/backbone-without-ajax-part-1">http://quickleft.com/blog/backbone-without-ajax-part-1</a> </li> <li> <a href="http://sorensen.posterous.com/introducing-backbone-redis">http://sorensen.posterous.com/introducing-backbone-redis</a> </li> <li> <a href="https://github.com/cowboyrushforth/minespotter">https://github.com/cowboyrushforth/minespotter</a> </li> <li> <a href="http://amir.unoc.net/how-to-share-backbonejs-models-with-nodejs">http://amir.unoc.net/how-to-share-backbonejs-models-with-nodejs</a> </li> <li> <a href="http://hackerne.ws/item?id=2222935">http://hackerne.ws/item?id=2222935</a> </li> <li> <a href="http://substack.net/posts/24ab8c">http://substack.net/posts/24ab8c</a> </li> </ul> <p>due cose che consiglierei:</p><ul> <li> <p>discuti con loro e scopri quanto sono appassionati di ciò che fanno. questo è un buon indicatore per stabilire se qualcuno è un buon assunto per qualsiasi settore, ma in particolare, vuoi valutare quanto sono coinvolti e in grado di tenere il passo con gli eventi. trovo le persone che sanno cosa sta succedendo, cosa c'è di nuovo, cosa sta tagliando edge e da tutte quelle cose che cosa usare e quando usarlo sono più utili delle persone che hanno imparato il modo teorico per costruire un'interfaccia utente nel 1995 ma non hanno tenuto il passo con il mondo reale.</p> </li> <li> <p>fagli riprogettare qualcosa che non ti piace molto. questo è importante perché una delle abilità principali di un designer dell'interazione è <em>refactoring</em>, che dovrebbe esserti familiare come programmatore. la riprogettazione non consiste nel buttare via tutto e ricominciare da zero, si tratta di sapere cosa cambiare, perché cambiarlo e comprendere l'impatto di tale cambiamento sulla base utenti, sul client e sul team di progettazione.</p> </li> </ul><p>quindi, per esempio, inizierei la prima parte con domande del tipo "cosa ti piace di hunch?" o "come ti senti sulla nuova ricerca di google immagini?". in questo modo puoi capire se sanno anche cosa sta succedendo nella progettazione dell'interfaccia utente. "sei entusiasta di progettare piattaforme mobili?", ecc. chiedi loro di parlarti della loro app o del loro gioco preferito e di spiegare cosa c'è di così straordinario dal punto di vista dell'interfaccia utente/ia. fai in modo che ti vendano qualcosa: il loro monologo/sfogo appassionato su qualcosa ti darà una buona idea se sanno di cosa stanno parlando o se stanno solo inventando qualcosa.</p><p>la seconda parte è più difficile dato che non sei tu stesso un designer, ma come per le domande di intervista di programmazione, non si tratta tanto del risultato finale quanto del processo. quindi assicurati che quando chiedi loro di ridisegnare qualcosa, sia abbastanza piccolo da poter passare attraverso quel processo con te. presta attenzione a come lo fanno: tirano fuori un blocco da disegno e iniziano a disegnare idee? dicono "bene, hai un computer con photoshop installato?". cominciano a fare domande? tutte queste cose ti diranno come comunicano, come imparano, quanto sono curiosi. se sono buoni, quindi prima di prendere decisioni avventate sul cambiamento di un'interfaccia utente, vorranno capirlo nel miglior modo possibile. ciò significa comprendere la logica aziendale, la visione/strategia e le decisioni ingegneristiche.</p><p>capisco che il mio consiglio non è convenzionale, ma ho sempre aderito all'idea che se qualcuno è una persona buona, appassionata e onesta, nel lungo periodo faranno di più per te che se potessero nominare 5 designer famosi e 10 i libri dell'interfaccia utente sono in cima alle loro teste. nell'intervista, è necessario non solo testarli per curiosità sull'interfaccia utente, ma anche su come svolgono il loro lavoro. questo metodo è davvero bravo a farlo.</p> dipende anche dallo standard/modulo delle memorie ram...

mi spiego meglio, devi sapere che vi sono 3 "standard" per le memorie ram ddr, ddr2 e ddr3 (le ddr3 sono le migliori) ogni standard ha una velocità di trasferimento e quindi una velocità di risposta diversa dalle altre inoltre, nell'ambito di uno stesso standard, vi sono moduli diversi che possono variare ulteriormente le prestazioni (seppure di poco)...
se quindi, per dire, gli 8 gb sono ddr2 e i 4 gb ddr3 ti consiglio assolutamente di prendere il desktop con ram ddr3, a parità di standard/modulo allora meglio gli 8 gb (la ram non è mai troppa xd)...


per maggiori informazioni riguardo gli standard e i moduli trovi tutte le informazioni su wikipedia:
http://it.wikipedia.org/wiki/ddr3
http://it.wikipedia.org/wiki/ddr2
http://it.wikipedia.org/wiki/ddr\_sdram un acer proprio no,hp ha un quad core ,la scheda video dedicata da 2 gb,12 gb ram,doppi altoparlanti,hhd da 1 tb,pesa solo 2 kg,e la batteria è migliore,hp è molto meglio e costa uguale **Disclaimer** : sono il proprietario del progetto [Entity Framework Plus](http://entityframework-plus.net/) 

 Entity Framework Plus utilizza il MemoryCache per impostazione predefinita. Non escludiamo nulla. Vedi [EF + Memory Cache](https://github.com/zzzprojects/EntityFramework-Plus/blob/master/src/shared/Z.EF.Plus.QueryCache.Shared/QueryCacheManager.cs#L39-L45) 

 Quindi la domanda dovrebbe essere più `What is the default .NET Memory Cache duration?` 

 Guardando su [MSDN](https://msdn.microsoft.com/en-us/library/ff477235.aspx) , sembra che se non viene fornito nulla, il valore predefinito è `InfiniteAbsoluteExpiration` 


>  Se non vengono fornite informazioni sullo sfratto o sulla scadenza, il valore predefinito è InfiniteAbsoluteExpiration, il che significa che gli elementi nella cache non scadono in base a un tempo assoluto. Invece, gli elementi scadono solo quando c'è la pressione della memoria. Come best practice, dovresti sempre fornire esplicitamente una scadenza assoluta o di raccordo. In questa procedura dettagliata, si utilizza una scadenza assoluta di 10 secondi. 
> 
> <p>al livello più basso, winrt è un modello a oggetti definito a livello abi. usa com come base (quindi ogni oggetto winrt implementa <code>iunknown</code> e ricontatta), e costruisce da lì. aggiunge molti nuovi concetti rispetto a com di vecchi, molti dei quali provengono direttamente da .net - ad esempio, il modello a oggetti winrt ha delegati e gli eventi sono fatti in stile .net (con delegati e aggiungi/rimuovi abbonato metodi, uno per evento) anziché il vecchio modello com di origini e sink di eventi. tra le altre cose degne di nota, winrt ha anche interfacce parametrizzate ("generiche").</p><p>un altro grande cambiamento è che tutti i componenti winrt hanno metadati disponibili per loro, proprio come gli assembly .net. in com è una specie di quello con typelibs, ma non tutti i componenti com li avevano. per winrt, i metadati sono contenuti nei file .winmd - guarda dentro "c:\programmi (x86)\windows kits\8.0\windows metadata \" in anteprima sviluppatore. se cerchi, vedrai che in realtà sono assiemi cli senza codice, solo tabelle di metadati. puoi aprirli con ildasm, in effetti. nota, questo non significa che winrt stesso sia gestito, ma semplicemente riutilizza il formato del file.</p><p>quindi ci sono un certo numero di librerie implementate in termini di quel modello di oggetti - che definiscono le interfacce e le classi winrt. ancora una volta, guarda la cartella "windows metadata" di cui sopra per vedere cosa c'è lì; o semplicemente avvia object browser in vs e seleziona "windows 8.0" nel selettore di framework, per vedere cosa è coperto. c'è molto lì e non si occupa solo dell'interfaccia utente: ottieni anche spazi dei nomi come <code>windows.data.json</code>, o <code>windows.graphics.printing</code>, o <code>windows.networking.sockets</code>.</p><p>quindi ottieni diverse librerie, che si occupano in particolare dell'interfaccia utente, per lo più si tratta di vari spazi dei nomi in <code>windows.ui</code> o <code>windows.ui.xaml</code>. molti di loro sono molto simili agli spazi dei nomi wpf/silverlight - ad es. <code>windows.ui.xaml.controls</code> è strettamente corrispondente <code>system.windows.controls</code>; idem per <code>windows.ui.xaml.documents</code> eccetera.</p><p>ora .net ha la possibilità di fare riferimento direttamente ai componenti winrt come se fossero assembly .net. funziona diversamente dall'interoperabilità com: non hai bisogno di artefatti intermedi come gli interoperativi, devi solo <code>/r</code> un file .winmd e tutti i tipi e i relativi membri nei suoi metadati diventano visibili a te come se fossero oggetti .net. si noti che le stesse librerie winrt sono completamente native (e quindi i programmi c++ nativi che utilizzano winrt non richiedono affatto clr) - la magia per esporre tutta quella roba come gestita è all'interno del clr stesso, ed è di livello abbastanza basso. se ildasm un programma .net che fa riferimento a un .winmd, vedrai che in realtà sembra un riferimento esterno all'assemblea - non ci sono giochi di prestigio come il tipo di inserimento lì.</p><p>non è nemmeno una mappatura smussata - clr tenta di adattare i tipi di winrt ai loro equivalenti, ove possibile. quindi ad es. guid, date e uri diventano <code>system.guid</code>, <code>system.datetime</code> e <code>system.uri</code>, rispettivamente; interfacce di raccolta winrt come <code>iiterable&lt;t&gt;</code> e <code>ivector&lt;t&gt;</code> diventa <code>ienumerable&lt;t&gt;</code> e <code>ilist&lt;t&gt;</code>; e così via. questo funziona in entrambi i modi: se si dispone di un oggetto .net che implementa <code>ienumerable&lt;t&gt;</code> e restituiscilo a winrt, lo vedrà come <code>iiterable&lt;t&gt;</code>.</p><p>in definitiva, ciò significa che le tue app .net metro hanno accesso a un sottoinsieme delle librerie .net standard esistenti e anche alle librerie (native) winrt, alcune delle quali - in particolare <code>windows.ui</code> - sembra molto simile a silverlight, per quanto riguarda le api. hai ancora xaml per definire la tua ui e gestisci ancora gli stessi concetti di base di silverlight: associazioni di dati, risorse, stili, modelli ecc. in molti casi, è possibile eseguire il porting di un'app silverlight semplicemente con <code>using</code> i nuovi spazi dei nomi e modificando alcuni punti del codice in cui l'api è stata modificata.</p><p>winrt stesso non ha nulla a che fare con html e css, e ha relazione con javascript solo nel senso che è anche esposto lì, in modo simile a come viene fatto per .net. non è necessario avere a che fare con html/css/js quando si utilizzano le librerie dell'interfaccia utente winrt nella propria app .net metro (beh, immagino, se proprio lo si desidera, è possibile ospitare un controllo <code>webview</code>. .). tutte le tue competenze .net e silverlight rimangono molto rilevanti in questo modello di programmazione.</p> <p>questo <a href="http://windowsteamblog.com/windows\_phone/b/wpdev/archive/2010/03/18/windows-phone-7-series-ui-design-amp-interaction-guide.aspx">post di blog</a> si collega a <a href="http://msdn.microsoft.com/en-us/library/hh202915%28v=vs.92%29.aspx">guida all'interfaccia e alla progettazione dell'interfaccia utente di windows phone 7 series</a> , che probabilmente ti interesserà.</p><p>se stai creando un'app nativa, probabilmente vorrai realizzarla in conformità con la guida all'interfaccia utente del dispositivo. un'eccezione potrebbe essere se stai creando un'applicazione che fornisce un'interfaccia a un sito web (come le applicazioni twitter e facebook per iphone e android) - qui, potresti voler progettare in modo che assomigli al tuo sito web per fornire familiarità agli utenti.</p><p>la decisione di seguire o meno la guida all'interfaccia utente è interamente tua. sebbene in genere sia una buona idea presentare agli utenti un'interfaccia familiare di qualche tipo: un'altra applicazione (web o desktop) o l'interfaccia del telefono.</p> mizzega, non è semplice, sai programmare?
comunque ti consiglio inizia a prepararti le pagine con le informazioni, le prime, poi creati il motore di ricerca e prova il tutto, se funziona prova a crearti un installer, comunque sara mooolto pesante e dura, altrimenti prova con excel certo , le sue obiezioni sono fondate.  

consigliabile lente EDOF, che da solo un leggero miglioramento della vicino per vicino, con effetti collaterali nulli o modesti.  

Non bisogna però avere aspettative eccessive da tale tipo di IOL.  

Infatti esse , sostanzialmente , producono una ottima visione per lontano e solo un modesto miglioramento per vicino  

cordiali saluti  

DDC*Dr. DANIELE DI CLEMENTE*![](/img/segnala.gif)