lunedì 22 agosto 2011

Azure & Sharepoint 2010

Windows Azure è proposto da Microsoft come sistema operativo per il cloud, la piattaforma permette autenticazione, storage la collaborazione ecc ecc...

Vediamo come possiamo creare un DB SQL Azure e come esporre i dati tramite interfaccia Microsoft Sharepoint 2010.



Partiamo
quindi con la creazione del nuovo database utilizzando l’interfaccia
web, facendo login sul portale di Windows Azure all’indirizzo
https://windows.azure.com con le nostre credenziali.
Una
volta entrati, scegliamo la voce “Database” dal menu di sinistra, poi
l’opzione “Create” dalla barra dei Ribbon posizionata nella parte alta
della pagina ed inseriamo il nome che avrà la nostra nuova base di dati.




Dobbiamo creare le regole di accesso al DB (per non aver problemi in fase di test possiamo selezionare il flag “Allow other Windows Azure services to access this server” ed inserire il range 0.0.0.0 – 255.255.255.255)

Abbiamo cosi creato un DB vuoto e possiamo ora creare una tabella tramite l'utilizzo (SQL Server 2008 R2 Management Studio).

L'accesso al DB è le normali attività che possiamo eseguire, sono le stesse che possiamo eseguire usando un db installato su un SQL server classico.


Riferimenti:

Link








Sharepoint OnLine - Articolo

Facciamo un pò di chiarezza su sharepoint online.
Ottimo articolo di Chris Mayo, dove potete anche trovare un esempio:

Link

Buona lettura.

MVP Pattern - Sharepoint webpart

Ottimo articolo in cui viene mostrato come creare una webpart usando un pattern Model-View-Presenter:

Link 1

Link 2

Link 3

Qui trovate una guida, anzi una gran libro:

SharePointGuidance2010.pdf

Good...!!!!

Sviluppi WCF REST (sharepoint)

E' da un bel pò che non scrivo un post, un pò impegni di lavoro un pò pochi argomenti nuovi.
Ultimamente mi è capitato di dover sviluppare per un cliente un servizio WCF Rest, da utilizzare in un applicazione mobile sotto sharepoint.
Lo sviluppo non è molto differente da un classico servizio WCF, serve solo un pò di accuratezza.

come prima cosa creiamo un progetto sharepoint (in Visual studio 2010)


Inseriamo nel progetto un riferimento alla Cartella "ISAPI" di sharepoint.
Cliccando con il tasto destro sul progetto come da figura:



A questo punto non ci resta che creare il nostro servizio.
Nella cartella "ISAPI" sono stati inseriti 2 file:
1. AccessList.svc
2. Web.config

AccessList.svc:

<%@ ServiceHost Debug="true" Language="C#" Service="[NameSpace].AccessList, [NameSpace], Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxx" CodeBehind="AccessList.cs"
Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressDataServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx"  %>

Microsoft.SharePoint.Client.Services.MultipleBaseAddressDataServiceHostFactory (utilizzare il REST)

Web.config:

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>

    <!-- we need this to enable session -->
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <behaviors>
      <endpointBehaviors>

        <!-- our configuration for rest relies on web http -->
        <behavior name="RestBehavior">
          <webHttp />
        </behavior>

      </endpointBehaviors>
    </behaviors>
    <bindings>
      <webHttpBinding>

        <!-- a selection of security bindings that you can use in the service registration below-->
        <binding name="WindowsAuthenticationBasicHttpBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" />
          </security>
        </binding>
        <binding name="NoSecurityHttpBinding">
          <security mode="None">
            <transport clientCredentialType="None" />
          </security>
        </binding>

      </webHttpBinding>
    </bindings>
    <services>

      <!-- register our wcf service -->
      <service name="[NameSpace].AccessListBehavior" >
        <endpoint address=""
                  binding="webHttpBinding"
                   behaviorConfiguration="RestBehavior"
                  contract="[NameSpace].IAccessList"
                  bindingConfiguration="NoSecurityHttpBinding">
        </endpoint>
      </service>

    </services>
  </system.serviceModel>
</configuration>

nel web.config si occupa di esporre il servizio.

Nel file AccessList.cs:

        [ServiceBehavior]
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
        public class AccessList : IAccessList
       {
             SPList oList;
             string _CurrentURL = string.Empty;
             public System.Collections.Generic.List<entry> GetUFList(string list, ...
             {
                ...
             }
       }

viene scitto il codice che si occupa di erogare il servizio vero e proprio.

Nel file IAccessList.cs:

è presente il contract del servizio:

        [ServiceContract]
        public interface IAccessList
        {
            [OperationContract]
            [WebGet(ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare]
             public System.Collections.Generic.List<entry> GetUFList(string list, ... )

Facciamo il deploy sul server Sharepoint, a questo punto il servizio può essere richiamato nel seguente modo:

http://[Server]:[Port]/_vti_bin/listaccess/accesslist.svc/

Approfondimenti:
http://msdn.microsoft.com/it-it/magazine/dd315413.aspx

Overflow Sharepoint Scroolbar

Ottimo articolo scritto da un mio collega:

Vai Al Blog

Nuove certificazioni microsoft


- Exam 70-573: TS: Microsoft SharePoint 2010, Application Development
http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-573

- Exam 70-576: PRO: Designing and Developing Microsoft SharePoint 2010 Applications
http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-576

- Exam 70-667: TS: Microsoft SharePoint 2010, Configuring
http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-667

- Exam 70-668: PRO: Microsoft SharePoint 2010, Administrator
http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-668

sharepoint - cancellare tutti gli elementi da una lista

Ciao,
il modo migliore per cancellare tutti gli elementi di una lista da codice, non è usare un classico ciclo e cancellare un elemento per volta.
Ma il modo più veloce:

private void DeleteAllListItems(SPList currentList, SPWeb web)
{
StringBuilder sbDelete = new StringBuilder();
sbDelete.Append("");

foreach (SPListItem item in currentList.Items)
{
sbDelete.Append("");
sbDelete.Append("" + currentList.ID + "");
sbDelete.Append("" + item.ID.ToString() + "");
sbDelete.Append("Delete");
sbDelete.Append("
");
}

sbDelete.Append("
");

try
{
web.ProcessBatchData(sbDelete.ToString());
}
catch (Exception ex)
{
Console.WriteLine("Delete failed: " + ex.Message);
throw;
}

}
ciao

(Sharepoint 2010) Claims based authentication

Ottimo articolo di Kirk Evans, sulla configurazione dell FBA

http://blogs.msdn.com/b/kaevans/archive/2010/07/09/sql-server-provider-for-claims-based-authentication-in-sharepoint-2010.aspx

foglio Office excel in c# (cambio lingua) - in webpart

mi è capitato ultimamente di dover leggere di documenti excel, mi si presentava spesso il problema della lingua di installazione di Excel, questo perchè nella versione italiana si chiama foglio in quella inglese sheet, o un nome tag qualsiasi....
il problema si presentava quando dovevo poi eseguire la select su tale foglio....una soluzione può essere la seguente

OleDbConnection objConn = new OleDbConnection(connString.ToString());

objConn.Open();

DataTable mDt = null;

mDt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

DataRow mRowSheet = null;

mRowSheet = mDt.Rows[0]; //Prendiamo il nome del primo tab - Foglio

string nameSheet = mRowSheet["TABLE_NAME"].ToString();

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM " + nameSheet, objConn); //Facciamo la select e estrapoliamo i dati

social computing e la collaborazione

Microsoft SharePoint Server 2010 implementa caratteristiche che semplificano le attività di social computing e di collaborazione a livello aziendale. Gli strumenti di social networking.....

Interessante articolo che parla della collaborazione aziendale mediante l'utilizzo di sharepoint 2010:


Parliamo un pò di mysite:

Sharepoint 2010 - Limite massimo item in list

SharePoint 2010 offre le migliori prestazioni per l'elenco, tuttavia alcune limitazioni hanno ancora posto:
- Numero massimo di voci di elenco è di 50 milioni
Vincola che bloccano gli elenchi:
- Max di 8kb di dati per voce di elenco (non compresi gli allegati)
- Massima di sei campi proiettato ammessi su entra a far parte

Sharepoint 2010 - Backup/Recover/Upgrade Changes

1. New upgrade scenarios - SharePoint Server 2010 dispone di numerose funzionalità che sono state introdotte per gli scenari che permettono di eseguire l'aggiornamento a verificarsi con poco o nessun interruzioni e al tempo stesso per consentire l'aggiornamento di Windows più veloce.
La prima features è l'uso di database di sola lettura che è stata resa disponibile a partire da Office SharePoint Server 2007 Service Pack 2. SharePoint Server 2010 ora riconosce un content database se è stato reso di sola lettura in SQL Server e tagliare l'interfaccia utente, come se tutte le site collection fossero in sola lettura. Ciò consente agli utenti l'accesso in lettura al contenuto, mentre l'aggiornamento ha sta ancora girando.
2. Patching improvements - La patch interfaccia utente di gestione e reporting cmdlet patch consentire il monitoraggio delle patch in tutta farm. Ci sono anche patch status che avverte l'amministratore usando degli alert, che vi sono delle inconsistenze.
3. Granular Backup/Restore - da Amministrazione centrale (non solo nei STSADM) - tra cui il recupero del documento unico
4. Recover data from unattached content database - non è necessario allegare il backup dei contenuti del database di SQL Server per recuperare i dati
5. Browse the content of a content database - che è collegata a un server SQL, ma non associati a SharePoint Server
6. Automatic failover
7. Workflows are not Imported/Exported - quando si export/ import i flussi di lavoro del sito non saranno inclusi, è necessario spostare manualmente
articolo:http://sharepoint-sandbox.com/index.php?/SharePoint-2010/Maintenance/sp2010-backuprecoverupgrade-changes.html?directory=14

Sharepoint 2010 - I nuovi servizi

Cosa c'è di nuovo in Servizi?
SharePoint 2010 offre il nuovo modello architettonico di servizi, deprecando l'approccio SSP completamente.
Invece di questo SharePoint 2010 fornisce nuovo approccio che facilita la condivisione tra le applicazioni web e raccolte siti

Service Name

Service Description

Access Services

Enables users to view, edit, and interact with Microsoft Access databases in a Web browser.

Application Registry Service

Enables users to search and collaborate around business data.

Business Data Catalog

Enables structured data from line-of-business applications, such as SAP and Siebel systems, to be integrated into SharePoint Server "14".

Excel Services

Enables users to view and interact with Microsoft Excel spreadsheets in a Web browser.

Lotus Notes Connector

Enables users to search data on a Lotus Notes server.

Managed Metadata Service

Enables teams or departments to manage their own taxonomy, hierarchies, keywords, and social tagging infrastructure, so that, for example, taxonomies and content types can be shared across the organization (across site collections and web applications)

People

Enables users to search for people within their organization to, for example, find skills, memberships within enterprise communities, and shared interests.

Performance Point Service

Balanced scorecard and dynamic dashboard tool that allows power users/IT to create dynamic and highly interactive dashboards that display strategy to operations. Performance Point Services allows you to combine multiple data sources, and objects providing a single view of the business

Search Service Application

Enables user to index content, gather information, and perform search queries.

Secure Store Service

Enables users to store data securely, and associate it to a specific identity or group of identities.

State Service

Enables users to temporarily store user session data for SharePoint Server "14" components.

Usage and Health data collection

Collects farm-wide usage and health data, so that users can view usage and health reports.

Visio Graphics Service

Enables users to view and refresh published Visio diagrams.

Web Analytics Web Service

Collects data about how users access pages in a deployment of SharePoint Server, such as the search engine used and keywords that the end user types to find a site.

Word Conversion Service Application

Enables users to perform automated bulk document conversions.

caricare un swf - sharepoint 2010

Sembra una cosa banlissima ma non lo è!!!! 

- andare in Application Management, Manage Web Application

- dalla lista delle web application, posizionarsi su quella da modificare per poi selezionare la voce General Settings dal menu General Settings

 -cercare “Browser File Handling” e selezionare “Permissive” al posto di “Strict”.

 




e dopo questa semplice operazione il gioco è fatto....

sharepoint 2010 - powershell import/export

Articolo...comodissimo per usare la poweshell



Deploy in sharepoint 2010 - errore permessi

Quando si lancia un deploy da Visual Studio 2010 per una server sharepoint 2010, potrebbe presentarsi un errore, dicendo che non trova il server indicato.
La soluzione è semplice, mancano i permessi sul DB content, basta aggiungere nella security del DB l'utente che che si utilizza per fare il deploy (es: accediamo alla macchina con un utente di dominio, apriamo visual studio, lanciamo il deploy e ci da errore, aggiungendo l'utente sul DB content con i permessi giusti tale problema scompare)......
spero di essere stato chiaro :)

Autocomplite(jquery) - in sharepoint

Ciao a tutti.

questo post mostra come integrare la funzionalità di autocoplite fruibile mediante l'utilizzo di jquery:

Cosa ci serve:

1 - jquey

Utilizzando un user control (asp.net), la stessa logica può essere applicata a una semplice web part di sharepoint 2007 a una delle nuovissime visual web part presenti nella versione 2010 di Visual studio.

La prima cosa che dobbiamo creare è un handler, che processa le richieste e restituisce un risultato alla pagina ASP.Net:

<%@ WebHandler Language="C#" Class="Search_CS" %>
 
using System;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Text;
 
public class Search_CS : IHttpHandler {
   
    public void ProcessRequest (HttpContext context) {
        string prefixText = context.Request.QueryString["q"];
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager
                    .ConnectionStrings["constr"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "select ContactName from Customers where " +
                "ContactName like @SearchText + '%'";
                cmd.Parameters.AddWithValue("@SearchText", prefixText);
                cmd.Connection = conn;
                StringBuilder sb = new StringBuilder();
                conn.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        sb.Append(sdr["ContactName"])
                            .Append(Environment.NewLine);
                    }
                }
                conn.Close();
                context.Response.Write(sb.ToString());
            }
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
}

Ora possiamo creare il client:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
<link href="css/jquery.autocomplete.css" rel="stylesheet" type="text/css" />
<script src="scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="scripts/jquery.autocomplete.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("#<%=txtSearch.ClientID%>").autocomplete('Search_CS.ashx');
    });      
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
</html>


N.B.: l'unica accortezza che dobbiamo avere è quella di referenziare correttamente sia i fogli di stile css che i file .js

se tutto è stato fatto nel modo giusto quello che otteniamo è il risultato seguente:


SEMPLICE NO!!!!


LINQ To Twitter AND LINQ to Facebook

codeplex for ever:

Facebook:

Twitter:

bye

RichText Codeproject

Fantastica questa richText:

http://rte.codeplex.com/releases/view/14042

...

Provider model asp.net 2.0

articolo mooolto interessante:

http://dotnetside.org/blogs/articoli/pages/Servizi-basati-su-Provider-Model-in-ASP.NET-2.0.aspx

CustomActions SharePoint



Qui di seguito sono riportati un paio di esempi che ho trovato utile in
fase di test di recente.
 Il progetto di esempio aggiunge due
elementi in una visualizzazione elenco uno per il
'EditControlBlock', che consente di creare una copia dell'elemento selezionato elenco e un
altro che aggiunge una voce al menu Azioni, che ti permette di eliminare tutti
i elementi nella lista corrente.



L'aggiunta di elementi viene eseguita tramite una funzione e alcune azioni
personalizzate.
 Le azioni sono solo i puntatori a Pagine
aspx nella cartella _layouts e queste pagine effettivamente eseguono la copia e
la cancellazione di SPListItems.



<Elements xmlns="http://schemas.microsoft.com/sharepoint/">



   
<CustomAction



        Id="App.DuplicateListItem"



        Location="EditControlBlock"



        Title="Copy Item..."



        RegistrationType="ContentType"



        RegistrationId="0x01">



        <UrlAction Url="~site/_layouts/TheKidListActions/CopyListItem.aspx?List={ListId}&ID={ItemId}"/>  



    </CustomAction>



    <CustomAction



        Id="App.ClearListItems"



        Location="Microsoft.SharePoint.StandardMenu"



        GroupId="ActionsMenu"



        Title="Delete All Items"



        RegistrationType="List"



        Sequence="10">



        <UrlAction Url="~site/_layouts/TheKidListActions/ClearList.aspx?List={ListId}"/>



    </CustomAction>



</Elements>



 







Nota:



 In “<UrlAction Url="  viene indicata la URL chimata in seguito all’azione
scelta.
Nella query string viene usata ListId e ItemID per indicare l’id del Item o  della Lista. Le altre due possibilità sonoItemUrl e siteurl.



E 'anche degno di nota il RegistrationType del CustomAction voce copia. Questo si può vedere è la registrazione di per sé dal tipo di contenuto e
sta utilizzando una
 RegistrationId di 0x01.In questo modo viene registrata per tutte le
liste in SharePoint.
 Per maggiori dettagli su come SharePoint
decide quali elementi appaiono nella
 EditControlBlock si dovrebbe avere uno sguardo al file Core.js in SharePoint. Il file Core.js contiene una funzione chiamata InsertFeatureMenuItems che decide quali elementi verranno
visualizzati nel menu per ogni elemento della lista.



Faccio il Deploy delle nuove Features:



<Feature Id="27C737D3-EE8C-4FD0-8A56-2A09F0169E9F"



 Title="Decatec.ProgerDataTransfer.CtypeCentralAdmin"



 Description=""



 Version="1.0.0.0"



 Scope="Site"



 Hidden="False"
xmlns="http://schemas.microsoft.com/sharepoint/">



  <ElementManifests>



       <ElementManifest Location="MyCatomAction\MyCatomAction.xml" />



  </ElementManifests>



</Feature>



 



End.