Mød Microsoft – for udviklere & arkitekter Smart klient som Windows- applikation Installation og autoopdatering.Henrik Lykke Nielsen Captator – de danske.NET.

Slides:



Advertisements
Lignende præsentationer
Den danske befolknings syn på handicappedes rettigheder
Advertisements

Atomer Et programmeret forløb. En måde at lære på.
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Hjemmesidekonstruktion Tjekspørgsmål 1.Hvad er et markup-sprog – hvad bruges det til? 2.Hvad er forskellen mellem et markup-sprog og et scriptsprog? 3.Hvad.
Maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen1 Introduktion til.NETs komponentmodel Henrik Lykke Nielsen Softwarearkitekt Microsoft.
Drupal[.org] Open Source CMS 6/
1 Test – bl.a. med fokus på sharepoint løsninger Automatisering af deploy og test ifm. VSTS •Kort om build jobs med Team Foundation Server •Support for.
Introduktion til sikkerhed i.NET Mark S. Rasmussen iPaper ApS Part 2.
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
Når en applikation går i fejl… … er det interessant, at vide noget om: Hvornår gik applikationen i fejl Hvilken applikation gik i fejl Hvad er fejlen.
Februar 2005Sprog-nyheder i C# og VB1 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark.
SMALL BUSINESS er BIG BUSINESS Tips og Tricks til Small Business Server Rico Raja marts 2006.
Microsoft Windows.NET Compact Framework Niels Hilmar Madsen Developer & Platform Strategy Group Microsoft Danmark.
Student Application Manager Lars Ole Nielsen, IT Arkitekt.
C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.
SMALL BUSINESS er BIG BUSINESS ISA Workshop Rico Raja, Technology Specialist Brian Thumann Madsen, Senior Executive Consultant.
B.V. Electronic Østerbro Skive GuideOnLine.
Distribueret programmering, specielt Web Services Rasmus D. Lehrmann DM
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Forside Titel Navn, sted eller begivenhed, dato. CHALLENGES FOR THE BANKING SECTOR - IN THE AFTERMATH OF THE CRISIS Louise C. Mogensen Deputy Chief Executive.
1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Problemer med at bruge tympanometri? Slagelse og Middelfart okt.-nov
View Procedures Trigger og Function Jesper Tørresø DAB1 E07 1. november 2007.
CodeIgniter Database Brugerinput Form Validation 20101JFH.
Udvikling med Microsoft 2007 Office System Michell Cronberg Microsoft MVP, MCT, MCAD ISV Innovation Day 2006 ServerServer.
Udvikling med Microsoft 2007 Office System Michell Cronberg Microsoft MVP, MCT, MCAD ISV Innovation Day 2006 KlientKlient.
Representations for Path Finding in Planar Environments.
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
Mød Microsoft – for udviklere & arkitekter Hvad er smarte klienter? - definitioner og principper.Henrik Lykke Nielsen Captator – de danske.NET eksperter.
Technology Briefing. Hvorfor snakker vi drift? Meget fokus fra Microsoft på effektiv drift Dynamic Systems Initiative MS Operations Framework Meget fokus.
WCF service Hostet på website x. Opret tomt web applikations projekt.
Introduktion til.NET- platformen og version 2.0 Michell Cronberg Microsoft MVP
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Introduktion Bjørk Boye Busch Otto Knudsen
Distribution af funktionalitet Webservice med WCF x.
Distribution af funktionalitet Webservice med WCF x.
Web service - elementer SOAP (Simple Object Access Protocol) WSDL (Web Service Description language) UDDI (Universal Description, Discovery and Integration)
Web service - elementer SOAP (Simple Object Access Protocol) WSDL (Web Service Description language) UDDI (Universal Description, Discovery and Integration)
ASP.NET Custom Web Controls Deployment. Agenda – ASP.NET Web User Controls Composite Control Rendered Custom Control Deploy en Web Applikation.
Pleje og Sundhed Gennemførte719 Inviterede895 Svarprocent80% FREDERICIA KOMMUNE MTU og Psykisk APV 2012 Rapportspecifikationer.
Programering af mobile enheder Windows Phone Storage.
WebservicesWebservices Henrik Westergaard Hansen
14. Web-baserede Apps i.NET. 2 NOEA2009C#-kursus Objectives “Real-world applications are typically multi-tier, distributed designs involving many components.
Session Når man hoster en WCF Service på ASP.NET website, kan man bruge ASP.NET’s Session.
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Matematik B 1.
Claus Brabrand, ITU, Denmark Mar 10, 2009EFFECTIVE JAVA Effective Java Presentation Workshop Claus Brabrand [ ] ( “FÅP”: First-year Project.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
1..NET Arkitektur. Mål “Microsoft.NET is based on the Common Language Runtime (CLR) and an extensive set of Framework Class Libraries (FCL). The CLR defines.
Fundamentale datastrukturer
1..NET Arkitektur. 2 Nordjyllands Erhvervakademi Mål “Microsoft.NET is based on the Common Language Runtime (CLR) and an extensive set of Framework.
1 Team Build med Team Foundation Server 2008 Konfiguration og udvidelse af build jobs Kort præsentation Hvorfor bruge Team Build Afvikling af et build.
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
ASP.NET – web site publish. ASP.NET – site-version.
Intro Evaluering De sidste to gange?. HTTP, cookies og sessions Forelæsning nr 10 Tilbage til trafikken mellem server – client Sende HTTP-request og respons.
Web Services. OO (C++/ C#/Java) COM DCOM Web Services.
WebApi service x.
Smart Data Tool (SDT) In Sales
Præsentationens transcript:

Mød Microsoft – for udviklere & arkitekter Smart klient som Windows- applikation Installation og autoopdatering.Henrik Lykke Nielsen Captator – de danske.NET eksperter

2  Session 1: Hvad er smarte klienter?   Definitioner og principper  Session 2: Smart klient som Windows-applikation  Installation og automatisk opdatering  Session 3: Smart klient som Office-applikation   Overblik over mulighederne  Session 4: Smart klient som mobil-applikation   Best practices, tips og tricks Agenda

3 Sessions-agenda  Problemstillingen  Lokalisering af assemblies i.NET  No-Touch deployering  Noget om reflektion  On-the-fly download .NET Application Updater Component  ClickOnce

4 Problemstillingen før.NET DLL Hell App1.exeMyCtrl.dll App2.exeMyCtrl.dll

5  Konflikter kan være svære  at forudsige  at forhindre  Det kan være farligt at installere Joe The Hackers applikationer  Afhængigt af driftsmiljøet kan det være dyrt at holde klienter up-to-date  Det kan være svært at sikre agilitet Problemstillingen

6 Er den i GACen? Findes codebase? Ja Brug codebase Probe App Base [appbase]/[assembly].dll [appbase]/[assembly]/[assembly]..dll Nej Anvend version policy Probe private bin-sti (relativt til App Base) Ikke fundet Fundet Binding fejler Load assembly Ikke fundet Ja “Strong ref” “Weak ref” Fundet Assembly lokalisering i.NET Ikke fundet

7 Assembly lokalisering i.NET  Benyt allerede loadet assembly  Benyt assembly i GACen  Benyt codebase  Probing  Binding policy  Default binding policy  Application og machine policy  Publisher policy  Se evt. MSDN for yderligere info: ”How the Runtime Locates Assemblies”

8 Applikations isolering i.NET Enden på DLL Hell App1.exeMyCtrl.dll App2.exeMyCtrl.dll

9 Applikations isolering i.NET  Privat deployering er udgangspunktet  Multiple versioner kan sameksistere  Side-by-Side installation  Sharing, if any, is controlled and explicit  Kan shares ved installation til GACen (Global Assembly Cache)  Ingen DLL registration  XCOPY installation

10 Deployering  No-touch deployment  Brugeren klikker på et link på en webside  On-the-fly download  Brugeren kører et bootstrap program, der downloader og eksekverer komponenter  MSI-installation  Applikationen installeres og køres lokalt  Kan evt. downloade updates

11 No-Touch deployering  Applikationen downloades via HTTP til Assembly Download Cache  IEExec processen starter applikationen  Underlagt sikkerhedsbegrænsninger  Fordele  Simpelt at deployere og simpelt at opdatere  Begrænsninger  Startes fra en browser  Ikke ordentlig offline support  Sikkerhedsbegrænsninger  Ingen customiseringer

12  Første gang … No-Touch deployering - 1.

13  Første gang … GET /TeleSales.exe HTTP/1.1 No-Touch deployering - 1.

14  Første gang … HTTP/ OK Last-Modified: Mon, 10 Nov :23:12 GMT Content-Length: xxxx GET /TeleSales.exe HTTP/1.1 No-Touch deployering - 1. Response indeholder TeleSales.exe

15  Første gang … HTTP/ OK Last-Modified: Mon, 10 Nov :23:12 GMT Content-Length: xxxx GET /TeleSales.exe HTTP/1.1.NET Download Cache Browser Internet Cache Response indeholder TeleSales.exe Gem i No-Touch deployering - 1.

16  Efterfølgende gange … No-Touch deployering - 1.

17 HTTP/ Not Modified Content-Length: 0 GET /TeleSales.exe HTTP/1.1 If-Modified-Since: Mon, 10 Nov :23:12 GMT  Efterfølgende gange … No-Touch deployering - 2. Response er tomt Læs fra.NET Download Cache

18.NET sikkerhed .NET assemblies er underlagt.NETs sikkerhedsmodel  Permissions checkes normalt ved brug  Check kan dog gennemtvinges ved load

19.NET sikkerhed .NET Code Access Security  Tilgang er baseret på evidence  Hvem lavede programmet (code signing)  Hvor kom programmet fra  Zone, site, url, …  Sikkerhedsopsætninger kan foretages på deployeringstidspunktet  Manuelt  Administrativ udrulning  V.h.a. kode

20 Code Access Security Policy

21 Code Access Security Policy  Opsætning af sikkerhed på klienten  Lagret som XML i: C:\WINDOWS\Microsoft.NET\Framework\ v \CONFIG .NET Framework 1.1 Configuration MMC snap-in  CASPOL command line tool  Via MSI:  Lavet vha..NET Framework Configuration snap-in  Vha. kode: System.Security.Policy namespacet

22 Installation vha. MSI  Deployeres til en klient fra filshare eller web  Fungerer som en almindelig Windows applikation  Fordele  Kan installeres og køre offline  God performance/responsivitet  Tæt integration til Windows shellen  Start-menuen, shortcuts, Add/Remove programs  Supporterer (custom) teknologier til automatisk opdatering  Applikationen startes med lokale rettigheder

23 Installation vha. MSI  Ulemper  Der kræves en egentlig installationsproces  Installation kræver administrator rettigheder  Er den bedste løsning til  Applikationer der kræver maksimal responsitivitet  Applikationer der tillader offline anvendelse  Applikationer der tilgår og udnytter lokale ressourcer (lokale rettigheder)  Applikationer der understøtter side-by-side versioner

24 Distribution af frameworket  Redistribuerbar version af.NET frameworket  Stand-alone executable file, dotnetfx.exe  Kræver administrator rettigheder  Distribuer via SMS, Active Directory eller med app  Mere information  “Redistributing the.NET Framework 1.1” us/dnnetdep/html/redistdeploy1_1.asp us/dnnetdep/html/redistdeploy1_1.asp us/dnnetdep/html/redistdeploy1_1.asp .NET Framework Setup.exe Bootstrapper Sample  253CFD-1EFC-4FC5-BA7E-6A6F CFD-1EFC-4FC5-BA7E-6A6F CFD-1EFC-4FC5-BA7E-6A6F  Shareware plug-in to Visual Studio.NET  Automates adding dotnetfx.exe to you setup project  aspx?ID=2F8F0A23-F E0A-D187D16F41F1 aspx?ID=2F8F0A23-F E0A-D187D16F41F1 aspx?ID=2F8F0A23-F E0A-D187D16F41F1

25 On-the-fly download  Stub program  Downloader og eksekverer det “rigtige” program on- the-fly vha. reflektion (LoadFrom etc)  Ligger på den lokale PC  Kan eksekvere applikationer fra filshare eller internettet  Benytter ikke cache  Fordele  Simpelt at opdatere  Tæt integration til Windows shellen  Ulemper  Ingen offline support  Sikkerhedsbegrænsninger  Kræver initiel installation af stub programmet  Dårlig performance / responsivitet

26 Reflektive udvalg  Assembly  System.Type  Metadata  MethodInfo  Generisk  Generisk CallMethod   On-the-fly download

27 Assembly  Eksekverbar kode  Indeholdt i Portable Executable (PE) filer (DLL, EXE)  I form af Intermediate Language (IL) kode  Skal have ét entry point (DllMain, WinMain eller Main)  Udgør en sikkerhedsafgrænsning  Permissions “requestes” og “grantes” for en assembly  Udgør en typeafgrænsning  En assembly afgrænser scope for typerne defineret deri  Typer (og andre ressourcer) kan være private eller public  Udgør en versionsafgrænsning  Typer og ressourcer i en assembly versioneres som en enhed

28  Assemblies kan loades ind i det aktuelle AppDomain  Eksempel  Statisk refererede assemblies loades altid on-demand af resolveren Assembly loading //AssemblyFile: Filpath (uri) public static System.Reflection.Assembly LoadFrom(string assemblyFile) public static Assembly Load(System.Reflection.AssemblyName assemblyRef) //AssemblyString: ”long form”-navnet for assemblyen public static Assembly Load(string assemblyString) //AssemblyFile: Filpath (uri) public static System.Reflection.Assembly LoadFrom(string assemblyFile) public static Assembly Load(System.Reflection.AssemblyName assemblyRef) //AssemblyString: ”long form”-navnet for assemblyen public static Assembly Load(string assemblyString) Assembly asm = Assembly.Load("myAssembly,Version= , Culture=en-US,PublicKeyToken=12ac34bd56fe78qr"); C#

29 System.Type  Der eksisterer en version af System.Type for alle typer  Giver adgang til metadata om enhver.NET datatype  Beskriver alle facetter ved en type  Category: Simple, Enum, Struct or Class  Methods and Constructors, Parameters and Return  Fields and Properties, Arguments and Attributes  Events, Delegates and Namespaces  GetType er defineret på System.Object  System.Type objektet for en given type kan fås ved: typeof(class); object.GetType(); Type.GetType("classname"); typeof(class); object.GetType(); Type.GetType("classname"); GetType(class) object.GetType() Type.GetType("classname") GetType(class) object.GetType() Type.GetType("classname") VB C#

30 System.Type .NETs objekt model EtEllerAndetObject Instans MethodTablePointer SyncBlockID Instans fields… Managed heap EnEllerAndenType Type beskriver Type information Metode tabel… CLR strukturer

31 System.Type Udvalgte members  FullName  Assembly  IsInstanceOfType, IsSubclassOf, IsAssignableFrom  BaseType, GetInterface, GetInterfaces, FindInterfaces  GetCustomAttributes  IsItDitEllerDat?  IsAbstract, IsAnsiClass, IsArray, IsAutoClass, IsAutoLayout, IsByRef, IsClass, IsCOMObject, IsContextful, IsEnum, IsExplicitLayout, IsImport, IsInterface, IsLayoutSequential, IsMarshalByRef, IsNestedAssembly, IsNestedFamANDAssem, IsNestedFamily, IsNestedFamORAssem, IsNestedPrivate, IsNestedPublic, IsNotPublic, IsPointer, IsPrimitive, IsPublic, IsSealed, IsSerializable, IsSpecialName, IsUnicodeClass, IsValueType  GetMember, GetMembers, FindMembers  GetDitEllerDat  GetConstructor, GetConstructors, GetDefaultMembers, GetEvent, GetEvents, GetField, GetFields, GetInterface, GetInterfaces, GetMember, GetMembers, GetMethod, GetMethods, GetProperties, GetProperty

32 [serializable] public class Person : { public event OnSaveChange onsv; public Date DOB; public string FirstName; public string LastName; public string Name { get { return FirstName + " " + LastName; } } public void Person(string First, string Last) { FirstName=First; LastName=Last; } public bool Save() { System.Type t = this.GetType(); foreach (FieldInfo f in t.GetFields()) { /*...*/ } } [serializable] public class Person : { public event OnSaveChange onsv; public Date DOB; public string FirstName; public string LastName; public string Name { get { return FirstName + " " + LastName; } } public void Person(string First, string Last) { FirstName=First; LastName=Last; } public bool Save() { System.Type t = this.GetType(); foreach (FieldInfo f in t.GetFields()) { /*...*/ } } System.Type Attributes Fields Properties Constructors Methods Events Parameters Metadata: typer på runtime

33 Reflektive dimser  De reflektive typer kan bruges generelt eller specifikt System.Object EventInfoPropertyInfoFieldInfoMethodBase System.Type ParameterInfoMemberInfoModuleAssembly MethodInfoConstructorInfo

34 MethodInfo  Arver MethodBase som arver MemberInfo  Udvalgte members  IsItDitEllerDat?  IsAbstract, IsAssembly, IsConstructor, IsFamily, IsFamilyAndAssembly, IsFinal, IsHideBySig, IsPrivate, IsPublic, IsSpecialName, IsStatic, IsVirtual  DeclaringType, GetCustomAttributes, Name, IsDefined, MemberType, GetParameters, GetBaseDefinition, ReturnType  GetCurrentMethod (static)  Invoke

35 *.CreateInstance  System.Reflection.Assembly.CreateInstance  Instansmetode  Tager imod et typenavn  System.Activator.CreateInstance  Statisk/shared metode  Tager imod et typenavn & assemblynavn  Tager imod et typeobjekt

36 On-the-fly download ReflectionUtil.CallMethod(" "LoadFromKomponent.Applic", "StartApp", Nothing) Public Shared Function CallMethod(ByVal fileName As String, ByVal className As String, ByVal methodName As String, ByVal methodArgs As Object()) As Object If methodArgs Is Nothing Then methodArgs = New Object() {} End If Dim ass As System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom(fileName) Dim theType As System.Type = ass.GetType(className) Dim theObject As Object = System.Activator.CreateInstance(theType) Dim method As System.Reflection.MethodInfo = theType.GetMethod(methodName) Dim result As Object = method.Invoke(theObject, methodArgs) Return result End Function Public Shared Function CallMethod(ByVal fileName As String, ByVal className As String, ByVal methodName As String, ByVal methodArgs As Object()) As Object If methodArgs Is Nothing Then methodArgs = New Object() {} End If Dim ass As System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom(fileName) Dim theType As System.Type = ass.GetType(className) Dim theObject As Object = System.Activator.CreateInstance(theType) Dim method As System.Reflection.MethodInfo = theType.GetMethod(methodName) Dim result As Object = method.Invoke(theObject, methodArgs) Return result End Function VB

37 On-the-fly download  Generisk kald af metode public static object CallMethod(string fileName, string className, string methodName, object[] methodArgs) { if (methodArgs == null) { methodArgs = new object[0]; } System.Reflection.Assembly ass; ass = System.Reflection.Assembly.LoadFrom(fileName); System.Type theType = ass.GetType(className); object theObject = System.Activator.CreateInstance(theType); System.Reflection.MethodInfo method = theType.GetMethod(methodName); object result = method.Invoke(theObject, methodArgs); return result; } public static object CallMethod(string fileName, string className, string methodName, object[] methodArgs) { if (methodArgs == null) { methodArgs = new object[0]; } System.Reflection.Assembly ass; ass = System.Reflection.Assembly.LoadFrom(fileName); System.Type theType = ass.GetType(className); object theObject = System.Activator.CreateInstance(theType); System.Reflection.MethodInfo method = theType.GetMethod(methodName); object result = method.Invoke(theObject, methodArgs); return result; } C# "LoadFromKomponent.Applic", "StartApp", Nothing);

38 Opdatering  Altid up-to-date  No touch deployment  On-the-fly download  Offline ikke understøttet  Application updatere  To projekter fra Microsoft der hjælper med automatisk opdatering af applikaioner .NET Application Updater Component  Rimeligt let at implementere (i simpelt scenarie)  Updater Application Block  Bedst til enterprise applikationer

39.NET Application Updater Component  Checker for opdateringer  Via folder/file check  Manifest-fil  Custom check (f.eks. XML web service)  Downloader opdateringer i baggrunden via HTTP-DAV (fil og dir enumerering)  Genstarter applikationen

41

42

43

44

45

46

47

48

49.NET Application Updater Component  Kan downloades fra:  Kode medfølger  Eksempler, tutorial, …  Mangler ordentlig dokumentation  Let at implementere i det simple scenarie

50 Application Updater Block  Application Updater Block from Patterns and Practices  us/dnbda/html/updater.asp us/dnbda/html/updater.asp us/dnbda/html/updater.asp  Bruger som default BITS (Background Intelligent Transfer Service)  Kan customiseres  Kode medfølger  Dokumentation, e ksempler, tutorial, …

51 Captators Eifos.Updating  Launcher startes i stedet for selve app’en  Starter derpå (nyeste) version af applikationen  Applikationen downloader (evt.) ny version  Authentication mod XML web service (WSE2)  Henter AppInfo og info om download-server(e) fra central server (via WS)  Kan eksempelvis afhænge af authenticated bruger  Sammenligner med lokal AppInfo (i fil)  Henter og installerer nye komponenter (WSE2)  IDirectoryStrategy  Kalder eventuelle upgrade funktionaliteter  Applikationen starter Launcher (igen), som derefter starter den nyeste version af applikationen, som....

52 Deployering Run From Web Code Download MSI/Client Reach  Low System Impact  Dynamic Modules  Auto-Deployment  Auto-Update   Rich / Interactive Experience  Best Performance  Offline  Windows Shell Integration  Best Local Resource Access  Unrestricted Installations  Run From Web Code Download MSI/ClientClickOnceReach  Low System Impact  Dynamic Modules  Auto-Deployment  Auto-Update    Rich / Interactive Experience  Best Performance  Offline  Windows Shell Integration  Best Local Resource Access  Unrestricted Installations 

53 ClickOnce Web Page Link to Manifest Deployment Manifest 1.0  Application Manifest 1.1 Application Manifest

54 ClickOnce  Launched applikation  Applikationen starter men installerer ikke  Ingen “Start menu” og ingen “Add or Remove Programs”  Opdaterer altid ved opstart (per definition)  Installeret applikation  Installerer fra webben, et share, en CD/DVD, …  “Start menu” og “Add or Remove Programs” understøttelse  Forskellige opdaterings muligheder  API for fleksible og customiserede løsninger

55 Best practices for deployering  Hav deployering med i det initielle design  Vælg den tilgang der bedst passer på din app  Performance  Security  Functionality  Hav fokus på at nedbringe vedligeholdelses- omkostningerne  Pas på med at dele instanser af binære komponenter  Brug applikations-isolering for at undgå konflikter  SKal.NET frameworket sendes med ud?

56 Best Practices for opdatering  Hav opdatering med i det initielle design  Overvej opdateringsmulighederne  No-touch og on-the-fly  Checker for opdateringer ved hver eneste opstart  Checker kun for opdateringer ved opstart  MSI-installation  Understøtter side-by-side versioner  Kan automatisk opdatere den kørende applikation  Brug f.eks..NET Application Updater Component eller Application Updater block

57 Resources  Deploying and Distributing Overview msdn.microsoft.com/vbasic/using/deploying msdn.microsoft.com/vbasic/using/deploying  NET Framework 1.1 Deployment Guide msdn.microsoft.com/library/default.asp?url=/library/en- us/dnnetdep/html/dotnetframedepguid1_1.asp?_r=1 msdn.microsoft.com/library/default.asp?url=/library/en- us/dnnetdep/html/dotnetframedepguid1_1.asp?_r=1 msdn.microsoft.com/library/default.asp?url=/library/en- us/dnnetdep/html/dotnetframedepguid1_1.asp?_r=1  Patterns and Practices efault.mspx efault.mspx efault.mspx  Nyheder, artikler, information og Whidbey julekalender

58 ©2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.