Life in DotNet

Tutto sulla programmazione in .Net linguaggio C# piattaforma asp.net e sharepoint

luglio 2010 - Post

Introduzione alle Client-Side API di SharePoint 2010

Salve,

con sharepoint 2010 adesso sono previste delle librerie lato client per poter comunicare col server, di seguito vi riporto il testo di un articolo scritto da Giuseppe Marchi sul sito sharepointcommunity.it:

 

La nuova versione di SharePoint vede la presenza di nuove librerie contenti un particolare modello ad oggetti utile a permettere a tutte quelle applicazioni che vengono eseguite lato client, quindi che non girano nel contesto server di SharePoint stesso (come window form, applicazioni console, servizi windows, applicazioni Silverlight, ecc..), di effettuare operazioni su siti, liste, documenti, elementi e tutte le altre tipologie di oggetti senza richiamare i web service esposti, come siamo sempre stati abituati fin’ora e, soprattutto, potendo mantenere un paradigma ad oggetti.
Per coprire l’intero insieme di applicazioni che solitamente hanno a che fare con SharePoint dall’esterno, sono stati creati tre differenti gruppi di librerie. Vediamoli nel dettaglio:

1. Client Object Model – utilizzato da tutte le applicazioni windows, come applicazioni Windows Form, WPF, servizi, applicazioni console, ecc.. e rappresentato dalle librerie:

a. Microsoft.SharePoint.Client.dll (282 kb)

b. Microsoft.SharePoint.Client.Runtime.dll (146 kb)

Che possiamo trovare al percorso:
<Drive>:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI

2. Silverlight Client Object Model – utilizzato da applicazioni Silverlight e rappresentato dalle librerie:

a. Microsoft.SharePoint.Client.Silverlight.dll (266 kb)

b. Microsoft.SharePoint.Client.Silverlight.Runtime.dll (142 kb)

Che possiamo trovare al percorso:
<Drive>:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin

3. ECMAScript Client Object Model – utilizzato all’interno di script javascript utili alle nostre personalizzazioni all’interfaccia di SharePoint e rappresentato da alcuni dei seguenti file:

a. CUI.js (344 kb)

b. SP.js (381 kb)

c. SP.Core.js (13 kb)

d. SP.Ribbon.js (208 kb)

e. SP.UI …

Che possiamo trovare al percorso:
<Drive>:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin

Aggiungendo all’interno delle nostre personalizzazioni le referenze a queste librerie che, come potete notare, sono veramente leggere rispetto alle librerie del modello ad oggetti lato server (la Microsoft.SharePoint.dll pesa circa 8MB..), siamo in grado di “parlare” con SharePoint dalla parte del client, senza chiamare alcun web service e mantenendo un paradigma ad oggetti. Inoltre, questi modelli sono stati disegnati in modo da permettere agli sviluppatori di non trovare grosse difficoltà a passare dalla programmazione con il modello ad oggetti lato server, in quanto i nomi delle classi risultano molto simili a quelli delle classi utilizzate fin’ora (non è una regola precisa, ma in generale sono stati tolti i caratteri “SP” dai nomi della classi del API client-side). Alcune delle differenze sono visibili in questa tabella.

Server Object Model Client Object Model
SPContext ClientContext
SPWeb Web
SPList List
SPListItem ListItem
SPListItemCollection ListItemCollection
SPField Field

 

In breve, questi modelli ad oggetti per la programmazione di SharePoint lato client riescono a funzionare in quanto in ognuno di essi è stata costruita una classe proxy che si preoccupa di spedire richieste e leggere le relative risposte dal servizio WCF “client.svc” esposto da SharePoint 2010. Come potete vedere in figura, sia che io stia sviluppando una personalizzazione javascript, sia che stia lavorando con un’applicazione managed (quindi Windows o Silverlight), ogni richiesta fatta dalla classe proxy al servizio SharePoint viene formattata tramite sintassi XML ed ogni risposta ritorna invece in formato JSON, il che alza notevolmente le performance della nostra comunicazione tra client e server SharePoint, senza che noi dobbiamo procedere manualmente alla formattazione di richiesta o al parsing della risposta (come invece siamo sempre stati abituati sviluppando applicazioni che utilizzavano i web service di SharePoint Services 3.0).
Lato server poi, il servizio “client.svc” non fa altro che leggere la richiesta, utilizzare le classi del modello ad oggetti lato server per collegarsi al database dei contenuti ed esaudire quanto richiesto, per poi riformattare la risposta e rispedirla al client.

Figura

Per noi, tutto questo meccanismo è totalmente trasparente poichè trattiamo le informazioni di SharePoint utilizzando un modello ad oggetti che nasconde tutta la parte di serializzazione della richiesta e deserializzazione della risposta dal server.
A mio parere è veramente una gran bella novità questa.
Nel prossimo articolo vedremo come utilizzare le classi del Client Object Model all’interno di un’applicazione Windows per effettuare le operazioni di base di lettura, inserimento, aggiornamento e cancellazione di elementi in una lista SharePoint 2010.

 

 

Saluti Fabio

Posted: 26 lug 2010 17:41 da Fabio Russo | con no comments
Inserito sotto:
Sharepoint and jquery: Cascading Dropdowns

Salve,

vi riporto l’articolo di Jim Bob Howard pubbicato sul sito http://www.endusersharepoint.com nel quale viene illustrato come avere una dropdowns list che viene caricata alla selezione di un item di un’ altra dropdowns list:

 

It’s been awhile in this series since we looked at a DVWP. We’ve been building on an idea of using cascading dropdowns—where the selection of one dropdown limits the selections available in the next.

The examples we’ve covered in the last few articles have been a generic Country/State example, where choosing Country=USA would limit the States list to only the 50 United States and the District of Columbia, whereas Country=Canada would limit the States list to the 13 Canadian Provinces. We’ll take that idea just a little further as we look into the jQuery that allows us to cascade these dropdowns.

The Problem

I’ve created a sample list that includes the Country and State site columns. Here’s the problem:


This is perfectly legal and could be stored in the database like this.

Unfortunately, even though both columns are being supplied from site columns, where the "possible" data is controlled, this combination is meaningless. Alabama is not a Canadian Province.

The problem is exacerbated by the fact that the site column will sort the data, so if we have valid countries of USA, Canada, and India, the states, provinces, and territories will all be mixed together:

That’s why we need cascading dropdowns.

The Solution

If you’ve read my jQuery to the Rescue articles, you’ve experienced my affinity for jQuery and especially Marc Anderson’s jQuery Library for SharePoint Web Services (SPServices). So, we’ll jump right into the details.

  1. Add a CEWP to the page
  2. Click the Source Editor button
  3. Paste the below jQuery script into the Text Entry – Webpage Dialog

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>

    <script src="../../../js/jquery.SPServices-0.4.8.min.js" type="text/javascript"></script>

    <script language="javascript" type="text/javascript">

    $(document).ready(function() {

    $().SPServices.SPCascadeDropdowns({

    relationshipWebURL: "/", // URL of site, full or relative; full more reliable

    relationshipList: "Country-State Relationships", // 'Display Name' of relationship list

    relationshipListParentColumn: "Country", // 'Static Name' of column

    relationshipListChildColumn: "State", // 'Static Name' of column

    relationshipListSortColumn: "State", // 'Static Name' of column

    parentColumn: "Country", // 'Display Name' of column in working list

    childColumn: "State" // 'Display Name' of column in working list

    });

    });

    </script>

  4. Make the necessary changes to represent your list and column names
  5. Click Save

Now the State dropdown is completely controlled by the Country selection:

Country = None

Country = India

Country = Canada

Country = USA

Next time, we’ll add another cascading dropdown to make it three-tier, as we continue Extending the DVWP.

 

 

Saluti Fabio

Posted: 21 lug 2010 16:37 da Fabio Russo | con no comments
Inserito sotto:
ASP.NET MVC2 e WebForm 4: quale scegliere?
Share this post :

Salve a tutti,

di seguito vi riporto un link ad un video dove vengono spiegate, da Pietro Brambati, le principali differenze tra l’utilizzo di un architettura basata su WebForm 4 e MVC2.

Di sicuro il video vi aiuterà a chiarire le vostre idee...!

Link: http://www.microsoft.com/italy/beit/Generic.aspx?video=6678cfdb-d917-438f-b1d6-29ec18226d42

 

A presto Fabio

Posted: 20 lug 2010 16:16 da Fabio Russo | con no comments
Inserito sotto:
Sharepoint 2010: Best Practices
Share this post :

Salve,

Ecco un video dove vengono mostrate alcune best practices su Sharepoint 2010, nel video viene illustrato come creare delle feature con VisualStudio 2010 e come deployarle.

E’ di pochi minuti ma utile per chi ha visto da poco sharepoint

http://channel9.msdn.com/learn/courses/SharePoint2010Developer/BestPractices/DesignConsiderations/

Saluti Fabio

Posted: 16 lug 2010 11:01 da Fabio Russo | con 1 comment(s) |
Inserito sotto:
Database client sviluppato in .Net

Salve a tutti,

ecco a voi un pratico client, sviluppato in .NET, per connettervi ad un database sia in locale che in remoto.

Ha un interfaccia molto intuitiva e semplice, non vi permette sicuramente di fare ciò che si potrebbe fare con “SQL Server Management Studio” ma sicuramente è molto pratico (occupando non molte risorse) per effettuare query

http://visualstudiogallery.msdn.microsoft.com/en-us/aad27ae6-6024-4912-bf7f-80d82f46ed7f

 

A presto Fabio!

Posted: 10 lug 2010 19:50 da Fabio Russo | con no comments
Inserito sotto:
Silverlight: applicazione per leggere del testo!!!

Salve ragazzi, ecco un altra splendida novità che si può fare con silvergliht e cioè la possibiltà di leggere del testo richiamando delle opposite API.

 

In questo link viene descritto come creare un applicazione che vada a leggere il testo inserito in una textBox, buona lettura e buon diveritmento!!!

http://www.kunal-chowdhury.com/2010/07/silverlight-4-text-to-speech.html

 

Saluti Fabio!

Posted: 9 lug 2010 19:04 da Fabio Russo | con 1 comment(s)
Inserito sotto:
Sharepoint: SPListConfiguration Feature

Salve,

vi è mai capitato di dover scrivere una Feature Receiver per impostare delle configurazioni ad una lista sharepoint?

 

Adesso il tutto si può fare facilmente con una comoda DLL da referenziare al progetto, cosi non scriverete più codice tramite ObjectModel ma andremo ad inserire delle istruzioni nei file xml.

 

Da qui potrete scaricare l’assembly e vi viene spiegato anche come modificare i file xml.

 

A presto Fabio

Posted: 7 lug 2010 15:45 da Fabio Russo | con no comments
Inserito sotto:
Personal Developer Plan – Agile Workbook

Salve,

di seguito un manuale scaricabile dal sito Codeplex dove viene spiegato come poter pianificare le attività e la crescita del proprio personale.

Link: http://agileperson.codeplex.com/releases

Buona lettura!!!

Posted: 6 lug 2010 15:08 da Fabio Russo | con no comments
Inserito sotto: ,
WCF Contrib

Ecco una pratica DLL da utilizzare per comunicationi Client/Server tramite WCF

http://wcfcontrib.codeplex.com/

 

Saluti Fabio

Posted: 5 lug 2010 17:20 da Fabio Russo | con no comments
Inserito sotto: ,
Creazione nuovo Work Item con TFS e Creazione di una Coded UI Test con VS2010

Salve,

se state cominciando ad utilizzare TFS o semplicemente se volete approfondire le vostre conoscenze in merito, ho trovato in rete delle linee guida base per creare un Work Item, inoltre allo stesso link è presente anche il download di linee guida per creare una Coded UI Test con VS2010.

Download: http://tfsguides.codeplex.com/releases

 

A presto Fabio

Posted: 2 lug 2010 9:26 da Fabio Russo | con no comments
Inserito sotto: ,
LogViewer for Log4Net

Salve a tutti, ho da poco trovato in rete un utilissimo tool per poter visualizzare i file di log prodotti da log4Net, ovviamente tali file devono avere una ben precisa struttura xml, ma non vi preoccupate il tutto e spiegato qui.

 

Download: http://yourlog4netviewer.codeplex.com/releases/view/48057

Saluti Fabio

Posted: 1 lug 2010 9:22 da Fabio Russo | con 2 comment(s)
Inserito sotto: