Emanuele Bartolesi

Office 365, SharePoint e ASP.NET

Fake REST API - un servizio per testare le applicazioni

Negli ultimi tempi mi capita spesso di realizzare applicazioni JavaScript che utilizzano servizi REST per recuperare dati. Oltre a questo mi succede spesso di dover fare lezioni o eventi su tecnologie molto simili.
Ogni volta creare un servizio REST che restituisca dei dati sensati (e magari correlati fra loro) mi porta via molto tempo, nonostante la velocità con cui si possono realizzare delle REST API con ASP.NET.
Per ovviare a questo problema ho deciso di realizzare delle REST API che mi potessero servire in qualsiasi momento per testare le mie applicazioni.
Potete trovare a questo indirizzo (http://fakerestapi.azurewebsites.net/) e da subito potete iniziare a utilizzarle con lo stesso scopo.
Sul sito potete trovare un esempio di chiamata in jQuery (facilmente "traducibile" in AngularJS) e tutte le risorse che restituisce il servizio.
Activities e Users sono due entità scollegate dalle altre con dei dati di esempio abbastanza intuibili.
Le altre invece, Books, Authors e CoverPhotos, sono delle entità collegate fra loro.
Partendo da Books è possibile risalire agli Authors collegati e sempre a partire da Books è possibile ottenere le CoverPhotos rispettive.
Come ultima cosa, è possibile visualizzare la lista delle operazioni possibili direttamente da Swagger configurato sul sito: http://fakerestapi.azurewebsites.net/swagger/ui/index

Se siete curiosi di vedere come sono state realizzate, potete consultare o scaricare i sorgenti da Github: https://github.com/kasuken/fakerestapi

Rilasciata la versione 6.1 di NodeJS

A distanza di sei mesi dalla versione 5.0, ieri è stata rilasciata la versione 6.1 di NodeJS.
In questa versione, rispetto alla precedente e alla 4, sono state migliorate le prestazioni, l'usabilità e la sicurezza.
Per fare un esempio i moduli vengono caricati quasi quattro volte più velocemente rispetto a NodeJS 4.0.
Inoltre è supportato oltre il 90% di ES6.

Supporto delle versioni

Nonostante l'uscita di questa nuova versione, NodeJS 4 rimane la versione LTS del framework, almeno fino al 2017.
La versione 6.x da questo ottobre invece diventerà la nuova versione LTS.
A questo punto quale versione scegliere per i nostri progetti? Dipende.
Se avete un progetto molto complesso di difficile aggiornamento o comunque preferite la stabilità, sicuramente v4.
Se invece avete bisogno delle ultime novità messe a disposizione e potete migrare velocemente il vostro progetto, va benissimo la v6.
E la v5? E' ancora supportata per qualche mese, poi questa release verrà "sostituita" dalla v6. Se avete invece dei progetti che utilizzano ancora le versione 0.xx, vi conviene pensare ad un aggiornamento perché a fine anno verrà tolto il supporto.

Notable changes

  • assert: deep{Strict}Equal() now works correctly with circular references. (Rich Trott) #6432
  • debugger: Arrays are now formatted correctly in the debugger repl. (cjihrig) #6448
  • deps: Upgrade OpenSSL sources to 1.0.2h (Shigeki Ohtsu) #6550
  • net: Introduced a Socket#connecting property. (Fedor Indutny) #6404
    • Previously this information was only available as the undocumented, internal _connecting property.
  • process: Introduced process.cpuUsage(). (Patrick Mueller) #6157
  • stream: Writable#setDefaultEncoding() now returns this. (Alexander Makarenko) #5040
  • util: Two new additions to util.inspect():
    • Added a maxArrayLength option to truncate the formatting of Arrays. (James M Snell) #6334
      • This is set to 100 by default.
    • Added a showProxy option for formatting proxy intercepting handlers. (James M Snell) #6465
      • Inspecting proxies is non-trivial and as such this is off by default.
  •  Buffer
    • New Buffer constructors have been added #4682 and #5833.
    • Existing Buffer() and SlowBuffer() constructors have been deprecated in docs #4682 and #5833.
    • Previously deprecated Buffer APIs are removed #5048#4594.
    • Improved error handling #4514.
    • The Buffer.prototype.lastIndexOf() method has been added #4846.
  • Cluster
    • Worker emitted as first argument in 'message' event #5361.
    • The worker.exitedAfterDisconnect property replaces worker.suicide #3743.
  • Console
    • Calling console.timeEnd() with an unknown label now emits a process warning rather than throwing#5901.
  • Crypto
    • Improved error handling #3100#5611.
    • Simplified Certificate class bindings #5382.
    • Improved control over FIPS mode #5181.
    • pbkdf2 digest overloading is deprecated #4047.
  • Dependencies
    • Reintroduce shared c-ares build support #5775.
    • V8 updated to 5.0.71.35 #6372.
  • DNS
    • Add dns.resolvePtr() API to query plain DNS PTR records #4921.
  • Domains
    • Clear stack when no error handler #4659.
  • Events
    • The EventEmitter.prototype._events object no longer inherits from Object.prototype #6092.
    • The EventEmitter.prototype.prependListener() and
      EventEmitter.prototype.prependOnceListener() methods have been added #6032.
  • File System
    • The fs.realpath() and fs.realpathSync() methods have been updated to use a more efficient libuv-based implementation.
      This change includes the removal of the cache argument and the method can throw new errors #3594.
    • FS apis can now accept and return paths as Buffers #5616.
    • Error handling and type checking improvements #5616#5590#4518#3917.
    • fs.read's string interface is deprecated #4525.
  • HTTP
    • 'clientError' can now be used to return custom errors from an HTTP server #4557.
  • Modules
    • Current directory is now prioritized for local lookups #5689.
    • Symbolic links are preserved when requiring modules #5950.
  • Net
    • DNS hints no longer implicitly set #6021.
    • Improved error handling and type checking #5981#5733#2904.
  • OS X
    • MACOSX_DEPLOYMENT_TARGET has been bumped up to 10.7 #6402.
  • Path
    • Improved type checking #5348.
  • Process
    • Introduce process warnings API #4782.
    • Throw exception when non-function passed to nextTick #3860.
  • Querystring
    • The object returned by querystring.parse() no longer inherits from Object.prototype #6055.
  • Readline
    • Key info is emitted unconditionally #6024.
    • History can now be explicitly disabled #6352.
  • REPL
    • Assignment to _ will emit a warning #5535.
    • Expressions will no longer be completed when eval fails #6328.
  • Timers
    • Fail early when callback is not a function #4362.
  • Streams
    • null is now an invalid chunk to write in object mode #6170.
  • TLS
    • Rename 'clientError' to 'tlsClientError' #4557.
    • SHA1 used for sessionIdContext #3866.
  • TTY
    • Previously deprecated setRawMode wrapper is removed #2528.
  • URL
    • Username and password will be dropped by url.resolve() if the host changes #1480.
  • Util
    • Changes to Error object formatting #4582.
    • The util._extend() method has been deprecated #4903
    • The util.log() method has been deprecated #6161.
  • Windows
    • Windows XP and Vista are no longer supported #5167.
  • Zlib
    • Multiple improvements have been made to Zlib processing #5883 and #5707.

Materiale evento "Novità di Build 2016"

Si è da poco concluso l'evento di Pisa in cui con DotNetToscana abbiamo parlato di alcune delle novità che hanno fatto vedere a Build 2016.

Io mi sono occupato delle notizie riguardanti ASP.NET Core 1.0.

Abbiamo visto insieme novità come la nuova infrastruttura, la struttura di un progetto ASP.NET, MVC 6, TagHelpers, View Components e tante altre cose.

Per l'occasione ho creato un nuovo repository su GitHub in cui andrò a mettere tutto il materiale che utilizzerò agli eventi, in modo da averne uno solo, senza doverli sempre cercare.

Questo è il link al repository in questione: https://github.com/kasuken/DemoForEvents

Vi Allego anche le slide a questo link: ASP.NET Core 1.0, finalmente!.pdf (4,5MB)