Su .net, C#, ... RSS 2.0
 Thursday, August 06, 2009

Un buona documentazione (non ufficiale) sulla libreria per l'implementazione della Dependency Injection su tecnologia Microsoft "ObjectBuilder", utilizzata in svariati application blocks si può trovare qui:
http://www.sayedhashimi.com/CategoryView,category,ObjectBuilder.aspx
Enjoy,
Luc.

Thursday, August 06, 2009 5:44:10 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C# | Dependency Injection
 Sunday, June 21, 2009

All'indirizzo:

http://msdn.microsoft.com/en-us/library/ms733768.aspx

si può trovare un articolo interessante che spiega come configurare windows per permettere l'hosting di un servizio wcf su protocollo http. Un esempio al volo:

(impostazione dell'ip in ascolto)

netsh http add iplisten ipaddress=0.0.0.0:8001

(impostazione delle acl sull'url per utente)

netsh http add urlacl url=http://+:8001/VirtualDir user=MYCOMPUTER\User

Enjoy, Luc.

Sunday, June 21, 2009 9:07:45 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | SOA | WCF
 Monday, June 15, 2009

Leggo di un interessante progetto denominato Stonehenge:

http://incubator.apache.org/stonehenge/index.html

A cui partecipano Microsoft, Red Hat, Eviware, WSO2 ed altri. Il tema è l'interoperabilità dei sistemi in ambito SOA. Sono fornite delle best-practices su tecnologia java, .NET, php.

Gli obbiettivi ?

  • illustrare e sviluppare linee guida per l'interoperabilità delle applicazioni;
  • dimostrare l'interoperabilità fra le piattaforme;
  • fornire degli esempi da cui partire per implementare applicazioni;
  • fornire un aiuto per identificare i problemi di interoperabilità e le rispettive soluzioni;
  • ottenere fiducia nello sviluppo e deployment di tecnologie SOA multi-piattaforma.

Alcuni link interessanti:

http://wso2.com/

http://www.eviware.com/

http://www.microsoft.com/SOA/

http://www.jboss.com/products/platforms/soa/

Enjoy,

Luc.

Monday, June 15, 2009 10:54:14 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | Biztalk | SOA
 Tuesday, August 05, 2008

Interessante articolo che spiega come disabilitare il tracking di Biztalk ed utilizzare BAM in sua vece:

http://blogical.se/blogs/mikael/archive/2008/05/22/how-to-replace-tracking-with-bam-in-biztalk.aspx

Utile a chi voglia implementare un sistema di analisi basato su analysis services.

Luc.

Tuesday, August 05, 2008 3:35:15 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | SQL | Biztalk
 Thursday, July 17, 2008
Mentre combattevo con application pool di IIS, account Local System et cetera Andrea mi mette a parte di una interessante serie di chiavi di registro, raccolte nel percorso:

           HKEY_LOCAL_MACHINE -> System -> CurrentControlSet -> Services -> EventLog

sono tutti gli event sources definiti sulla macchina. Si possono assegnare dei premessi alle chiavi in modo da non richiedere appartenenza al gruppo amministratori per la modifica dei log e, di conseguenza, evitare di assegnare, anche se solo per la generazione dell'eventSource, account Local System all'application pool.
Luc.

Thursday, July 17, 2008 10:51:04 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | ASP.net | C# | VB | web
 Monday, May 26, 2008

A questo indirizzo:

http://www.codeproject.com/KB/cs/LogParser_DataProvider.aspx

si può trovare un data provider custom per il logParser. Con esso si possono effettuare le query con un formato simile a quello delle normali query SQL, sfruttando le potenzialità di ADO.NET.

Luc.

Monday, May 26, 2008 4:05:52 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C# | scripts | tools

L'infrastruttura WMI (Windows Management Instrumentation) permette, tra le altre cose, una volta definito lo schema di una classe, di instanziarne a runtime delle istanze. Tale operazione può essere effettuata tramite script wsh oppure sfruttando le classi presenti nei namespace System.Management e System.Management.Instrumentation.

Anzitutto è necessario istanziare un oggetto della classe ManagementPath, che identifica la classe da considerare:

            ManagementPath pathObj = new ManagementPath();
            
            pathObj.ClassName = "Win32_IP4RouteTable";
            pathObj.NamespacePath = "root\\CimV2";

In questo caso si tratta di una route ip.

Deve essere poi creata l'istanza di classe:

            ManagementScope mgmtScope = new ManagementScope(pathObj);
            ManagementClass routeTableClass = new ManagementClass(mgmtScope, pathObj, null);

            ManagementObject routeTableObj = routeTableClass.CreateInstance();

Sulla quale viene effettuata l'impostazione delle proprietà:

            routeTableObj.SetPropertyValue("<prop_name>", <prop_value>);
            ...

Ed infine l'istanza viene salvata:

            PutOptions po = new PutOptions();
            po.Type = PutType.UpdateOrCreate;

            routeTableObj.Put(po); 

Luc.

Monday, May 26, 2008 2:49:42 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C# | networks | scripts
 Thursday, May 22, 2008

A volte può essere utile cambiare l'account con cui si esegue una porzione di codice, p.es. per ottenere dei livelli di trust più elevati. Si possono:

  • Utilizzare credenziali di rete differenti;
  • Acquisire le credenziali di account differenti.

Il primo caso è più comune in applicazioni che fanno uso di servizi sulla rete (accedono a pagine web o servizi web) ma che eseguono la maggior parte delle operazioni in locale. In tal caso una impersonation completa potrebbe essere inopportuna (l'utente di rete potrebbe non possedere permessi importanti in locale, come p.es. l'accesso al filesystem per salvare dei file). Si instanzia in questo caso la classe NetworkCredentials, che viene utilizzata per la connessione.

Il secondo caso si verifica quando un'applicazione ha necessità di acquisire dei permessi specifici per breve tempo, come p.es. scrivere o leggere su una share di rete da un'applicazione web che giri in un contesto utente non modificabile (p.es. un utenza NetworkService di un'application pool, per ragioni di sicurezza). In tal caso è possibile acquisire per breve tempo un contesto utente differente, eseguire delle operazioni ed infine tornare al contesto di partenza utilizzando le API di sistema.

Prima debbono essere dichiarati i metodi:


    [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
    public static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, uint dwLogonType, uint dwLogonProvider, ref IntPtr phToken);
    [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
    public static extern bool CloseHandle(IntPtr handle); 
    
Che verranno utilizzati per effettuare il logon e l'impersonation:

    int hresult = LogonUser(username, domain, password, (uint)LogonSessionType.Interactive, (uint)LogonProvider.LogonDefault, userToken);       
        
    WindowsIdentity identity = new WindowsIdentity(userToken); 
    WindowImpersonationContext context = identity.Impersonate;

Che può essere poi rilasciato:

     context.Undo();

Luc.

Impersonator.zip (,83 KB)
Thursday, May 22, 2008 5:15:40 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C#
 Sunday, May 18, 2008

Alcuni interessanti articoli trovati su un blog. Il primo spiega come creare uno snap-in custom per mmc 3.0 con .net:

A managed code 'task manager' MMC 3.0 snap-in

un altro, sullo stesso argomento ma in stile 'cook-book':

The managed MMC 3.0 snap-in cookbook

ed infine un articolo su come creare un comando custom per la powershell:

Easy Windows PowerShell cmdlet development and debugging

il blog contiene parecchie informazioni. Da vedere.

Luc.

Sunday, May 18, 2008 10:53:03 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C# | scripts

Ottimo sistema per la virtualizzazione dei servizi in ottica SOA. Lo si può trovare all'indirizzo:

http://www.codeplex.com/servicesengine

Permette di importare servizi già esistenti e di ripubblicarne le operazioni, opportunamente aggregate secondo l'opportunità, facilita il coordinamento delle risorse, ne massimizza il riuso e consente di ridurre i tempi di messa in opera dei nuovi servizi.

Di seguito alcune delle caratteristiche:

  1. Versioning Servizi;
  2. Aggiornamento Servizi Legacy;
  3. Service Policy Enforcement;

Veramente interessante.

Luc.

Sunday, May 18, 2008 9:54:52 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | SOA | tools
 Friday, May 16, 2008

Programma molto utile per la scrittura di query WMI (Windows Management Instrumentation). Si può scaricare da:

WMI Code Creator

Una volta selezionata una classe di interesse, è possibile generare codice per invocarne i metodi, le proprietà o gestirne gli eventi.

Molto utile per lo sviluppo o per la creazione di script di amministrazione, eventualmente in accoppiata con:

Scriptomatic 2.0

e con gli strumenti nella suite:

WMI Administrative Tools

tra cui CIM Studio e WMI Object Browser.

Preinstallati nel sistema si trovano inoltre, normalmente, i tools WBemTest.exe, per effettuare delle interrogazioni di prova e Wmic.exe, per eseguire delle query da riga di comando.

Luc.

Friday, May 16, 2008 7:03:57 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C# | scripts | tools | VB

Ecco il sito da cui si può scaricare la versione definitiva:

EntLib 4.0

che include il supporto per Visual Studio 2008, l'integrazione con lo Unity application Block, il supporto per WMI2, et cetera.

Luc.

Friday, May 16, 2008 6:38:46 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | ASP.net | C# | VB
 Wednesday, May 14, 2008
Come rendere ordinabile una collezione di oggetti in una Datagrid, estendendo la collezione ed implementando le interfacce IBindingList (per l'interazione con la griglia) e IComparer (per l'ordinamento).
Wednesday, May 14, 2008 8:58:10 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C#
 Monday, May 12, 2008

L'icona (da mettere nella root del sito) che viene visualizzata nella barra di explorer.

Si può editare con l'interessante tool:

http://www.favicon.cc/

Che permette di crearne anche di animate...

;)

Luc.

Monday, May 12, 2008 11:30:52 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [1] -
.net | ASP.net

Applicazione web per convertire il codice VB in codice C#:

http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx

per chi non fosse ancora convinto, fa anche la conversione da C# a VB.

 ;)

Luc.

Monday, May 12, 2008 10:37:17 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C# | VB

Libreria C# per effettuare queries su LogParser.

Come si usa:

              IComplexQueryGateway gateway = LogParserGatewayFactory.CreateGateway(LogType.IISLog);

            // seleziono il o i files su cui effettuare la query
            SelectQuery query = new SelectQuery("<percorso>\ex*.log");
            // imposto colonne, condizioni di where, groupby, orderby
            query.AddFields("cs-uri-stem as Url; sc-status as Status; COUNT(*) as Errors");
            query.AddWheres("sc-status >= 400; date >= TIMESTAMP ( '2008-04-01', 'yyyy-MM-dd' )");
            query.AddGroupBys("Url; Status");
            query.AddOrderBys("Errors DESC");
            // ritorno il dataset risultante
            return gateway.Data(query); 

Le queries possono essere anche testuali, utilizzando l'interfaccia ISimpleQueryGateway. La libreria si può utilizzare anche per effettuare queries sull'eventLog.

Luc.

IISLogWrapper.zip (8,31 KB)
Monday, May 12, 2008 10:28:10 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -
.net | C#
Archive
<September 2010>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Luca Biader Ceipidor
Sign In
Statistics
Total Posts: 47
This Year: 0
This Month: 0
This Week: 0
Comments: 4
Themes
Pick a theme:
All Content © 2010, Luca Biader Ceipidor
DasBlog theme 'Business' created by Christoph De Baene (delarou)