Bejelentkezés

E-mail: 
Jelszó: 
| Regisztráció | Jelszó? |
 



Menü

.Net világ havilap 2004. március - 84. oldal

Longhorn - Whidbey - Yukon

Igen  jelentős  és  nagymértékű  változás  előtt  áll  a  Windows,  Visual  Studio.NET  és  az  MS  SQL  is.  E  három  termék  nem  is  olyan  távoli  jövőben  megjelenő  verzióiba  enged  bepillantást  e  cikk.

Ne  feledjük,  hogy  a  cikk  fókuszában  álló  szoftvertermékek  jelenleg  még  nem  végleges  állapotúak,  így  jelentős  eltérések  is  lehetnek  a  most  leírtak  és  a  majdan  megjelenő  végleges  termékek  funkciói  között.A  termék  végleges  elkészültéig  hivatalos  hardverkövetelmény  nincs  megnevezve,  de  a  jelenleg  elérhető  verziók  telepítése  után  az  alábbiakat  tapasztaltuk:Egy  teljesen  üres  merevlemezre  telepítve  a  Windows  "Longhorn"-t,  a  telepítés  utáni  első  indításkor  500  MB  RAM  volt  lefoglalva  és  3,12  GB  terület  kellett  a  merevlemezen.  Erre  feltéve  a  Visual  Studio.NET  "Whidbey"-t  a  telepítés  és  futtatás  után  580  MB  RAM  és  5,5  GB  merevlemez  terület  fogyott  el.  Ha  még  feltesszük  az  MSDN  Library-t  is  ezek  után,  akkor  már  7,5  GB  lefoglalt  területnél  tartunk  a  merevlemez  esetében.Az  újdonságokVisual  Studio  "Whidbey"A  Visual  Studio.NET  következő  verziója  elsősorban  az  új  MS  SQL  "Yukon"  szerver  megjelenésének  támogatását  tartalmazza,  így  például  írhatunk  SQL  tárolt  eljárásokat  akár  menedzselt  kódból  is.  Továbbá  új  elemek  jelennek  meg  az  osztálykönyvtárban,  a  programozási  nyelvekben  és  jelentős  újdonságok  kerülnek  a  fejlesztői  környezetbe  is.  Tartalmazza  az  ASP.NET  2.0-t  és  az  XAML  támogatását.Visual  Studio  "Orcas"A  Whidbey-t  követő  Visual  Studio.NET  verzió  a  megjelenő  új  operációs  rendszer  (Longhorn)  támogatását  tartalmazza  majd.  Így  teljes  támogatást  kapunk  alkalmazásaink  fejlesztéséhez  a  Longhorn  újdonságainak  (Avalon,  Indigo,  WinFS)  programozásához.MS  SQL  "Yukon"Az  új  SQL  szerver  legmeghatározóbb  újdonsága  a  .Net  irányába  történő  lépés.  Sok  más  alkalmazás  mellet  immáron  az  új  SQL  szerver  is  teljes  .Net-es  támogatást  élvez.Windows  "Longhorn"Számos,  nagymértékű  fejlesztést  és  újdonságot  tartalmaz  a  Microsoft  következő  operációs  rendszere,  mely  szintén  a  .Net  irányába  történő  lépést  jelenti,  valamint  a  menedzselt  kódból  elérhető  operációsrendszer  szintű  programozást.A  Longhorn  új  összetevőiA  Longhorn-nal  kapcsolatban  három  új  szó  hangzik  el  a  leggyakrabban:  Avalon,  WinFS,  Indigo.  Nézzük,  mit  is  takarnak  e  rejtelmes  szavak:Avalon,  a  megjelenítési  alrendszerAz  Avalon  egy  új  prezentációs  és  felhasználói  interfészt  (UI)  megvalósító  osztály  kollekció  a  .NET  Framework-ön  belül,  mely  egyesíti  a  webböngésző  és  a  Windows  Form-ok  megjelenítési  képességeit.  Például  egy  böngésző  képes  HTML  kód  alapján  előállítani  egy  felhasználói  interfészt,  míg  a  Windows  Form-ok  esetén  TextBox,  Label  és  további  Windows-os  kontrollok  használata  szükséges,  legalábbis  az  Avalon  megjelenéséig.  Egy  új,  kiterjesztett  XML  nyelv  jelenik  meg  XAML  néven,  melyben  leírható  a  felhasználói  interfész:<FlowPanel  xmlns="http://schemas.microsoft.com/          2003/xaml"  >    <Button  Background="Green"  Click="EventYesButton">          Yes    </Button>      <Button  Background="Red"  Click="EventNoButton">          No    </Button></FlowPanel>XAML  szerkesztésre  akár  a  Notepad-et  is  használhatjuk,  csak  az  állomány  kiterjesztése  XAML  legyen.Indigo,  a  kommunikációs  alrendszerAz  Indigo  a  Windows  "Longhorn"  kommunikációs  alrendszere,  mely  implementálja  a  SOAP  1.2  specifikációt.Minden  eddigi  kommunikációs  formát  egységesít:  WebService,  natív  .Net  kommunikáció,  WSE,  MSMQ,  stb.Menedzselt  kódból  történik  minden  művelet.  Az  alrendszer  névterei:  o System.MessageBuso System.MessageBus.Serviceso System.MessageBus.Securityo System.MessageBus.RemotingWinFS,  a  tárolási  alrendszerAz  NTFS  felépítése  úgy  néz  ki,  hogy  mappákat  hozunk  létre  és  bennük  állományokat  tárolunk.  Az  állományokban  adatok  vannak,  állományokhoz  attribútumok  tartozhatnak  (csak  olvasható,  rejtett,  stb.).  Bizonyos  esetekben  extra  adatokat  is  megadhatunk,  például  MS  Word  dokumentum  esetén  szerző,  kulcsszavak,  stb.A  WinFS  ehhez  képest  a  következő  módon  lett  megvalósítva:  a  WinFS  elemeket  tárol,  melyeknek  vannak  tulajdonságaik.  Tulajdonság  lehet  egész  szám,  szöveg,  akár  xml  is,  vagy  bármi  más  alapvető  adattípus.  Az  elem  tulajdonságai  függnek  annak  típusától.  Minden  elemet  egy  séma  definiál,  melyet  tetszés  szerint  módosíthatunk,  bővíthetünk.  Ilyen  elem  lehet  mappa,  állomány,  üzenet,  névjegy,  különféle  dokumentum.  Az  elemek  között  felépíthetünk  kapcsolatokat.Egy  mappa  elemhez  hozzárendelhetünk  állomány  elemeket.  Vagyis  az  adott  mappába  állományokat  helyezünk  ezzel  a  kapcsolási  művelet  létrehozásával.  Egy  dokumentum  elemhez  hozzákapcsolhatunk  egy  névjegy  elemet,  megadva  ezzel  mondjuk  a  dokumentum  szerzőjét.  A  WinFS  objektumait  elérhetjük  saját  alkalmazásunkból  a  WinFS  API-n  keresztül,  vagy  akár  az  ADO.NET  segítségével  menedzselt  kódból.A  WinFS  platform  egy  relációs,  objektum-orientált  XML-re  épülő  rendszer,  mely  akár  menedzselt  kódból  is  programozható.Visual  Studio  "Whidbey"Számtalan  újdonság  jelenik  meg  az  új  Windows  "Longhorn"  és  SQL  "Yukon"  szerverben.  Az  újdonságok  akkor  hasznosak  igazán,  ha  a  szoftverfejlesztők  ki  is  tudják  használni  ezeket  az  újdonságokat  készítendő  programjaikban.  A  Visual  Studio  "Whidbey"  kódnevű  verziója  maximálisan  támogatja  a  megjelenő  újdonságokat  a  szoftverfejlesztők  számára,  így  teljessé  válik  a  kör,  a  felhasználóktól  a  rendszergazdákon  át  a  fejlesztőkig  mindenki  számára  elérhető  és  kihasználható  minden  újdonság.A  Longhorn  új  megjelenítési  rendszere  az  XAML  (Extensible  Application  Markup  Language)  nyelvre  épül.  Ennek  támogatását  szintén  megtaláljuk  a  Visual  Studio  "Whidbey"-ben.  Egy  nyomógomb  létrehozása  hagyományos  esetben  így  nézne  ki:C#Button  b  =  new  Button();b.Background  =  Brushs.LightSeaGreen;b.FontSize  =  new  FontSize(24,  FontSizeType.Point);b.Content  =  "Hello  Button"Míg  az  XAML  nyelven  leírva  a  fenti  nyomógomb  létrehozása  az  alábbiak  szerint  történhet:XAML<Button  Background="LightSeaGrean"  FontSize="24"  Content="Hello  World"  />XAML  használata  esetén  a  megjelenítés  leírása  és  a  kód  akár  egy  helyen  is  lehet:  <Canvas  ID="root"  xmlns="http://schemas.microsoft.        com/2003/xaml"  xmlns:def="Definition">      <Button  ID="btn1"  Click="Button_Click">        Hello  Word    </Button>    <def:Code>        <![CDATA[  void  Button_Click(object  sender,              ClickEventArgs  e)          {              btn1.Background  =  Brushes.Red;          }          ]]>      </def:Code></Canvas>XAML  CodeBehindXAML  azonban  használható  az  ún.  CodeBehind  technológiával  is,  vagyis  amikor  a  megjelenítés  és  a  kód  különválasztva  két  állományban  található,  mint  egy  webes  alkalmazásnál  az  ASPX  állomány  és  a  hozzá  tartozó  C#,  vagy  VB.NET  kód.def:Class="MyLonghornApplication.MyApp"def:CodeBehind="MyApp.xaml.cs">  <Button  ID="btn1"  Click="Button_Click">MyApp.xaml.csusing  ...namespace  MyLonghornApplication    public  partial  class  MyApp    {        private  void  Button_Click  (object  sender,              ClickEventArgs  e)        {            btn1.Background  =  MSAvalon.Windows.                Media.Brushes.Red;        }    } }Visual  Studio  "Whidbey"  a  gyakorlatban  Visual  Studio  "Whidbey"  indításaNézzük  most  a  gyakorlatban,  milyen  újdonságokkal  rendelkezik  a  Visual  Studio  "Whidbey".  A  program  elindítása  a  hagyományos  módon  történik.    Segédablakok  áthelyezéseSok  újdonság  közül  az  első  ami  szembetűnő,  az  az  hogy  amikor  megpróbáljuk  a  Visual  Studio.NET  segédablakait  áthelyezni  egyik  oldalról  a  másikra,  akkor  ahogy  az  egeret  mozgatjuk,  kis  nyilakat  ábrázoló  képek  jelennek  meg  az  egér  közelében,  melyek  mutatják  azokat  a  területeket,  ahova  az  egyes  segédablakok  áthelyezhetők.  Ezáltal  az  ablakok  áthelyezése  nagymértékben  leegyszerűsödik,  sokkal  egyszerűbben  megtalálhatjuk  a  keresett  pozíciót,  legyen  az  egy  terület  bármely  széle,  illetve  a  terület  közepe.Próbaképpen  készítsünk  most  egy  olyan  egyszerű  kis  Windows-os  alkalmazást,  mely  SQL  adatbázisból  jelenít  meg  adatokat  a  Form-on.  Az  alkalmazást  a  már  megszokott  módon  hozhatjuk  létre.  Ezt  követően  hozzunk  létre  egy  adatbázis  kapcsolatot  a  DataSource  Fields  lapon.  A  megjelenő  Add  New  DataSource  ablakban,  ha  még  nem  rendelkezünk  adatbázis  kapcsolattal,  akkor  a  New  gombra  kattintva  létrehozhatunk  egyet,  amennyiben  ez  már  adott,  csak  választanunk  kell  a  listából.  Kiválasztás  után  megjelennek  az  elérhető  táblák,  nézetek,  melyekből  szintén  választhatunk,  hogy  mire  van  szükségünk  az  adott  alkalmazásunkhoz.  Adatforrás  megjelenítése  Drag  and  Drop-alPéldánkban  a  Northwind  példaadatbázis  Invoices  nézetéhez  hoztunk  létre  kapcsolatot.  A  DataSource  Fields  lapon  megjelenő  hierarchiából  az  Invoices  elemet  egérrel  megfogjuk  és  Drag  and  Drop-al  húzzuk  a  Form-ra.  Ekkor  megjelenik  egy  DataContainer,  benne  egy  DataGrid  kontrol  mely  táblázatos  formában  megjeleníti  az  adatainkat  és  alatta  számos  nyomógomb,  mely  az  adathalmazban  történő  navigálást,  illetve  az  adatok  betöltését,  mentését  hivatott  ellátni.  Ezzel  az  egyszerű  Drag  and  Drop  művelettel  akár  komplettnek  is  tekinthetjük  alkalmazásunkat,  mely  képes  a  választott  adatforrás  szerkesztésére,  megjelenítésére.  További  újdonság,  hogy  a  felhelyezett  DataContainer  kontrolhoz  megjelenik  egy  SmartTag  menü,  melyen  keresztül  további  hasznos  funkciókat  végezhetünk  el  a  kontrollal  kapcsolatban.  Programunk  egyetlen  sornyi  forráskód  írása  nélkülAmint  említettük,  programunk  akár  már  most  futtatható,  és  az  elvárásoknak  megfelelően  használható.  Természetesen  lehetőségünk  van  a  megjelenített  nézet  egyedi  testreszabására,  tetszőleges  funkciókkal  való  bővítésére.  Adatmegjelenítés  DataGrid  nélkül  Adatoszlopok  elhelyezése  Drag  and  Drop-alElőbbi  megoldásunkban  a  DataSource  Fields  ablakból  a  teljes  Invoices  nézetet  húztuk  át  Drag  and  Drop-al.  Ennek  hatására  jelent  meg  egy  DataGrid.  Lehetőségünk  van  azonban  arra  is,  hogy  az  adatforrás  összes  oszlopa  ne  egy  táblázatban  jelenjen  meg,  hanem  csak  az  általunk  kiválasztott  oszlopokhoz  készüljön  adatbeviteli  kontrol.  Ebben  az  esetben  a  DataSource  Fields  ablakból  Drag  and  Drop-al  csak  azokat  az  oszlopokat  húzzuk  át  a  Form-ra,  melyekre  szükségünk  van  programunkban.  Ebben  az  esetben  nem  egy  DataGrid,  hanem  minden  egyes  oszlophoz  egy-egy  Label  illetve  TextBox  kontrol  jelenik  meg.  A  Label-en  az  oszlop  megnevezése  jelenik  meg,  míg  a  TextBox-ban  az  adatforrás  aktuálisan  kiválasztott  sorához  tartozó  értéke.  Adatbeviteli  mezők  igazításaMiután  felhelyeztük  a  Form-ra  a  szükséges  adatbeviteli  mezőket,  azokat  a  Drag  and  Drop  művelettel  egymáshoz  igazíthatjuk.  Az  elrendezés  művelete  folyamán  a  Form-on  automatikusan  kis,  vékony  vonalak  jelennek  meg,  így  könnyen  láthatóvá  válik,  hogy  mikor  kerül  az  adott  kontrol  arra  a  pozícióra,  ahova  tenni  szeretnénk.  Adatbeviteli  kontrolok  megválasztásaA  gyors  elrendezést  követően  további  lehetőségünk  van  arra  is,  hogy  az  egyes  adatbeviteli  mezőknél  ne  csak  TextBox  álljon  rendelkezésre  a  felhasználó  számára.  Az  adott  kontrol  fölé  mozgatva  az  egeret,  megjelenik  egy  SmartTag  menürendszer,  melyben  kiválaszthatjuk  többek  közt  azt,  hogy  milyen  beviteli  kontrolt  szeretnénk  a  TextBox  helyett.  Például  egy  dátum  típusú  adathoz  célszerűen  a  DateTimePicker  kontrolt  választhatjuk.RefractorObjektumok  csoportos  átnevezéseKépzeljük  el  a  következő  esetet:  készítünk  egy  Windows-os  alkalmazást  és  a  Form-on  elhelyezünk  egy  Label  kontrolt,  melynek  meghagyjuk  alapértelmezésként  kapott  label1  nevét.  A  program  továbbfejlesztése  során  a  forráskódban  számtalan  helyen  hivatkozunk  a  label1  nevű  objektumunkra.  Későbbiek  folyamán  úgy  döntünk,  hogy  mégiscsak  jobb  lenne  egy  egyedi  névvel  illetni  a  label1-et.  De  mivel  nagyon  sok  helyen  használtuk  már  a  label1  hivatkozást,  így  forráskódjainkban  nehézkes  a  manuális  javítás.  Használhatnánk  persze  a  Visual  Studio.NET  szövegszerkesztőjének  azon  képességét,  mely  cserél  egy  megadott  szót  egy  másikra.  Ezzel  csupán  az  a  probléma,  hogy  a  szövegben  fellelhető  összes  label1  karaktersorozatot  kicseréli  az  általunk  megadott  új  szóra.  Ebből  gond  adódhat  akkor,  ha  a  label1  karaktersorozat  előfordul  a  forráskódunkban  oly  módon,  hogy  az  nemcsak  a  Label  kontrolra  történő  hivatkozást  takarja.A  Visual  Studio.NET  fejlesztői  környezetében  megjelenő  új  Refractor  menüpontból  nyíló  további  menüpontokkal  elérhető  szolgáltatások  között  számtalan  a  forráskód  szerkesztését  segítő  eszközt  találunk.  A  Rename  menüpont  alatt  fent  megfogalmazott  problémánkra  találunk  megoldást.  Mire  nevezzük  át  objektumainkat?Jelöljük  ki  az  átnevezni  kívánt  elemet,  jelen  esetben  a  label1  objektumot,  majd  kiválasztva  a  Refractor  -  Rename  menüpontot,  a  megjelenő  ablakban  adjuk  meg,  hogy  mire  szeretnénk  átnevezni  objektumunkat.  A  Preview  Changes  opció  kiválasztásával  lehetőségünk  van  arra,  hogy  a  csere  tényleges  megtörténte  előtt  egy  előnézeti  képet  kapjunk  arról,  hogy  mely  sorokat  érinti  a  csere.A  Search  in  comments  and  strings  opció  kiválasztásával  a  csere  nemcsak  a  tényleges  objektum  hivatkozásain  történik  meg,  hanem  a  megjegyzésekben  illetve  a  forráskódban  található  sztringekben  is  történik  keresés.  Preview  az  átnevezés  előttA  Preview  Changes  opció  választásakor  a  tényleges  csere  megtörténte  előtt  megjelenő  ablakban  megtekinthetjük  azokat  a  forráskód  sorokat,  ahol  a  csere  meg  fog  történni.  Itt  még  lehetőségünk  van  arra,  hogy  az  egyes  soroknál  elvessük  a  csere  lehetőségét,  de  megtehetjük  akár  azt  is,  hogy  egy  egész  forráskód  állományt  kivonjunk  a  csere  művelete  alól.Nyelvi  elemek  elhelyezéseA  Refractor  menüpont  egy  további  eszköze  a  különféle  nyelvi  elemek  beszúrása  a  forráskódba.  Ezzel  elérhetjük  azt,  hogy  egy  már  meglévő  forráskód  blokk  köré  tetszőleges  nyelvi  elemeket  illesszünk.  Például  adott  egy  olyan  forráskód  sor,  melyben  egy  értékadást  végzünk  el.  A  programfejlesztés  folyamán  kiderül,  hogy  ezt  az  értékadást  csak  egy  bizonyos  feltétel  teljesülése  esetén  kell  elvégeznünk.  Ilyenkor  nyilvánvaló  megoldás  az,  hogy  az  érintett  sor  elé  egy  If  feltételt  helyezünk,  majd  a  sor  után  lezárjuk  azt.  Refractor  művelet  használatakor  egyszerűsödik  a  munkánk,  ebben  az  esetben  jelöljük  ki  az  érintett  forráskód  blokkot,  majd  válasszuk  a  Refractor  -  Sorround  with  menüpontot.  E  menüből  több  almenü  is  nyílik,  melyekben  különféle  nyelvi  elemek  találhatók.  Válasszuk  most  az  If  menüt.  Ennek  hatására  a  kívánt  módosulás  létrejön  a  forráskódunkban,  ahogy  az  az  alábbi  képen  is  látható:Refractoring  használata  forráskód  létrehozásáhozForráskód  szerkesztése  közben  gyakran  kerülünk  olyan  helyzetekbe,  ahol  nem  a  programozás  lényegi  dolgaival  foglalkozunk,  hanem  szinte  azonos  forráskód  részleteket  ismételgetünk.  Gondoljunk  csak  bele,  létre  kell  hoznunk  három  azonos  típusú,  de  különböző  nevű  property-t,  melyekhez  szükséges  három  változó  is  adattároláshoz.  Ennek  a  feladatnak  a  megoldása  elengedhetetlen  alkalmazásunk  működéséhez,  de  javarészt  csak  gépelésből  és  másolásból  áll.  A  Refractoring  használatával  ez  a  manuális  munka  nagymértékben  lecsökken.    Azon  a  helyen,  ahol  a  forráskódunkba  szeretnénk  beilleszteni  valamilyen  nyelvi  elemet,  például  egy  property-t,  kattintsunk  jobb  egérgombbal,  majd  a  gyorsmenüből  válasszuk  a  Refractoring  menüpontot  és  a  megjelenő  listából  keressük  elő  a  beszúrandó  elemet,  mely  most  legyen  a  property.  A  menüpont  kiválasztása  után  rögtön  kapunk  egy  int  típusú  publikus  property-t,  melyhez  egy  privát  változó  is  tartozik.  A  privát  változónál  lévő  int  típus  karakterei  kijelöltek  lesznek,  más  típus  esetén  ezt  azonnal  átírhatjuk.  Amit  itt  módosítunk,  a  változás  automatikusan  átkerül  a  property  típusához  is,  így  nekünk  csak  egy  helyen  kell  megadnunk  a  létrehozandó  property  és  a  hozzá  tartozó  változó  típusát.  A  Tab  lenyomásával  léphetünk  a  következő  mezőre,  mely  jelen  esetben  a  privát  változó  megnevezése  lesz.  Ez  szintén  automatikusan  kijelölésre  kerül,  így  rögtön  átírhatjuk.  A  változást  természetesen  itt  is  követi  a  property  elnevezése.A  beszúrt  property  int  típusát  átírva  bool-ra  és  a  nevét  enabledControl-ra,  az  alábbi  kód  részletre  változik  a  property  illetve  a  hozzá  tartozó  változó:  Hogy  egy  property  beszúrásakor  milyen  szövegnek  kell  megjelennie  a  forráskódban,  és  annak  miként  kell  viselkednie  szerkesztéskor,  azt  egy  XML  állomány  írja  le.  Ezt  az  állományt  szükség  esetén  akár  módosíthatjuk  is,  vagy  létrehozhatunk  saját  leírásokat  gyakran  használt  forráskód  részletek  beszúrásához.<ExStencil><header>      <title>property</title>      <shortcut>property</shortcut>      <description>        Generate  property  and  backing  field    </description>      <category>Expansion</category>  </header>  <snippet>      <declarations>      <literal  default="true">          <id>type</id>          <tooltip>Property  type</tooltip>          <default>int</default>      </literal>      <literal>          <id>property</id>          <tooltip>Property  name</tooltip>          <default>MyProperty</default>      </literal>      <literal>          <id>field</id>          <tooltip>              The  variable  backing  this  property</tooltip>          <default>myVar</default>      </literal>      </declarations>      <code  language="csharp">      <![CDATA[          private  $type$  $field$;        public  $type$  $property$        {            get  {  return  $field$;}            set  {  $field$  =  value;}        }        $end$    ]]>      </code>  </snippet>  </ExStencil>Automatikus  szövegformázások  testre-szabása    Szövegszerkesztői  opciók  beállításaAz  új  Visual  Studio.NET-ben  számtalan  lehetőségünk  van  annak  beállítására,  hogy  a  forráskód  szerkesztése  közben  miként  történjen  az  egyes  nyelvi  elemek  automatikus  formázása,  elhelyezése.  A  Tools  -  Options  menüpont  választása  után  megnyíló  ablak  Text  Editor-  C#  -  Formatting  elemét  választva  számtalan  apró  beállítási  lehetőség  tárul  elénk.Kiválasztva  egy-egy  elemet,  az  ablak  alsó  részében  rögtön  megjelenik  egy  kis  forráskód  részlet,  megmutatva  azt,  hogy  a  választott  opció  milyen  hatással  lesz  a  forráskód  automatikus  formázására.Internetes  WebSite-ok  létrehozása  Virtuális  webszerverA  Visual  Studio.NET  új  verziójában  az  Internet  Information  Services  (IIS)  használata  nélkül  is  lehetőségünk  van  ASP.NET-es  webes  alkalmazások  létrehozására,  futtatására,  sőt  még  a  hibakeresésre  is.  Ebben  az  esetben  a  Visual  Web  Developer  Web  Server  nevű  alkalmazást  használhatjuk  programjaink  futtatásához,  teszteléséhez.  Új  webhely  készítéseÚj  webes  alkalmazás  létrehozásához  válasszuk  a  File  -  New  -  Web  Site  menüpontot.  ASP.NET  Internet  Site  létrehozásaWebes  projekt  típusok  száma  bővült  az  eddigi  Visual  Studio.NET  verzióihoz  képest.  Immáron  létrehozhatunk  olyan  webes  alkalmazásokat,  melyekben  rögtön  megtalálható  egy  komplett  általános  internetes  webhely  keretrendszere.  Ezt  felhasználva  szinte  pillanatok  alatt  készíthetünk  teljes  webhelyeket  internetre  illetve  intranetre  egyaránt.  Példaként  nézzünk  most  egy  ASP.NET  Internet  Site  típusú  projekt  létrehozását.  A  legenerált  website  már  egy  komplett,  futtatható  alkalmazásA  projekt  létrehozását  követően  számos  ASPX  oldalt  kapunk,  melyeknek  egy  általános  webhely  felépítéséhez  szükséges  oldalai  rögtön  a  rendelkezésünkre  állnak.  Ezeket  az  oldalakat  tetszés  szerint  átalakíthatjuk,  kiegészíthetjük,  saját  tartalmunkkal  feltölthetjük,  de  tudnunk  kell,  hogy  a  webhely  létrehozás  utáni  állapotában  akár  már  módosítás  nélkül  is  futtatható.  A  legenerált  alkalmazás  futás  közbenA  webhely  futtatásakor  a  projektünk  rendelkezik  egy  hierarchikus  menürendszerrel,  melyeken  keresztül  elérhetők  a  már  létrehozott  további  ASPX  oldalak.Intranetes  WebSite-ok  létrehozása  ASP.NET  Intranet  Site  létrehozásaKövetkezzen  most  egy  intranetes  WebSite  létrehozásának  próbája.  Ennek  létrehozásához  válasszuk  a  File  -  New  -  Web  Site  menüpontot,  majd  a  megjelenő  ablakból  az  ASP.NET  Intranet  Site  elemet.  A  legenerált  alkalmazása  futás  közbenA  fordító  ekkor  ismételten  legenerál  jó  pár  ASPX  oldalt,  és  más  egyéb  az  alkalmazás  működéséhez  szükséges  állományt.A  létrehozott  projekt  ezt  követően  akár  már  futtatható  is,  de  természetesen  lehetőség  van  itt  is  az  egyedi  testreszabásra  és  egyéb  módosítások  elvégzésére  is.A  létrehozott  projekt  stílusa  igen  nagymértékben  hasonlít  a  SharePoint  Portal  Server  által  generált  weboldalakhoz.  Ha  alaposabban  szemügyre  vesszük  a  létrehozott  ASPX  weboldalakat,  megfigyelhetjük  a  Visual  Studio.NET  új  verziójának  egyik  nagy  újdonságát,  a  master  page  használatát.  Mester  lap  készítéseMi  is  az  a  master  page?Webhelyek  készítésekor  gyakori  probléma,  hogy  több  különböző  ASPX  oldalt  kell  létrehoznunk  oly  módon,  hogy  azok  tartalmaznak  minden  oldalon  közös  elemeket.  Ilyen  lehet  például  egy  menürendszer,  az  oldal  címe,  fejléce,  lábléce,  stb.Ezekre  az  elemekre  webhelyünk  minden  oldalán  szükségünk  van,  de  mivel  egy  webhely  sok  különböző  lapból  épül  fel,  ezért  némi  nehézség  adódik  e  feladat  megoldásánál.  A  mester  lap  tehát  nem  más,  mint  egy  olyan  speciális  ASPX  oldal,  mely  kerete  más  oldalaknak.  Ezen  a  mester  lapon  tehát  tetszőleges  web  kontrolok  helyezhetők  el  tetszőleges  funkciókkal.  A  webhelyhez  tartozó  mester  lap  a  Site.master  állományban  kap  helyet.  Mester  lap  alkalmazásaAz  elkészített  mester  lapot  ezek  után  tetszőleges  számban  felhasználhatjuk  új  weblapok  kialakításakor  és  ettől  kezdve  már  csak  az  adott  lap  lényegi  funkcióira  kell  koncentrálnunk,  és  nem  kell  törődnünk  azokkal  a  feladatokkal,  melyek  minden  lapon  közösek.A  WinBar  kontrol  Az  új  Windows  verzió  megjelenésével  néhány  új  kontrolt  is  kapunk,  melyet  a  Visual  Studio.NET  új  verziójával  már  be  is  építhetünk  saját  alkalmazásainkba.  Az  egyik  ilyen  új  kontrol  a  WinBar.A  WinBar  kontrol  Form-ra  helyezését  követően  annak  területén  különféle  kontrolokat  helyezhetünk  el  oly  módon,  hogy  egy  legördíthető  listából  kiválasztjuk  a  soron  következőt.  Ezzel  a  módszerrel  elhelyezhetünk  nyomógombot,  Label-t,  TextBox-ot,  menüpontokat,  stb.  Az  elhelyezett  kontrolok  egymás  mellett  jelennek  meg,  funkciójuk  és  beállítási  lehetőségeik  megegyeznek  a  hagyományos  kontrolokkal.    WinBar  kontrol  működés  közbenA  WinBar  kontrol  összeállítása  után  rögtön  futtatható  alkalmazásunk,  az  egyes  kontrolok  a  hagyományos  kontrolokhoz  megszokott  módon  használhatók.Alkalmazás  publikáció  Alkalmazás  publikációA  Visual  Studio.NET  új  verziója  nagyon  nagy  segítséget  nyújt  a  különféle  alkalmazásaink  publikálásához.  A  megfelelő  jogosultságok  mellett  akár  közvetlenül  a  Visual  Studio.NET  keretrendszeréből  végezhetjük  el  a  publikációt  egy  megadott  HTTP  vagy  FTP  címre.  A  projekthez  tartozó  állományok  másolása  után  az  installálás  folyamata  is  elindítható  akár.  A  szükséges  összetevőkKiválaszthatjuk  azt  is,  hogy  a  publikáció  folyamán  milyen  összetevőkre  van  szüksége  alkalmazásunknak  (pl.:  .NET  Framework,  MDAC,  stb.).  Megadható,  hogy  ezek  az  összetevők  az  alkalmazással  azonos  helyről  kerüljenek  telepítésre,  vagy  megadható  egy  tetszőleges  másik  hely  is.  A  publikálandó  állományokKövetkező  lépésben  kijelölhetjük  a  publikálni  szánt  állományokat.  Alapértelmezésben  az  összes  állomány  kijelölt,  de  lehetőségünk  van  állományok  kivételére,  melyek  nem  szükségesek  a  publikáláshoz.  Alkalmazásunk  frissítéseBeállítható  az  is,  hogy  a  publikált  alkalmazás  automatikus  frissítési  lehetőséggel  rendelkezzen-e,  és  ha  igen,  akkor  milyen  módon  történjen  mindez.  Beállítható  például,  hogy  rendszeres  időközönként  történjen  ellenőrzés,  hogy  létezik-e  frissebb  verziója  programunknak,  vagy  akár  minden  egyes  induláskor.  Megadható  egy  olyan  hely  is,  ahová  publikáljuk  a  programunk  újabb  verzióját.MS  SQL  "Yukon"  projektAz  MS  SQL  szerver  új  "Yukon"  kódnéven  futó  verzió  számos  újdonságot  tartalmaz  .Net-es  fejlesztők  számára.Választhatunk  Transact  SQL  és  menedzselt  kód  között,  hogy  miben  készítsük  el  az  SQL  tárolt  eljárásokat,  triggereket,  felhasználói  függvényeket.  Használhatjuk  a  már  jól  ismert  Transact  SQL  nyelvet,  de  lehetőségünk  nyílik  C#  vagy  VB.NET  nyelvek  használatára  is  ezen  feladatok  megvalósításához.A  Transact  SQL  nyelvet  akkor  érdemes  választanunk,  ha  a  megvalósítandó  feladat  egyszerű,  nem  tartalmaz  különösebb  feldolgozási  logikát.  Egy  egyszerű  select  *  from  table  lekérdezésért  nem  érdemes  menedzselt  kódbeli  tárolt  eljárást  létrehoznunk.  Abban  az  esetben,  ha  viszont  összetett,  sok  feldolgozási  logikát  kell  tartalmaznia  az  eljárásunknak,  akkor  már  sokkal  egyszerűbb  a  megoldás  C#,  vagy  VB.NET  nyelv  használatával,  kihasználva  a  .NET  Framework  osztálykönyvtárainak  lehetőségeit.  Bármelyik  megoldást  is  választjuk  feladatunk  elvégzéséhez,  mind  a  két  esetben  a  szerveren  fut  a  kódunk.  Az  SQL  Server  "Yukon"  már  adatbázis  szinten  támogatja  a  Web  Service  kezelését,  nincs  szükség  egy  közbenső  rétegre  (például  IIS),  mely  megvalósítaná  HTTP-n  keresztüli  Web  Service  kérések  figyelését.  Ez  a  megvalósítás  egy  új  lehetőséget  kínál  az  SQL  szerverben  tárolt  adatok  eléréséhez.Új  verziója  jelenik  meg  az  ADO.NET-nek  is,  mely  számos  újdonságot  tartalmaz,  mint  például  a  Server  Cursor  Support  (SQLResultset).  Az  ADO.NET  támogatja  a  szerver  oldali  kurzorok  kezelését  az  ISqlResultSet  interfészt  használva.  A  Server  Cursor  használatával  lehetőségünk  nyílik  az  eredmény  halmaz  soraiban  a  pozícionálásra.  Kiolvashatjuk,  módosíthatjuk  az  aktuális  sor  adatait.  Új  eszközként  jelenik  meg  a  Reporting  Services,  mely  egy  szerver  oldali  platform  a  riportok  létrehozásában,  kezelésében,  megtekintésében.  A  Notification  Services  továbbfejlesztett  verziója  is  megjelenik,  mely  különféle  szempontok  alapján  küldhet  riasztásokat,  értesítéseket  e-mail-ben,  Messenger-en,  stb.  Az  értesítés  különféle  események  bekövetkezte  esetén  kérhető.  Például,  ha  egy  tárolt  adat  értéke  elér  egy  bizonyos  szintet,  akkor  a  megfelelő  módon  megtörténik  a  felhasználó  értesítése  erről  a  tényről.  MS  SQL  "Yukon"  projekt  létrehozásaA  Visual  Studio  "Whidbey"  új  projekt  típust  tartalmaz  SQL  Server  Project  néven.  Ilyen  típusú  projektet  kell  létrehoznunk,  ha  szeretnénk  maximális  mértékben  kihasználni  az  MS  SQL  "Yukon"  újdonságait.  Adatkapcsolat  megadásaA  projekt  típus  kiválasztását  követően  meg  kell  adnunk  az  Add  Database  Reference  ablakban,  hogy  projektünkhöz  mely  adatbázist  szeretnénk  használni.  Ha  már  van  létrehozott  adatbázis  kapcsolatunk,  akkor  csak  a  lista  felsorolt  elemei  közül  kell  választanunk,  ha  még  nincs,  akkor  az  Add  New  Reference  gombra  történő  kattintással  létrehozhatunk  egy  újat.  Új  SQL  objektumok  létrehozásaA  létrejött  projekthez  ezt  követően  már  tetszőleges  elemet  adhatunk  hozzá:  tárolt  eljárást,  felhasználói  függvényt,  triggert,  stb.Ha  létrehozunk  egy  új  tárolt  eljárást,  akkor  az  általunk  megadott  nevű  osztályban  létrejön  egy  tárolt  eljárás  kerete,  melybe  tetszőleges  kódot  írhatunk.A  tárolt  eljárás  nem  különbözik  egy  hagyományos  statikus  függvénytől,  csupán  annyiban,  hogy  az  SqlProcedure  attribútum  ott  található  előtte.public  class  CStoredProcedure1{    [SqlProcedure]    public  static  void  StoredProcedure1()    {        SqlPipe  sp  =  SqlContext.GetPipe();        sp.Send("Hello  World!  DateTime:  "  +              System.DateTime.Now.ToString()  +  "\n");        SqlCommand  c  =  SqlContext.GetCommand();        c.CommandText  =  "SELECT  ProductID  FROM  Product";        SqlDataReader  sdr  =  c.ExecuteReader();        Sp.Send(sdr);    }}Egy  trigger  létrehozásakor  szintén  csak  a  megadott  attribútum  emlékeztet  arra,  hogy  nem  egy  hagyományos  függvényről  van  szó.  Az  attribútumban  további  információként  megadható,  hogy  mely  táblához  készítjük  a  triggert,  és  annak  mikor  kell  lefutnia:  insert,  update,  stb.public  class  CTrigger1{    [SqlTrigger  ("Trigger1",  "Table1",  "FOR  UPDATE")]    public  static  void  Trigger1()    {        ...    }}Radó  Viktor  Kapcsolódó  webhelyekLonghorn  SDK http://longhorn.msdn.microsoft.com/