Mõni hetk tagasi postitasin, et .Net 3.5 pole muud kui täiendus .Net 2.0 -le ja .Net 3.0 -le. Antud postitusega proovingi väidet tõestada ühe elusa näitega. Tõestan, et Sharepoint 2007 toimib ilusti ka siis, kui installeeritud on .Net 3.5 raamstik ja mul on ka võimalik kasutada Sharepointi sees LINQ -i.
Välja mõtlesin järgmise proovi stsenaariumi
Loon Webpart -i Sharepointile, mis kasutab endas LINQ -i võimalusi (LINQ to XML, kui täpne olla). Loodud Webparti kuvan Sharepointi rakenduslehel (application page).
Tegevus
Installeerisin .Net 3.5 -e raamstiku oma Sharepointi arenduskeskkonda, kus ei olnud .Net 3.5 -e varjugi ennem. VS2008 -t pole seal ammugi (pole veel jõudnud omale uut masinat ehitada VPC peale). Samas .Net 3.5 -e lahenduse mugavaks ehitamiseks peab mul olema seda platvormi toetav vahend ja õnneks läpakas VS2008 eksisteerib. Seega ehitan läpakas webparti, kompileerin DLL -ks ning viin Sharepointi, mis jookseb virtuaalses masinas.
Webpart -i kood on väga lihtne. Mul on XML, milles on kolm kasutaja (User) elementi. Ma kasutan Linq to XML -i, et saada kõik User elemendid ning loon igale ühele vastava anonüümse tüübi. Hiljem lihtsalt kuvan need veebilehel kasutades Literal kontrolli.
[Guid("ce0828c1-1561-4090-b196-a7773567262d")]
public class CustomWebPart : WebPart
{
static string XML =
"<Users><User id=\"1\"><Name>Taavi</Name></User>"+
"<User id=\"99\"><Name>LINQ</Name></User><User id=\"666\">"+
"<Name>Mingi kolmas nimi.</Name></User></Users>";
protected override void CreateChildControls()
{
XElement usersXml = XElement.Parse(XML);
var users = from User in usersXml.Descendants("User")
select new {
Id = User.Attribute("id").Value,
Name = User.Element("Name").Value
};
foreach (var user in users)
{
Literal l = new Literal();
l.Text =
string.Format("id: {0}, name: {1}; </br>", user.Id, user.Name);
this.Controls.Add(l);
}
}
}
Peale DLL -i ehitamist, paigutan DLL -i Sharepointi Bin kataloogi virtuaalses masinas.

Seejärel mainin Sharepointi web.config -s ära, et antud DLL on usaldusväärne (SafeControl element). Ja järgnevalt võingi hakata kasutama suvalises Sharepointi lehes antud webparti. Mina plaanin lehena kasutada Sharepointi application page -e.
Selleks loon .aspx faili "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS" kausta, mille sisuks on all olev kood:
<%@ Page Language="C#" MasterPageFile="~/_layouts/simple.master" %>
<%@ Register TagPrefix="Sharepoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="DemoLinq" Namespace="DemoLinqControl"
Assembly="DemoLinqControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba05d76c6be11619" %>
<%-- Lehe sisu osa --%>
<asp:Content ID="MainContent" runat="server" ContentPlaceHolderID="PlaceHolderMain">
<DemoLinq:CustomWebPart ID="Demo" runat="server" />
</asp:Content>
Ning IE -ga lehele minnes on tulemuseks järgmine väljund:

M.O.T.T
Üleval teotstatud tegevustest tulenevalt, võin järeldada, et on võimalik edukalt kasutada .Net 3.5 raamistiku funktsionaalsust olemasolevas .Net -i lahenduses (juhul kui tegu on vähemalt .Net 2.0 -i lahendusega). Uue raamistiku installeerimine ei mõjuta olemasolevat rakendust, samas võimaldab selles uue raamistiku omaduste kasutamist. Mina näitasin seda Sharepointi najal.
Ahsoo, miks see nii on? Sest mõlemal juhul on tegu tegelikult CLR 2.0 -ga (ehk sama jooksutamiskeskkonnaga).
Edu!