Archive for 2009

Tutorial Ajax 4.0 si ADO.NET Data Service

Sunday, September 13th, 2009

Săptămâna viitoare, în 18 septembrie 2009, voi fi la Webstock unde trebuie să prezint câteva laboratoare. Fiindcă deja am pregătit conținutul, m-am gândit să il fac public și aici pe blog.

Arhiva asociata tutorialului contine o solutie Start, alta Finish, respectiv baza de date.

Microsoft Ajax 4.0 si ADO.NET Data Services

Introducere

Acest laborator va prezenta doua tehnologii Microsoft: Ajax 4.0 si ADO.NET Data Services.

Ajax 4.0

Sau mai pe larg Microsoft Ajax versiunea 4.0 (aflata in acest moment in stadiul de Community Technology Preview), este o biblioteca open source initiata de Microsoft si disponibila aici: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32770 . Aceasta biblioteca inseamna de fapt o serie de fisiere Javascript care permit crearea de cod pe client (in browser) care manipuleaza date ce vin de undeva de pe un server. Ajax 4.0 presupune deci colaborarea cu alte tehnologii de tip servicii web (sau ceva asemanator), care sunt in stare sa “aduca” pe client date aflate undeva pe un server, respectiv sa le “trimita” inapoi pentru modificarile de rigoare.

ADO.NET Data Services

Este o tehnologie de tip serviciu web, mai exact un tip de serviciu Windows Communication Foundation specializat. ADO.NET Data Services este util pentru a comunica intre un server si un client, transmitand peste HTTP date in ambele sensuri. Intr-o arhitectura multi-strat cu 3 nivele: (1) User Interface, (2) Business Logic, (3) Data Layer, ADO.NET Data Services se afla pe nivelul (2).

Mai multe despre Data Services: http://msdn.microsoft.com/en-us/data/bb931106.aspx .

Acest serviciu specializat “stie” sa expuna peste HTTP datele care vin dintr-o sursa foarte bine determinata, conform interogarii care este realizata direct din URL-ul de acces la serviciu. Daca ADO.NET Data Services este pe nivelul (2), atunci in spate, pe nivelul (3) trebuie sa fie un strat de acces la baza de date realizat cu LINQ to SQL (http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx )sau Entity Framework (http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx ).

In continuare vom realiza un exemplu care porneste de la o baza de date, realizeaza un Data Layer cu tehnologia Entity Fraewmork, apoi expune datele peste HTTP folosind ADO.NET Data Services, ca pe client sa foloseasca Ajax 4.0.

Exercitiu

Prerequisites

Exemplul presupune existenta unei baze de date numita FinancialDemo, atasata intr-un server de baze de date MS SQL Server (2005 sau 2008). Fisierele bazei de date sunt prezente in folderul laboratorului.

De asemenea, este nevoie de Visual Studio 2008 cu Service Pack 1.

Pasul 1

Deschideti cu Visual Studio 2008 solutia aflata in folderul “Start”.

Observati in Visual Studio folderul numit “Javascript”, care contine biblioteca Ajax 4.0.

Observati fisierul numit “Model1.edmx” – cel care contine modelul de date, construit pe baza tehnologiei ADO.NET Entity Framework pornind de la o baza de date.

Pasul 2

Acum vom crea serviciul ADO.NET Data Service.

1. In fereastra Solution Explorer (meniul View -> Solution Explorer), click dreapta pe proiect (numit AjaxAdoNetDataServices), apoi Add -> New Item.

clip_image002

2. Selectati ADO.NET Data Service, si dati-I numele “BusinessService.svc”.

clip_image004

3. Salvati solutia.

4. Deschideti fisierul BusinessService.svc.cs.

clip_image006

5. Inlocuiti comentariul /* TODO: put your data source class name here */ cu numele clasei care reprezinta modelul de date Entity Framework, FinancialDemoEntities.

6. Decomentati linia // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead); si modificati modul de acces pe serviciu (proprietatile de securitate).

clip_image008

7. Compilati solutia (meniul Build -> Build Solution).

8. Rulati cu serviciul ADO.NET Data Service. Click dreapta pe BusinesService.svc, apoi Set as Start Page.

clip_image010

9. Porniti proiectul (Ctrl + F5). Rezultatul:

clip_image012

10. Testati serviciul cu diferite interogari:

a. http://localhost:30343/BusinessService.svc/Company

b. http://localhost:30343/BusinessService.svc/Company?$top=3

c. http://localhost:30343/BusinessService.svc/Company(1)/Name

Pasul 3

Acum ne vom ocupa de interfata.

1. Adaugati in solutia Visual Studio un fisier de tip Stylesheet. Click dreapta pe proiect, Add -> New Item -> Stylesheet.

clip_image014

2. In fisierul nou creat, introduceti codul urmator:

body

{

}

.sys-template

{

display: none;

}

.odd

{

background-color:Gray;

}

.selected

{

background-color:Lime;

}

3. Deschideti fisierul Default.aspx. In sectiunea <head></head>, introduceti referintele catre fisierele Javascript care compun biblioteca Ajax 4.0, respectiv catre fisierul CSS. Sectiunea head trebuie sa arate asa:

<head runat="server">

<title>Ajax si ADO.NET Data Services</title>

<link href="Stylesheet1.css" type="text/css" rel="Stylesheet" />

<script type="text/javascript" src="Javascript/MicrosoftAjax.debug.js"></script>

<script type="text/javascript" src="Javascript/MicrosoftAjaxTemplates.js"></script>

<script type="text/javascript" src="Javascript/MicrosoftAjaxAdoNet.js"></script>

</head>

4. Modificati tag-ul body pentru a avea referinte la anumite namespace-uri Javascript:

<body xmlns:sys="javascript:Sys" xmlns:code="http://schemas.microsoft.com/aspnet/code"

xmlns:dataview="javascript:Sys.UI.DataView" sys:activate="*">

5. Creati interfata html pentru a afisa date care vin din baza de date. Anume, un tabel, respectiv un div pentru a afisa detaliile randului selectat la un moment dat in tabel.

a. Tabelul:

<div id="allCompanies" style="float: left; width: 400px">

<h2>

Companies</h2>

<table cellspacing="0" cellpadding="0" style="border-style: ridge">

<thead>

<tr>

<th>

Id

</th>

<th>

Name

</th>

</tr>

</thead>

<tbody id="companiesView" class="sys-template">

<tr sys:command="select" class:odd="{{ $index % 2 != 0 }}">

<td style="width: 50px; border-style: ridge">

{binding Id}

</td>

<td align="left" style="width: 250px; border-style: ridge">

{binding Name}

</td>

</tr>

</tbody>

</table>

</div>

b. Div-ul cu detalii:

<div id="companyDetails" class="sys-template" style="vertical-align: top">

<h2>

Company details</h2>

<input type="text" id="Id" value="{binding Id}" readonly="readonly" />

<input type="text" id="Name" value="{binding Name}" />

<br />

<input type="button" value="Update" sys:command="gaga" />

</div>

6. In sectiunea head introduceti urmatorul cod Javascript care realizeaza comunicarea cu serviciul ADO.NET Data Service, respectiv populeaza controalele de interfata cu date.

<script type="text/javascript">

var dataContext;

function pageLoad() {

dataContext = $create(Sys.Data.AdoNetDataContext,

{

serviceUri: "BusinessService.svc"

});

var companiesView = $create(Sys.UI.DataView,

{

dataProvider: dataContext,

fetchOperation: "Company",

fetchParameters: { $top: 10, $orderby: "Name" },

autoFetch: "true",

selectedItemClass: "selected",

initialSelectedIndex: 0

},

null, null, $get("companiesView")

);

var companyDetails = $create(Sys.UI.DataView,

null,

{

command: companyCommand

},

null, $get("companyDetails"));

$create(Sys.Binding,

{

source: companiesView,

target: companyDetails,

path: "selectedData",

targetProperty: "data"

});

}

function companyCommand(e, args) {

dataContext.saveChanges();

}

</script>

7. Setati Default.aspx ca pagina de pornire (Click dreapta pe Default.aspx, Set as Start Page), si rulati aplicatia (Ctrl + F5). Iata aplicatia:

clip_image016

8. Selectati diferite randuri din tabel. Observati cum se modifica detaliile din dreapta.

9. Modificati numele unei companii. Observati cum la parasirea <input>-ului, numele din tabel se modifica.

Apasati Update dupa ce ati modificat o companie (sau mai multe). Inchideti aplicatia si rulati din nou. Observati cum s-a realizat si salvarea in baza de date.

Lista prezentei la cursul de ASP.NET

Friday, September 11th, 2009

Există posibilitatea să nu fi trimis confirmarea la toată lumea, sau sa nu fi ajuns la toți. Așa că pun aici tabelul cu persoanele care au apucat să se înscrie la cursul anunțat aici:

Nume

Companie

Data inscriere

Cristina Ionita ACI Worldwide 21-Aug
Borlean Patricia Alcatel Lucent 21-Aug
Ionescu Daniel Andrei Berg-Computers 27-Aug
Vlad Guzei Berg-Computers 27-Aug
Chirtoc Adi Byty 21-Aug
Alin Taranu Ciao De 21-Aug
Mirela Olariu Ciao De 21-Aug
Marco Radosavlevici Ciao De 24-Aug
Stan Vasile Ciprian Continental 25-Aug
Filip Ivan Diartis 28-Aug
Bandea Simona Oce 21-Aug
Dan Tiberiu Oce 21-Aug
Doru Mihai Oce 21-Aug
Fallon Anita Oce 21-Aug
Mezei, Flavia-Octavia Oce 21-Aug
Andoniu, Ovidiu-Cristinel Oce 21-Aug
Diana Tataran Oce 21-Aug
Danciu Melania Oce 21-Aug
Spantioc, Cosmin-Radu Oce 27-Aug
Pirte Bogdan-Augustin X3Studios 21-Aug
Constantin-Marius Stanescu   24-Aug
Dani Costea   25-Aug
Virginia Fagadar-Ghisa Berg-Computers 28-Aug
Babescu Maximilian Live Soft 29-Aug
Roxana Iancu   31-Aug

Curs ASP.NET – lista închisă

Sunday, September 6th, 2009

Acum câteva zile s-au ocupat cele 25 de locuri pentru cursul de ASP.NET din Timișoara anunțat acum ceva vreme.

Îi rog pe participanți (care deja au primit confirmarea pe email) să vină fiecare cu laptop, și cu următoarele unelte instalate:

  • Visual Studio 2008 cu SP1. Nu contează ediția. Se poate deci cu Express.
  • MS SQL Server 2005 sau 2008. Nu contează ediția. La fel, se poate cu Express.
  • Plug-in-ul de ASP.NET MVC.
    Ne vedem sâmbătă, 12 septembrie începând cu ora 10.

Curs ASP.NET 3.5 si 4.0

Friday, August 21st, 2009

CodeCamp.ro, prin Mihai Tătăran, Microsoft MVP pe ASP/ASP.NET, organizează un curs de ASP.NET 3.5 și elemente din 4.0, destinat programatorilor care preferabil au experiență cu tehnologiile .NET. Cursul se va desfășura pe perioada a 3 săptămâni, în datele de 12, 19 și 26 septembrie (sâmbăta, timp de aproximativ 5-6 ore în fiecare din zile, începând cu ora 10).

Cursul este în întregime gratuit, fiind o activitate de comunitate, iar prânzul va fi asigurat printr-o sponsorizare a Microsoft România. Locația este Timișoara, Republicii 9, sala de training de la Etajul 3, cu sprijinul Incubatorului de Afaceri Software Timișoara.

Având în vedere trend-urile curente, cursul va insista pe modelul de dezvoltare pe client (Javascript, Ajax 4.0) respectiv ce aduce nou ASP.NET 4.0, dar va porni de la fundamente care sunt prezente încă din versiunea 2.0 a lui ASP.NET.

Înscrierile se fac pe email (mihai punct tataran arond hpc-consulting punct ro), în limita a 25 de locuri. Primele 25 de persoane înscrise vor fi cele acceptate la curs, iar în acel moment voi anunța pe blog.

Player video Silverlight – Open Source

Thursday, July 16th, 2009

Am dezvoltat un player video în Silverlight, destul de drăguț și cu multe funcționalități. Cele mai interesante sunt:

  • posibilitatea de a reda un flux video live
  • configurarea unei liste de fișiere video (găzduite undeva) care să fie preluate într-un play-list și redate unitar

Puteți să îl descărcați și chiar să îl îmbunătățiți: http://agoraplayer.codeplex.com/ .

UPDATE. O versiune demo se poate vedea aici: http://86.123.249.165/silverlightplayer/.

Am fost numit Microsoft MVP

Wednesday, July 1st, 2009

Azi am primit un email în care sunt anunțat că am primit titlul de Microsoft Most Valuable Professional pentru contribuțiile mele în comunitate din ultimul an, pe tehnologia ASP/ASP.NET.

Programul este descris pe site-ul oficial: http://mvp.support.microsoft.com/. Unul din cele mai mari avantaje (așa cum le percep eu), este acela de a fi invitat 1 dată pe an la conferința MVP Summit organizată de echipa din Redmond de la produsul / tehnologia pentru care ai primit nominalizarea.

Eveniment în comunitate

Tuesday, June 30th, 2009

Sâmbătă cu începere de la ora 9 până pe la 14, vom avea 3 discuții pe teme legate de SQL Server și Silverlight 3. Vom prezenta eu și Ciprian Jichici, iar mai multe detalii găsiți aici (unde vă și rog să confirmați participarea).

Introducere în .NET – reloaded

Thursday, June 11th, 2009

Am avut deja o primă serie (http://itboard.ro/blogs/zolis_tool/archive/2009/03/25/introducere-in-net-6-8-aprilie.aspx), acum reluăm: http://itboard.ro/blogs/zolis_tool/archive/2009/05/27/introducere-in-net-16-18-iunie.aspx . Încă se mai pot face înscrieri.

Students 2 Business …

Thursday, June 11th, 2009

.. este una din inițiativele menite să asigure un cadru de practică de vară (sau Internship) pentru studenți din mediul IT. Astfel, Microsoft pune la dispoziție o platformă prin care să creeze legătura dintre Universități, studenți și companii. Site-ul oficial este acesta: http://s2bprogram.com/cee/ . Acolo s-au postat oportunități de practică respectiv studenți au aplicat la acestea.

Este o inițiativă excelentă, dar simțeam că mai trebuie ceva. De aceea, am discutat cu Călin Drimbău (http://ms.upt.ro/redirect/ ) să organizăm și niște sesiuni de instruire cu acești studenți, înainte ca ei să înceapă efectiv practica. Astfel, sâmbătă 6 iunie am povestit cu vreo 25 de studenți despre: arhitecturi în aplicații web, în special deciziile legate de tehnologie, am dat exemple din ASP.NET și din Silverlight.

Știu că a fost doar o picătură într-un ocean ce am făcut eu, dar e un punct de plecare. Oricum, la practica propriu-zisă mă gândesc să facem o treabă mult mai extinsă și mai serioasă decât era planul inițial. În loc de 3 săptămâni, am dori să ținem studenții într-un Internship pe toată perioada vacanței (mai puțin cât suntem efectiv în concedii). Dar, despre acest lucru într-un post viitor.

Microsoft DevDays – mai 2009

Wednesday, May 27th, 2009

Mi-a făcut o plăcere deosebită sa merg în turneu cu Petru și Zoli (respectiv cu Florian în unele locații) pentru conferințele DevDays. In special pentru că în Iași nu am fost niciodată până acum, spre rușinea mea :-).

Eu am avut sarcina de a vorbi despre:

  • Accesul la date folosind ADO.NET Entity Framework
  • ASP.NET + Ajax + Javascript vs Silverlight
  • Aplicații RIA cu Silverlight

Am pus aici materialele pe care le-am folosit în prezentări. Sunt slide-uri și exemple (soluții Visual Studio).