Links from December 3rd, 2007
december 3, 2007 od AlesMVP (Model-View-Presenter)
november 28, 2007 od AlesI am going to need this in a near future.
From Martin Fowler:
Model View Presenter
Passive Screen
Supervising Presenter
From Phil Haack:
ASP.NET Supervising Controller From Schematic To Unit Tests to Code
Using Rhino Mocks To Unit Test Events on Interfaces
From Billy McCafferty:
Considering a View's Get/Set Roles with MVP
Model View Presenter
Todd Snyder:
MVC or MVP Pattern – Whats the difference?
How can I get the .NET Framework directory?
november 20, 2007 od Alesusing System.Runtime.InteropServices;
RuntimeEnvironment.GetRuntimeDirectory();
TechEd BCN 2007 – Securing Your High-Risk ASP.NET Web Applications: A Case Study
november 13, 2007 od AlesPredavatelj: Dennis Vroegop, Detrio Consultancy b.v.
Dennis je predstavil svoje izkušnje pri izdelavi spletne aplikacije za prodajo hipotek za eno od nizozemskih bank. Predstavil je napake, ki so jih naredili in priporočil nekaj stvari, ki jih je treba narediti, da bomo imeli varno spletno aplikacijo:
- Razdeli sistem na nivoje
- Najemi ekipo strokovnjakov za varnost (po možnosti za vsak nivo v sistemu drugo)
- Za vsak nivo izdelaj analizo tveganj
- "Outsource"-aj vse kar lahko
- Vsak korak naj pregleda zunanji revizor
- Natančno opiši vse procedure delovanja
Povzetek: zagotavljanje varnosti je zapleteno in drago.
Povezave:
TechEd BCN 2007 – Real World Experiences in System.AddIn
november 10, 2007 od AlesPredavatelji: Jack Gudenkauf, Architect, Microsoft; Jesse Kaplan, Program Manager, Microsoft; Thomas Quinn
Šlo je za interaktivno predavanje, kjer so predavatelji v glavnem odgovarjali na vprašanja, tako da sem izvedel še nekaj novosti:
- Arhitektura je zasnovana tako, da o v prihodnje lahko gostitelj napisan v eni verzijo .NETFX, add-in pa v drugi
- Če hočemo odstraniti add-in iz pomnilnika (odnaložiti), mora biti v drugi appdomeni (appdomain). Tudi na splošno priporočajo (tudi zaradi varnosti), da je vsak add-in v svoji appdomeni. Nekje do 2000-4000 appdomen je še sprejemljivo.
- Tehnologijo že uporabljajo v VSTO (Visual Studio Tools for Office) in VSTA (Visual Studio Tools for Applications), uporabljala pa ga bo tudi naslednja verzija VS.
- Za namestitev lahko uporabimo tudi ClickOnce.
- Če želimo npr. add-inu izpostaviti svoj toolbar ali menu to storimo preko objektnega modela (npr. metode AddToolbarButton, AddIcon, DoThisWhenUserClicksTheButton).
- Prikaz UI-je add-in-a v gostitelju dela bolje, če je narejen z WPF
- Imeti Out-of-process add-in je bolj varno in zanesljivo, pa tudi bolj počasi.
- Add-in lahko najprej teče in-process in ga lahko šele naslednjič naložimo out-of-process
- Do metapodatkov add-ina imamo dostop ne, da bi sam add-in sploh naložili. Tako lahko preverjamo ali ga sploh želimo naložiti.
Sytem.AddIn.Pipeline.QualificationData
- Imeti “put-of-process” add-in je bolj varno in zanesljivo, pa tudi bolj počasi.
- Add-in lahko najprej teče “in-process” in ga šele kasneje, če nam dela probleme naložimo “out-of-process”
Povezave:
TechEd BCN 2007 – Bringing Extensibility to the Managed World: Using System.Addin to Find and Activate Add-ins in 3 Lines of Code
november 10, 2007 od AlesPredavatelja: Jack Gudenkauf, Architect, Microsoft; Jesse Kaplan, Program Manager, Microsoft
Zakaj razširljivost?
- Omogočimo uporabnikom, da programu sami dodajo dodatno funkcionalnost
- Spremenimo aplikacije v platformo
- Lastno aplikacijo elegantno razbijemo na komponente
Tipi razširljivosti
- Ponujanje storitve gostitelju (browser plugins, file type handlers, media player).
- Gostitelj lahko nudi storitve add-in-u (automation, office-like extensibility)
Problemi, ki se pojavljajo v prvi verziji
- Discovery (Odkrivanje)
- Activation (Aktiviranje)
- Isolation (Izolacija)
- Lifetime Management
- Sandboxing
- Unloading
Problemi v drugi verziji (problemi za katere nisi vedel do te verzije)
- Backward Compatibility
- Forward Compatibility
- Adding new isolation levels
Kaj je System.AddIn?
Prihaja z .NETFX 3.5 in nudi rešitve za probleme verzije 1 in 2. Ima arhitekturo, ki močno olajša izdelavo razširljive aplikacije.
- “Moji” podatkovni tipi niso nikoli naloženi v “tvojo” domeno.
- Gostitelja (Host) in add-in lahko verzioniramo ločeno (vsak imata svojo verzijo).
Gostovanje v 3 vrsticah kode
- Namesti: dovolj je, da datoteko lahko skopiramo v določen direktorij
AddInStore.Update(path)
- Najdi
IList<AddInToken> tokens = AddInStore.FindAddins(typeof(IMyAddin), path);
- Aktiviraj
IMyAddin addIn = token.Activate(AddIn.SecurityLevel.Internet);
Implementiranje add-inov
- Implementiraj interface
public class MyAddin: IMyAddin
- Poimenuj add-in
[AddIn("MyAddin")] public class MyAddin: IMyAddin
Arhitektura metulja
Da se izognemo problemom verzije 1 in 2 moramo tako na strani gostitelja kot add-ina imeti 2 stvari: pogled (view) in adapter. Med gostiteljem in add-inom pa je pogodba (contract).
Razno
- V gostitelju lahko prikažemo uporabniški vmesnik add-ina.
- Če je nek plug-in problematičen (počasen, rabi preveč pomnilnika), ga lahko odstranimo.
- Če se nek add-in usuje, to lahko zaznamo in ga naslednjič ne naložimo
- Add-inu lahko omejimo količino pomnilnika in CPU prioriteto, prav tako mu lahko določimo različne nivoje varnosti (internet, full trust)
- Enkrat v naslednjih mesecih bodo izdali orodje (koda bo na voljo), ki bo na podlagi pogodbe (contracta) izdelala vso kodo (ogrodje), potrebno za implementacijo (adapter in pogled).
- Zankrat stvar še ni podprta na Compact Framework-u, me je pa prosil, če mu pošljem mail in razložim v kakšnih primerih bi mi to prišlo prav.
- V eni datoteki je lahko več add-inov.
Povezave:
TechEd BCN 2007 – Test Driven Development in Practice – How does it really work?
november 10, 2007 od AlesPredavatelj: Mark Seemann, Senior Consultant, Microsoft Services
Predavanje je bilo bolj antireklama za TDD, ker je predavatelj kazal komplicirane primere/tehnike, ki v realnem življenju pridejo prav, vendar je 1 ura premalo, da bi jih lahko pameno razložil. Je pa omenil nekaj koristnih razredov in namespace-ov:
RecordExpectations
System.Configuration.Install
Povezave:
TechEd BCN 2007 – Understanding ASP.NET Internals
november 10, 2007 od AlesPredavatelj: Rob Howard, Telligent Inc.
ASP.NET je polna spletna request/response infrastruktura in razširljiva platforma (za dodatke skrbi aspnet_isapi.dll).
Za registriranje ASP.NET v IIS uporabimo ukaz:
aspnet_regiis.exe -i
HttpRuntime
HttpRuntime omogoča razširljivost in prilagajanje ASP.NET kot npr. izvajanje specifične avtentikacije (v ta namen bi lahko napisali HttpModule) ali, da prevzamemo nadzor nad slikovnimi datotekami – če bi radi na vsako sliko dali npr. svoj copyright (za take stvari se napiše HttpHandler). Je infrastruktura za procesiranje zahtev in odgovorov (request/response). Lahko teče v različnih gostiteljih (IIS 5, IIS 6, lahko napišemo svojo aplikacijo. Predavatelj je pokazal primer konzolne aplikacije, ki iz dinamične strani naredi statično (“file flattening”). To so naredili, ko so potrebovali boljše performanse. Primer take aplikacije je tudi spletni strežnik Cassini za katerega je na voljo tudi koda.
Interception Events
Podobni so ISAPI filtrom in omogočajo preusmerjanje odgovorov (repsonce-ov), prav tako pa lahko prekinejo zahtevo (request). Lahko ga implementiramo kot IHttpModule (priporočena metoda) ali pa v global.asax. Ker imamo lahko več modulov, se vrstni red izvajanja določi v web.config.
HttpHandler-je lahko implementiramo direktnov .ashx datoteki in ne rabimo posebnega razreda, ki bi implementiral IHttpHandler.
HttpContext
Vsebuje vse informacije o zahtevi (request) in za vsako zahtevo se naredi nova instanca. Lahko mu dodajamo svoje podatke (npr. custom session state).
Ideja: implemntacija poročil v obliki HttpHandler-ja.To tehniko uporabljajo v Community Server-ju za lažji izvoz poročil (.csv, .pdf).
Povezave:
TechEd BCN 2007 – The Next Release of ASP.NET
november 9, 2007 od AlesPredavatelj: Matt Gibs, ASP.NET Development Manager
Čeprav ASP.NET 3.5 sploh še ni uradno zunaj, že delajo na novih stvareh (ASP.NET Futures). Naslednji CTP naj bi prišel ven enkrat decembra.
Novosti, ki prihajajo:
“Astoria” Data Services
Tu gre za REST dostop do podatkov. Podatki so identificirani z URL-om. Vse skupaj deluje neodvisno od formata.
http://localhost/sample.svc/ProductCategory(5)/Product
ASP.NET AJAX
V Visual Studiu 2008 so posodobili validatorje, TreeView, menu in web parte, da delajo z AJAX-om. Prav tako so dodali ListView.
V CTP-ju, ki prihaja bodo dodali logično navigacijo, kar omogoča npr. da imamo za vsak korak v čarovniku svoj zapis v zgodovini v brskalniku.
V verziji, ki bo izšla enkrat naslednje leto bodo dodali še možnost združevanja skript (če imamo na strežniku skripte na večih mestih, npr. datotekah, se bodo lahko prenesle na klienta kot ena sama skripta), kar naj bi močno izboljšalo performanse.
ASP.NET Silverlight gradniki
<asp: silverlight>
avtomatizira namestitev na klientu in kreiranje Silverlight plug-in-ov. Prav tako so dodani AJAX razredi za delo s Silverlight-om.
ASP.NET Dynamic Data
Gre za “application scaffolding”, kar v bistvu pomeni, da nam VS omogoča izdelavo polno funkcionalne CRUD spletne aplikacije v nekaj sekundah, saj sam izdela vse na podlagi podatkovne zbirke, ki jo imamo. Preverjanje podatkov, obliko in format izpisa nadzorujemo z definiranjem metapodatkov.
ASP.NET MVC (Model-View-Controller) Framework
MVC omogoča ločitev podatkov od uporabniškega vmesnika, kar zelo olajša testiranje. Prav tako imamo lahko bolj “čiste” URL-je, ki so “search engine and REST friendly”. Nad samim HTML-jem, ki ga izdela, imamo popoln dostop. Je popolnoma razširljiv, podpira tako statične kot dinamične jezike (IronPython, IronRuby). Še vedno lahko uporabljamo klasične ASP.NET storitve kot so “caching, session state” in podobno.
MVC se mi zdi zelo uporaben, vendar ima implementacija, ki so jo kazali še kar nekaj pomanjkljivosti (npr. vsi gradniki še niso podprti).
Povezave:
TechEd BCN 2007 – Continous Integration with and without Visual Studio Team System
november 8, 2007 od AlesPredavatelj: Roy Osherove, SELA Group
S tega predavanja si velja zapomniti tri stvari:
- Avtomatiziraj vse kar je mogoče.
- Če začneš dovolj zgodaj, ni toliko dela, kot če začneš pozno.
- Več kot integriraš, manj trpiš.
Povezave:


