Tag Archives: tutorial

How to share an Azure DevOps Artifact feed with the entire organization

Azure Feeds used to be scoped to an organization. However, to enable public feeds and to become more consistent with the rest of Azure DevOps, feeds created through the new create feed UI are now project-scoped.

The only way to create an org-scoped Azure Artifact Feed is through API calls and it’s not reccomended.

If we want to share a feed with an entire organization this is what we need to do.

Continue reading

CQRS by Example – Simple ASP.Net CORE implementation

In this blog post we’re going to explore a simple ASP.Net Core CQRS WebApi project. The code for this tutorial exposes a demonstrative API to manage a blog.

Continue reading

Servizio WCF ospitato nei Windows Services

Mi sono sempre chiesto la differenza tra ospitare un servizio WCF in IIS e nei Windows Services (services.msc, per capirsi). Così mi sono documentato e ho trovato quanto segue nell’MSDN.

image

Non contento ho fatto una prova completa dalla creazione del progetto all’installazione e interrogazione del servizio per capirci di più. Metto a disposizione il download della soluzione di Visual Studio 2015 che implementa questo esperimento.

Questi sono stati i passaggi.

  1. Nuovo progetto di tipo WCF Service Library
    1
  2. Ho rinominato con F2 i nomi dei file del progetto standard e del servizio che volevo implementare. Ho chiamato l’interfaccia ICalculatorService e la classe che lo implementa CalculatorService. Il servizio espone una funzionalità di somma di numeri con virgola.2
  3. Implementazione molto semplice nella classe CalculatorService.
    3
  4. Ho eseguito il progetto (F5) e mi sono imbattuto subito in un problema: AddressAccessDeniedException. Cercando su MSDN e StackOverflow ho capito che è un problema di privilegi. Per registrare un endpoint di ascolto bisogna avere permessi di amministratore.
    4
  5. Riavviato Visual Studio come amministratore e rieseguito il processo tutto parte senza problemi nell’host dei servizi.5
  6. E con il WCF test client le somme funzionano.6
  7. Viene il momento di creare un nuovo progetto per creare un Servizio Windows che ospiti il servizio WCF. Aggiungo quindi il progetto alla soluzione.7
  8. Un po’ di rinomina sui nomi del file e del servizio che chiamo WindowsCalculatorService rendono più chiaro il lavoro.8
  9. Aggiungo al progetto un installer per facilitare il lavoro di installazione del servizio. Clic destro, Add Installer.9
  10. Il bravo Visual Studio inserisce l’installer correttamente e vado a valorizzare con dei nomi sensati alcune proprietà tipo il nome del servizio con cui poi lo stesso comparirà nell’elenco dei servizi di Windows. C’è anche la possibilità di dare una descrizione (che io ho omesso).10
  11. Sostituisco il metodo Main() di Program.cs del progetto WindowsCalculatorService con queste righe di codice per permettere l’installazione semplicemente avviando l’exe e digitando una lettera: I installa, U disinstalla. 11
  12. Per fare funzionare questo trucchetto bisogna convertire il progetto in progetto Console andando nelle Proprietà del progetto stesso. 12
  13. Per far sì che il servizio WCF sia correttamente configurato quando ospitato dal servizio Windows bisogna riportare la configurazione dal file App.config del progetto WCF a quello del servizio di Windows. Attenzione! Riportare solo la sezione <system.serviceModel>! 13
  14. Per permettere l’installazione del servizio di Windows è necessario avere privilegi di amministratore quindi aggiungendo un file manifest alla soluzione WindowsCalculatorService (add item –> manifest file) vado a specificare level=requireAdministrator nell’apposita sezione <security> del file.14
  15. Modifico il WindowsCalculatorService.cs affinché quando viene avviato esegua il necessario per ospitare il nostro servizio WCF CalculatorService.
    21
  16. Compilo e avvio WindowsCalculatorService.exe e il sistema operativo propone l’UAC come giusto che sia.
    15
  17. Ottenuta la conferma il programma Console ci chiede se vogliamo installare o disinstallare. Ovviamente scrivo I ed installo.16
  18. L’installer del servizio vuole sapere con che utenza deve girare il nostro servizio. Inserisco le mie credenziali.
    17
  19. Ecco che il servizio compare correttamente nell’elenco dei servizi di Windows e lo avvio.18
  20. Avviando il WCF Test Client inserisco l’endpoint specificato nel file app.config.19
  21. Il servizio è operativo e funzionante!20

Voi avete esperienza con WCF? Io l’ho sempre usato per piccole cose e sempre in IIS ma dopo questa prova con i servizi di Windows credo che li userò sempre così. Sono più adatti ai miei scopi e, soprattutto, non richiede l’installazione di IIS.