LINQ -i kasutamine varasemates .Net -i lahendustes

by melborp 18. detsember 2007 01:13

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.

demolincontrol_bin

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:

linqAndSP

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!

Tags:

.Net | LINQ | Microsoft | Sharepoint | Sharepoint development

Lisa kommentaar




  Country flag

biuquote
  • Kommentaar
  • Preview
Loading



Autorist

Taavi Kõosaar

 Tere, olete sattunud mu blogi peale. Olen Taavi Kõosaar - tarkvara arendaja, arhitekt ja konsultant keskendudes arendamisele .NET -i platvormil. Hetkel asun peamiselt Rootsis, kus töötan Süsteemi Arhitektina toote/teenuse arendamisel, mida kasutatakse üle Euroopa. Lisaks tööle blogin, kirjutan artikleid, pean loenguid, treeninguid, reisin, loen raamatuid, sukeldun, teen sporti, fotografeerin, osalen Eesti arendajate kommuunis ...

Siit leiate minu mõtisklused ja seiklused tarkvara arendamisega, .NET -ga ja Team Systemiga.

Kalender

<<  september 2010  >>
estekonerela
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

Liikmelisus

www.eneta.ee

Team System MVP

Tutvu minu LinkedIn profiiliga

Minu Eneta profiil

Lugejatest

Kaart:

Lugejad:

Hetkel lehel:

hit counters

Külastajaid:

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

Siin toodud arvamuseid saab käsitleda vaid kui minu isiklike arvamusi, need ei kajast vähimalgi kombel ühegi minu tööandja arvamusi ja nägemusi.

© Copyright 2010 Melborp.NET