BlogServiceHost.Create()

WCF & Azure - Il blog di Fabio Cozzolino

Recent Posts

Tags

My

Twitter

Community

Archives

Email Notifications

Social Bar Widget

MVP 2014...Renewed!

E' da un bel po' che non scrivo sul blog...(caspita, davvero da tanto... Sad), ma questa non posso assolutamente evitarla: ho ricevuto l'award MVP per la quinta volta!

Ogni anno, il primo di aprile è un giorno speciale proprio per l'attesa che si crea e il check continuo della posta. Anche quest'anno la fatidica mail è arrivata.

Ringrazio tutti i membri della community, nessuno escluso, perchè questo riconoscimento è una conferma del lavoro fatto fino ad ora ma soprattutto uno stimolo per continuare a contribuire e a condividere quello che ci piace fare. Siamo fortunati, perchè la nostra passione è anche il nostro lavoro.

WCF Self-hosting

Ieri, durante l’evento Connected Open Web, ho mostrato la possibilità di fare self-hosting con WCF. Per chi me lo ha poi chiesto, riporto qui il codice completo:

   1: class Program
   2: {
   3:     static void Main(string[] args)
   4:     {
   5:         var host = new ServiceHost(typeof(MyService), new Uri("http://localhost:10101/dotnetside"));
   6:         host.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = true });
   7:         host.AddServiceEndpoint(typeof (MyService), new BasicHttpBinding(), "");
   8:         host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
   9:         
  10:         host.Open();
  11:  
  12:         Console.ReadLine();
  13:  
  14:         host.Close();
  15:     }
  16: }
  17:  
  18: [ServiceContract]
  19: public class MyService
  20: {
  21:     [OperationContract]
  22:     public string Get(string name)
  23:     {
  24:         return "Hi, " + name;
  25:     }
  26: }

Questo è il risultato dal WcfTestClient:

image

Fabio

Microsoft Integration platform: slides

Le slides della mia sessione sulla piattaforma Microsoft per l'integrazione:

Microsoft Integration Platform from Fabio.Cozzolino

 

Eventi in arrivo...

Siamo a giugno! Da calendario l'estate dovrebbe essere alle porte, ma quest'anno, come una bella donna, si sta facendo attendere. Ad ogni modo, noi di DotNetSide andiamo avanti. Giovedì prossimo nuovo evento in cui si parla di architetture distribuite, servizi, SOAP, REST, WCF, BizTalk, WebAPI, ServiceStack, SignalR, e ovviamente tutto quello che ci volete mettere voi Big Smile. L'evento è, come al solito, gratuito.

Non mancherà qualche benefit per i partecipanti Wink

Vi consiglio assolutamente di non mancare!

Microsoft Integration MVP 2013

Renewed!

Il 1 aprile, come ogni anno, c'è il secondo ciclo (avviene ogni trimestre) di nomine/rinnovi dell'award MVP. Per il quarto anno di fila Microsoft sono stato premiato nella categoria "Integration" (aka Connected Systems). WOW!

L'award è un traguardo, ma anche un punto di partenza ed una responsabilità ulteriore per le mie attività in DotNetSide.

Un grazie a tutti e ... stay tuned ... novità in arrivo Smile!

.NET Campus 2013 @ Roma

Anche quest'anno ho avuto l'onore di rappresentare DotNetSide alla tappa romana del .NET Campus 2013, contribuendo con una sessione dal titolo "notify your windows store app", totalmente incentrata sull'utilizzo del Service Bus Notification Hub come backend per la gestione dell'intero ciclo di vita delle sottoscrizioni ai vari Push Notification Services e dell'invio delle notifiche.

Il .NET Campus è come sempre una splendida occasione per incontrare amici e poter fare due chiacchiere praticamente parlando di tutto. Gran bella esperienza :).

Purtroppo durane la sessione il mio notebook ha dato i numeri e non sono riuscito, a tempo ormai scaduto, a mostrare quello che avrei voluto. Farò al più presto un video. Nel frattempo qui potete visionare le slide della mia sessione.

Novità e price-drop in Windows Azure

Ieri sono state annunciate da Scott Guthrie tante, ma davvero tante, novità per quanto riguarda Windows Azure. Queste le più rilevanti:

 

  • Mobile Services (job scheduler support, Europe Region Support, Command Line Support)
  • Web Sites (scale improvements, integrated source control)
  • SQL Data Sync (support in the new HTML portal)
  • ACS Management (support in the new HTML portal)
  • Media Services (job and task management, blob storage support, reserved compute)
  • Virtual Network enhancements
  • Subscription Filtering Support
  • Windows Azure Store (now available in more countries)
La comodità di creare jobs per i Mobile Services è sicuramente una bella opportunità, ma finalmente si possono "posizionare" i servizi, ancora in beta, anche in Europa :). Anche il supporto nel nuovo portale di SQL Data Sync è una importante novità: consente infatti di mantenere sincronizzati due o più SQL Database o SQL Server che possono trovarsi sia on-premises sia nel cloud, magari posizionati in datacenters differenti. Finalmente si intravede nel nuovo portale, con capacità limitate alla sola creazione/cancellazione, l'Access Control Service anche se solo come link alla vecchia pagina di gestione. Tutti i dettagli li trovate nel post di ScottGu.

Windows Azure Storage price-drop

Tra gli annunci di questa settimana, vi è anche un ulteriore price-drop per i servizi di Storage, con un abbassamento generale dei prezzi del 28% circa. Questi i nuovi prezzi per GB al mese, con le differenze tra storage ridondati geograficamente (diversi datacenter) e storage ridondati localmente (stesso datacenter):

Capacità dello StorageGeographically RedundantLocally Redundant
Primo 1 TB / Mese €0,0674 per GB €0,0497 per GB
Successivi 49 TB / Mese €0,0568 per GB €0,0461 per GB
Successivi 450 TB / Mese €0,0497 per GB €0,0426 per GB
Successivi 500 TB / Mese €0,0461 per GB €0,0391 per GB
Successivi 4,000 TB / Mese €0,0426 per GB €0,032 per GB
Successivi 4.000 TB / Mese €0,0391 per GB €0,0263 per GB
Oltre 9.000 TB / Mese contattare Microsoft contattare Microsoft

Service Bus

Recentemente sono anche stati modificati i limiti di utilizzo del Service Bus Relay. La documentazione ufficiale ad oggi non riporta i nuovi limiti, ma dovrebbe essere aggiornata a breve. Queste le novità:

  • Numero di endpoint massimi per namespace: 10.000 (equiparato al messaging)
  • Numero di connessioni concorrenti per namespace: 5.000 (non c'è un limite forzato per connessioni per endpoint)
  • Numero di namespaces per sottoscrizione: 50
Insomma, sono giornate piene di novità. C'è da dire che da quando Scott Guthrie, oltre un anno è mezzo fa, ha preso in mano Windows Azure, le novità non si sono fatte attendere e c'è stata una grandissima sferzata a tutta la piattaforma, che oggi ha raggiunto dimensioni notevoli, con un elevato numero di servizi a supporto e pronti per essere utilizzati.
Bene, bene, si prospetta un 2013 davvero interessante...  Smile

Cannot get entity ‘{queue name}’ because it is not of type QueueDescription

Se nell'utilizzo delle code del Service Bus di Windows Azure vi dovesse capitare di incappare in questo messaggio di errore, verificate di non aver già creato un Topic con quello stesso nome Big Smile.

Community Days 2012 @ Bari

La tappa di Bari dei Community Days è ormai alle porte, manca poco meno di una settimana a quello che sarà sicuramente un evento da ricordare. Due giorni con quattro track e diversi speaker e autori di libri riconosciuti a livello nazionale ed internazionale come non si era mai visto dalle “nostre parti” Smile.

L’agenda è bella ricca e densa di sessioni interessanti. Parleremo non solo di Windows Phone e di Azure, ma anche dell’imminente Windows 8 e di come cambierà il nostro approccio allo sviluppo di applicazioni. A completare il tutto ci saranno anche i lab in parallelo.

Se non vi siete ancora iscritti, fatelo perchè ne varrà senz’altro la pena.

Un premio alla trasparenza…

…di Bill Laing e del team di Windows Azure. In questo post viene riportato un dettagliato report di quanto è successo, con spiegazioni tecniche del perchè è successo e di quelli che sono stati i passaggi fatti per risolvere il problema (anche gli errori).

Ad ogni modo, questa frase descrive la natura del bug:

The leap day bug is that the GA calculated the valid-to date by simply taking the current date and adding one to its year.

Chiaramente il 2013 non è bisestile e il 29 febbraio non esiste…

Il post si conclude con “abbiamo imparato la lezione, ora miglioriamo il servizio così…”. Davvero interessante anche dal punto di vista tecnico ed operativo.

Posted: Mar 10 2012, 10:48 AM by Fabio.Cozzolino | with no comments
Filed under:
Ancora un Price Drop per Windows Azure Storage e la Extra-Small Instance

Dopo i tagli ai prezzi dello Storage dello scorso ottobre, passati da $ 0,15/GB a $ 0,14/GB, e la recente rivisitazione della politica dei prezzi di SQL Azure, da ieri 8 Marzo sono stati annunciati, e subito attuati, tagli per circa il 12%.

Si passa quindi da $ 0,14/GB a $ 0,125/GB che in euro è 0,0887/GB, con un risparmio quindi importante. In realtà la revisione è ben più articolata e, seguendo uno schema simile a quello di SQL Azure, è inversamente proporzionale rispetto alla quantità di dati utilizzata.

Impegno spazio di archiviazione

Prezzo

Tariffa standard scontata

1 - 50 TB / mese

€ 0,0781 / GB

10,7%

51 - 500 TB / mese

€ 0,0681 / GB

20%

501 - 1.000 TB / mese

€ 0,066 / GB

26.4%

1.001 TB - 5 PB / mese

€ 0,0589 / GB

29,3%

Maggiore di 5 PB / mese

Richiedere ulteriori informazioni

Richiedere ulteriori informazioni

Ma non basta. Un altro taglio del 50% riguarda la Extra-Small Instance che passa ora a € 0,0142.

A questa pagina trovate tutti i prezzi in euro aggiornati.

Service Bus Explorer

"Rimbalzo" la notizia dal blog di Nino Crudele che segnala l'uscita della nuova release del Service Bus Explorer, il tool scritto da Paolo Salvatori che permette di gestire e testare il proprio Service Namespace. 

A questo link potete trovare l'articolo completo che ne spiega ampiamente le funzionalità.

Dalle WCF Web API alle ASP.NET Web API

Seguo da un po’ di tempo le evoluzioni delle WCF Web API, un framework che si poggia sull’infrastruttura di WCF per renderla meno ostica e facilmente estendibile, ma soprattutto adatta all’utilizzo di REST.

Quando sembrava che le WCF Web API sarebbero finalmente confluite all’interno di WCF 4.5, c’è stato un cambio di rotta: ASP.NET Web API. Le Web API, infatti, si sono sempre trovate in mezzo a due mondi: quello dei servizi (WCF) e quello web (ASP.NET). Il motivo per cui è stato infine scelto di far confluire il tutto in ASP.NET è riassunto nelle parole del comunicato comparso sul sito WCF di codeplex:

Web APIs have a foot in two worlds: the world of service orientation and the World Wide Web. We decided to align ASP.NET Web API with the rest of the Microsoft web platform, so we went with the brand that communicates this alignment. From a technical perspective we also decided to go with a new HTTP specific dispatcher instead of trying to carry forward the WCF dispatcher, so there is virtually no WCF code in the new stack.

Dal mio punto di vista, devo dire che non mi sembra la scelta migliore. Legare il concetto di Web API ad ASP.NET non mi sembra la strada corretta. Che significa? Che devo necessariamente utilizzare IIS? No, in realtà no, perchè posso utilizzare, in quel caso, il canale HTTP di WCF. Questo sembra generare già da ora confusione e i primi discorsi con qualche collega non fanno altro che confermarlo.

WCF ASP.NET Web API, al di là di queste discussioni, sembra promettere diverse cose interessanti e nei prossimi giorni tornerò sicuramente su questo argomento.

Maggiori info le potete trovare qui e ovviamente anche qui.

Nuovi prezzi di SQL Azure

Qualche giorno fa è stata annunciato un nuovo taglio ai prezzi di SQL Azure. Questa la tabella di confronto:

GB

Previous Pricing

New Pricing

New Price/GB

Total % Decrease

5

€35,40

€18,43

€3,686

48%

10

€70,84

€32,66

€3,266

54%

25

€162,94

€53,85

€2,154

75%

50

€318,80*

€89,27

€1,785

75%

100

€318,80*

€124,70

€1,247

65%

150

€318,80*

€160,12

€1,067

55%

Oltre ai tagli, è stata annunciato anche un nuovo database size “entry-level” di 100MB, con un costo fisso di 3,5425 euro al mese. Occhio, però, che il sistema di calcolo non è proprio rigido. Se il nostro DB occupa mediamente 3GB al mese, pagheremo la cifra parziale di 12,753.

Il tutto è ben spiegato nella relativa sezione in questa pagina e che riporto per comodità e completezza:

Database, in base alle dimensioni del database:

Prezzo

Il database di SQL Azure è fatturato in base a una tariffa progressiva basata sulle dimensioni del database. È disponibile in due edizioni: Web e Business. Il database Web Edition supporta fino a un massimo di 5 GB di database relazionale basato su T-SQL. Il database Business Edition supporta fino a una dimensione massima pari a 150 GB di database relazionale basato su T-SQL.


Dimensioni del database Prezzo per database al mese
da 0 a 100 MB Fisso € 3,5425
Maggiore di 100 MB fino a 1 GB Fisso € 7,085
Maggiore di 1 GB fino a 10 GB € 7,085 per il primo GB, € 2,834 per ogni GB aggiuntivo
Maggiore di 10 GB fino a 50 GB € 32,5906 per i primi 10 GB, € 1,417 per ogni GB aggiuntivo
Maggiore di 50 GB fino a 150 GB € 89,2699 per i primi 50 GB, € 0,7085 per ogni GB aggiuntivo
Dettagli fatturazione

Per l'utilizzo di ogni database SQL Azure viene addebitata una tariffa mensile, la quale viene tuttavia ammortizzata sul mese e calcolata su base giornaliera. Per database maggiori di un 1 GB, i costi verranno addebitati nel successivo incremento da un gigabyte. Se ad esempio sono stati utilizzati due database Business Edition, uno da 4,4 GB e uno da 14,4 GB per 1 giorno in un mese di fatturazione, si verrà addebitati per 5 GB e 15 GB di database per tale giorno per un totale di € 1,8745. Di seguito sono riportati i calcoli:

  • 5 GB: (€ 7,085 per il primo GB + € 2,834 per GB per i 4 GB successivi) / 31 giorni = € 0,5944
  • 15 GB: (€ 32,5906 per i primi 10 GB + € 1,417 per GB per i 5 GB successivi) / 31 giorni = € 1,2802

Per maggiori informazioni sui prezzi di Windows Azure:
https://www.windowsazure.com/it-it/pricing/details/#top

Utilizzare il Windows Azure Content Delivery Network

Windows Azure CDN è un sistema che consente di spostare i contenuti dei blobs in un nodo di “caching” geograficamente localizzato in prossimità dell’utente che consuma quell’informazione. In sostanza invece di accedere al datacenter in cui si trova il dato, ad esempio un’immagine, la richiesta viene servita da un altro datacenter.

Sono due i vantaggi che derivano da questo utilizzo:

  1. Miglioramento delle performance perchè il dato è geograficamente più vicino;
  2. Miglioramento della scalabilità, dato che il carico di richieste non grava più su un unico datacenter, ma viene distribuito sui diversi nodi della rete;

I nodi del CDN sono circa 24 sparsi nel mondo, mentre i datacenter di Azure sono 6. Dal punto di vista dei costi, sono identici a quelli degli Storage Services, il che non cambia nulla in termini di “spesa” mensile.

Ma come possiamo utilizzare il CDN? Dopo averlo attivato, se abbiamo scritto bene il codice per recuperare la stringa di connessione per l’accesso ai Blob Services, utilizzando questa sintassi:

   1: CloudStorageAccount account;
   2: account = CloudStorageAccount.FromConfigurationSetting("StorageConnection");
   3: var client = new CloudBlobClient(account.BlobEndpoint, account.Credentials);

praticamente non dobbiamo far altro che modificare la stringa di connessione, anche con la nostra applicazione in produzione, aggiungendo il BlobEndpoint (BlobEndpoint=http://cdn.mycustomdomain.it) che abbiamo assegnato al CDN:

   1: <?xml version="1.0" encoding="utf-16"?>
   2: <ServiceConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" serviceName="" osFamily="2" osVersion="*" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
   3:   <Role name="MyCloudApp">
   4:     <ConfigurationSettings>
   5:       <Setting name="Storage" value="DefaultEndpointsProtocol=http;AccountName=myaccount;AccountKey=ah7ym..z5u==;BlobEndpoint=http://cdn.mycustomdomain.it" />
   6:     </ConfigurationSettings>
   7:     <!-- other settings -->
   8:   </Role>
   9: </ServiceConfiguration>

Giusto il tempo di aggiornare gli le istanze ed il gioco è fatto Smile

Per approfondimenti: https://www.windowsazure.com/en-us/home/tour/cdn/

More Posts Next page »