Smart Clients in.NET: Leicht installieren, einfach verteilen, sicher betreiben Christof Sprenger Technologieberater.NET Strategy & Developer Group Microsoft.

Slides:



Advertisements
Ähnliche Präsentationen
Was gibt´s neues im Bereich Sicherheit
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Web-Entwicklung mit ASP.NET 2.0 und Visual Studio 2005 Uwe Baumann Marketing Manager Developer Tools Microsoft Deutschland GmbH Oliver Scheer Developer.
Deployment und Versioning von .NET Applikationen
Security.NET Was darf mein Code?
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Systemverwaltung wie es Ihnen gefällt.
Telefonnummer.
Pflege der Internetdienste
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
NATURAL Web-Integration 1 / 27/28-Feb-98 TST NATURAL Web-Integration Arbeitskreis NATURAL Süd Theo Straeten SAG Systemhaus GmbH Technologieberater Stuttgart.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Dynamische Datentypen
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Introducing the .NET Framework
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Open Services Gateway Initiative
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
Eine Einführung in die CD-ROM
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 11 Folie 2 Microsoft Internet Information Services (IIS)
.Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.
SQL Server 2005 CLR-Integration
Westfälische Wilhelms-Universität Münster 15-JAN-2004 Heinz-Hermann Adam Benutzung von tragbaren Computern Unter Windows in.
Präsentation von Sonja Pathe
Syntaxanalyse Bottom-Up und LR(0)
IFB Speyer Daniel Jonietz dj 2 XAMPP - Was ist das? Paket mit: – X – Apache (Webserver) – MySQL oder SQLite (Datenbank) – Perl (Skriptsprache) –
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Bonn-to-code.net Thomas van Veen Website:
Oliver Spritzendorfer Thomas Fekete
Symmetrische Blockchiffren DES – der Data Encryption Standard
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Das IT - Informationssystem
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
SharePoint 2013 Web Services
Kaseya Virtual System Administrator Produkt Update 7.0 Rocco van der Zwet Copyright ©2014 Kaseya 1.
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
Musterlösung IT-Struktur an Schulen © Zentrale Planungsgruppe Netze am Kultusministerium Baden-Württemberg Software-Verteilung mit ZENworks 4 Regionale.
J-Team: Gymnasium Ulricianum Aurich und MTV Aurich Ein Projekt im Rahmen von UlricianumBewegt.de Euro haben wir schon…  8000 mal habt ihr bereits.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
->Prinzip ->Systeme ->Peer – to – Peer
Das IT - Informationssystem
Microsoft.NET InfoPoint 8. Juni 2005 Stefan Bühler.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Microsoft.NET - Plattform Kurzer Überblick Vergleich mit Java Von Thomas Zahn Januar 2001.
1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.
WS2016: Container von A bis Z
 Präsentation transkript:

Smart Clients in.NET: Leicht installieren, einfach verteilen, sicher betreiben Christof Sprenger Technologieberater.NET Strategy & Developer Group Microsoft GmbH

2 Agenda Motivation Definition des Begriffs Smart Client Grundlagen Versioning in.NET Security in.NET Einzelne Aspekte No-Touch Deployment Security und No-Touch Deployment Automatisches Update Zusammenfassung

3 Motivation

4 Thin Clients Applikation die mit einem Browser zu bedienen ist Denkbar einfaches Deployment Benutzbarkeit nicht gut wurde/wird aber immer besser Menu Bars Toolbars Keyboard Shortcuts Standard-UI Was ist mit State? Benutzereinstellungen Session Speichern von Dokumenten

5 Typische Thin Client Layer LayerPurposeUser State Thin Client User Interaction Current UI Web ServerUI Generation Session State Web Service Services/Logi c DatabaseData

6 Rich Clients Auch Desktop Applikationen genannt Jedes UI Feature verfügbar State Handling denkbar einfach Die Resourcen/Dienste des Betriebssystems und der Hardware sind vollständig nutzbar Prozessor, Festplatte, Graphik, Eingabegeräte, … Die Folge daraus: Bessere Responsiveness, Bessere Performance, Bessere Integrierbarkeit, …

7 Smart Clients Es gibt nicht nur die beiden Wege Rich (Fat) Clients Thin Clients Smart Client nutzen die Vorteile beider Architekturen Reichhaltiges UI Einfaches State Management Deployment über das Web Daten und Services über das Web

8 Smart Client Layer LayerPurposeUser State Smart Client User Interaction UI und Session Web Service Services/Logi c DatabaseData

9 Weitere mögliche Features Offline/Online Fähigkeit Logik beliebig auf Client oder Server ausführbar Auto Update

10.NET Framework & Smart Clients Was bietet.NET um das zu ermöglichen? Windows Forms für reichhaltiges UI Einfachen Zugriff auf Server Logik mit Web Services No Touch Deployment Zero Impact Install Sauberes Versioning von Komponenten Ende der DLL-Hell Security Modell Rechtezuweisung an Code (nicht nur Benutzer) Baukasten für Sandboxes ! ! ! !

11 Grundlagen: Versioning in.NET

12 Das Problem Eine Applikation wird installiert… … und läuft nicht, weil benötigte DLLs nicht gefunden werden oder nicht kompatibel sind … und läuft problemlos, aber andere Applikationen auf der Maschine haben plötzliche Probleme mit fehlenden oder inkompatiblen Versionen von benötigten DLLs

13 Was erreicht werden soll Verhinderung von "Nebenwirkungen" Neue Applikationen sollen bereits installierte Applikationen nicht negativ beeinflussen Zero Impact Install Unkompliziertes Deployment Installation durch Kopieren Verschieben von Applikationen Pflege der Software Bugfixes auf einfache Weise ausliefern Krisenmanagement: Was tun, wenn der Bugfix neue Bugs enthält? Hotfixes für einzelne Applikationen

14 Sorgenkind Registry Aufgabe der Registry Auffinden von gemeinsam genutzen Komponenten (Identity, Binding) Informationen über Komponenten speichern (Metadaten) Probleme Es gibt nur eine Registry nicht eine Pro Applikation Registry-Pflege bei Installation, Deinstallation und Wartung ist mühsam und fehleranfällig

15 Versionierungsärger Bisher: Der Highlander-Effekt Eine gemeinsam genutzte Komponente konnte nur einmal vorhanden sein Die Komponente musste deshalb abwärtskompatibel sein mit allen Vorgängerversionen Direkte Konsequenzen Aufwändiges Testen auf Kompabilität Was tun, wenn eine Applikation mit einer neuen Komponentenversion Probleme hatte? Die Folge war/ist die sogenannte DLL- Hell

16 Ein neues Komponentenmodell Komponenten unter.NET enthalten alle wichtigen Daten über sich selbst in Metadaten-Tabellen nehmen diese Informationen mit, wohin sie auch gehen Strong Names geben jeder Komponente eine eindeutige, sichere Identität Die Registry wird unnötig für Komponenten-Metadaten und Identität

17 Assembly Binding Laden von Komponenten Benötigte Komponenten werden vom CLR Loader über einen festgelegten Algorithmus gesucht (Assembly Binding Algorithm) Das Suchverhalten ist bei Bedarf pro Applikation konfigurierbar Die Registry wird unnötig für das Auffinden von Komponenten (Binding)

18 Assembly Manifest Das Manifest enthält Assembly name Version number Culture Strong name Information Public Key des Herstellers Liste aller FIles die das Assembly bilden Liste der Typen die Referenziert werden Liste von referenzierte Assemblies assembly's name, version, culture und public key

19 Strong Name Ein Strong Name einer Assembly besteht aus Dem einfachen textuellen Namen Einer Versionnummer (Major, Minor, Revision, Build) Culture Information (optional) Plus ein Public Key und eine Digitale Signature der Assembly Strong-Named Assemblies ermöglichen Uniqueness Versions-Abstammungslinien Integrity Check Damit die Kette nicht bricht können Strong- Named Assemblies nur wiederum andere Strong-Named Assemblies referenziern.

20 Der Ladevorgang Bestimmen der korrekten Version Konfigurationsdateien: application configuration, publisher policy, machine configuration. Überprüfung des Global Assembly Cache Lokalisieren der Datei Suche im Codebase Verzeichniss Sonst das sogenannte Probing Suche im Application Base Verzeichniss und in den Unterverzeichnissen mit dem Namen der Assembly und der Culture Suche im binpath Verzeichniss und in den Unterverzeichnissen mit dem Namen der Assembly und der Culture

21 Diagramm zum Ladevorgang

22 Grundlagen: Security in.NET

23 Das Problem

24 Mobiler Code heute Code aus diversen Quellen – speziell dem Internet/Intranet Code darf entweder nichts oder alles (was der Benutzer darf) Benutzer muss Entscheidung über vertrauenswürdigen Code "on the fly" treffen Kann er dies? Zertifikate helfen wenig

25 Code Access Security Granulares Sicherheitsmodell für "partially trusted" Code Orthogonal zu nutzerbasierter OS- Sicherheit Beruht auf Indizien ("evidence") über Assemblies auch evidence-based security genannt Verwaltung durch Sicherheitsregeln ("policies") CLR berücksichtigt bei Ausführung die dem Code zugestandenen Rechte ("permissions") Frei erweiterbar

26 Evidence Woher/Von Wem kommt dieser Code? Charakterisierung pro Assembly Ist unabhängig vom Ausführenden Stammt vom Host (Anwendung, IE, ASP.NET,...) oder vom Assembly selbst Die Base Class Library (BCL) definiert: Publisher (Authenticode-Zertifikate) Site (Website, von der Assembly geladen wird) Url Zone (IE-Sicherheitszone) StrongName ApplicationDirectory Hash

27 Permissions Was könnte dieser Code tun? Feingranulare Rechte, die an.NET- Code verliehen werden können Schützen Ressourcen & Operationen Checks zur Lauf- oder Compile-Zeit Verwendung: Vergeben durch Sicherheits-Policy Von Assembly angefordert Deklarativ & imperativ Sind unabhängig voneinander (orthogonal)

28 Permissions in der BCL FileIO FileDialog IsolatedStorage Environment Registry UI Printing Reflection Security Socket Web DNS OleDb SQLClient MessageQueue EventLog DirectoryServices … erweiterbar Execution, Assertion, Skip Verification, Unmanaged code, Control evidence, Control policy, Control principal, Control threads

29 Sicherheitsregeln Begriffe: Bedingung (membership condition): Boolesche Funktion, die Evidenz auswertet Permissionset: Gruppierung von Permissions (FullTrust, LocalIntranet,...) Codegroup: besteht aus einer membership condition und einem permission sets Bedingung ? P Codegruppe

30 Policy Level Codegruppen werden hierarchisch in sogenannten Policy Levels angeordnet Meist werden alle Child-CodeGroups untersucht nachdem eine Memership Condition zutrifft (Union Code Group)

31 Sicherheitsrichtlinien Richtlinien (policy levels): Permissionsets + Codegruppenhierarchie + vertrauenswürdige Assemblies Effektive Richtlinie: Schnittmenge der einzelnen Ebenen Enterprise policy Machine1 policy Machine2 policy User A User B User C User D

32 Demo.NET Konfiguration Configuration

33 Rechteanforderung Permission demand: Überprüfung, daß alle Aufrufer ausreichende Rechte haben stack walk: schützt gegen sog. "luring attack" Kann vorzeitig abgebrochen werden Assert(), Deny(), PermitOnly() Assembly A3 Assembly A2 Assembly A1 Assembly A4 Call Stack R2 R1 R3 R4 Dem Assembly gewährte Rechte R Methode in A4 fordert Permission P an P Vergleich von P mit den Rechten R aller aufrufenden Assemblies P P P

34 Imperative Sicherheitsprüfung Alle Permission-Objekte haben Demand() -Methode Ausführung zur Laufzeit wie normale Methode Vorteil: flexibel & variabel Public Sub New(fileName As String) ' Must fully qualify the path for the security check ' Must fully qualify the path for the security check Dim fullPath As String = _ Dim fullPath As String = _Directory.GetFullPathInternal(fileName) New FileIOPermission(FileIOPermissionAccess.Read, _ New FileIOPermission(FileIOPermissionAccess.Read, _fullPath).Demand() … '[rest of function] … '[rest of function] End Sub

35 Deklarative Sicherheitsprüfung Aktionen durch custom attributes beschrieben In den Metadaten abgespeichert Können mittels PERMVIEW.EXE oder Metadaten- APIs gelesen werden Check zur Lauf- oder Linkzeit Demand() zur Laufzeit LinkDemand(), InheritanceDemand() beim Linken Linkzeit-Aktions werden automatisch vom JIT-Compiler durchgeführt, wenn Aufrufer kompiliert oder Klasse geladen wird Für Laufzeit-Deklarationen erzeugt der JIT- Compiler Code, der die Sicherheitsprüfung durchführt

36 Deklarative Sicherheitsprüfung Nachteil: Deklarationen können keine Laufzeitvariablen enthalten _ _ Public Sub Foo() ' Subroutine implementation ' Subroutine implementation End Sub

37 Und jetzt alles zusammen … PolicyEvaluator Assembly A3 PermissionRequests SecurityPolicy Evidence G3 G3 Host Assembly A2 G2 G1 Assembly A1 Assembly A3

38 Demo Simple Applikation Über C:\.... Über \\localhost\c$\... Über \\ \c$\...

39 Starten von Applikationen über HTTP

40 No-Touch Deployment Der Assembly Loader ist in der Lage Assemblies über HTTP zu laden Assembly wird in den Download Cache kopiert und von dort ausgeführt Starten von Desktop Applikationen über einen Link im Browser

41 No-Touch Deployment Versioning greift Security greift Abhängige Assemblies werden nachgeladen Controls im Browser Ähnlich, aber nicht ganz das gleiche Sieht aus wie ActiveX Controls Jedoch anderes Security Modell Kommunikation mit HTML möglich

42 Demo TaskManager

43 Erster Download GET /foo.exe HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461;.NET CLR ) Host: localhost Connection: Keep-Alive HTTP/ OK Server: Microsoft-IIS/5.1 Date: Fri, 01 Feb :11:29 GMT Content-Type: application/octet-stream Accept-Ranges: bytes Last-Modified: Fri, 01 Feb :41:16 GMT ETag: "50aae089c1aac11:916" Content-Length: …

44 Folgende Downloads GET /foo.exe HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate If-Modified-Since: Fri, 01 Feb :41:16 GMT If-None-Match: "50aae089c1aac11:916" User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461;.NET CLR ) Host: localhost Connection: Keep-Alive HTTP/ Not Modified Server: Microsoft-IIS/5.1 Date: Fri, 01 Feb :42:03 GMT ETag: "a0fa92bc8aac11:916" Content-Length: 0

45 Wann wird was runtergeladen? Beim ersten Download kann die Runtime die Version nicht kennen Beim zweiten Download wird auch dann geladen wenn Datei neuer aber Version kleiner Abhängige Assemblies Zuerst wird überprüft ob die richtige Version im Cache GAC wird immer zuerst überprüft

46 Security und No-Touch Deployment

47 Security und No-Touch Deployment Applikationen, die über gestartet wurden sind im Normalfall in der Code Group Internet In Version 1.0 war dort das PermissionSet Internet eingetragen Im ServicePack 1 ist dort das PermissionSet Nothing eingetragen

48 Top-Level Code Groups Im Auslieferungszustand haben die Top- Level CodeGroups Membership-Conditions die sich an der Zone orientieren

49 Security Zones MyComputer_Zone PermissionSet: FullTrust LocalIntranet_Zone Permissions FileDialog IsolatedStorage Printing … Internet PermissionSet: Nothing

50 FileIO- und FileDialogPermission Die Permission FileIO ermöglicht Assemblies den Zugriff aufs FileSystem Dies ist meist zu viel FileIO findet sich nur im PermissionSet Everything Die Klasse FileDialog hat Methode OpenFile FileDialogPermission ist ausreichend Property FileName benötigt FileIOPermission

51 Rechte Erweitern Sicherheitsrichtlinien können nur den Administrator verändert werden Techniken Batchdatei mit caspol MSI Datei aus.NET Framework Configuration System Management Installer Projekt (RunInstallerAttribute) und die Klassen in System.Security.Policy

52 Create a new code group PermissionSet permSet1 = new NamedPermissionSet("Internet"); StrongNamePublicKeyBlob key = new StrongNamePublicKeyBlob(publicKey); IMembershipCondition membership1 = new StrongNameMembershipCondition(key, null, null); // Create the code group PolicyStatement policy1 = new PolicyStatement(permSet1); CodeGroup codeGroup1 = new UnionCodeGroup(membership1, policy1); codeGroup1.Description = More permissions for me; codeGroup1.Name = Foo"; // Add the code group machinePolicyLevel.RootCodeGroup.AddChild(codeGroup1);

53 Wrap Up No-Touch Deployment Einfache Installation Versioning greift Security greift Im Internet sehr restriktiv Gut geeignet für das Intranet

54 Automatisches Update

55 Versionen kontrollieren Wie kann man erreichen, dass immer neue Versionen auf den Clients verfügbar sind Was No-Touch Deployment nicht kann Offline arbeiten technisch schon, ist aber nicht praktikabel Zum Download einer neuen Version einer dependent Assembly ist ein neue Version der referenzierenden Assembly notwendig atomarer Download Download im Hintergrund

56.NET Updater Komponent.NET Komponente die automatisches Update erlaubt Artikel und Code auf Die Architektur der.NET Updater Komponente legt fest Where, When und How die Komponenten aktualisiert werden

57.NET Updater Where & When Where Es wird HTTP zum Download verwendet Internet, Intranet, Extranet Eine URL Andere Alternative BITS (siehe Artikel MSDN Magazine Februar 2003) When Thread, der meist wartet und zu bestimmten Intervallen aufwacht

58 Mögliche.NET Updater Hows Direct File Check Client vergleicht Datum Problem: ist nicht atomar Manifest Check Konfigurationsdatei auf dem Server Client vergleicht die enthaltene Versionsnummer oder Datum Ist atomar XML Web Service Check Logik, die serverseitig entscheidet ob Update verfügbar

59 Aufbau im Filesystem PROGRAM FILES MyApp AppStart.exe AppStart.exe.config V1.0 MyApp.exe V1.1 MyApp.exe Es wird immer AppStart.exe gestartet Die Configurationsdatei bestimmt Name des Folder und Name der EXE-Datei

60 Demo Updater Demo-Client starten Neue Version auf Server kopieren Manifest ändern Demo-Client erneut starten

61 Hinweis Demo verwendet DAV Windows XP bietet Background Intelligent Transfer Sevice (BITS) Siehe Artikel im MSDN Magazin Februar 2003

62 Und zum Schluss

63 Zusammenfassung Grundlagen bilden sauberes Komponentenmodell.NET Code Access Security.NET Deployment.NET Komponent Versioning Zusätzliche Techniken machen Applikationen smart Zugriff auf Web Services No Touch Deployment Automatic Update

64 Fragen und Antworten

65 Weitere Informationen Component Software, Beyond Object-oriented Programming Clemens Szyperski, Second Edition, Addison-Wesley, 2002.NET Zero Deployment Security and Versioning Models in the Windows Forms Engine Help You Create and Deploy Smart Clients Chris Sells Return of the Rich Client Code Access Security and Distribution Features in.NET Enhance Client-Side Apps Jason Clark Increasing Permissions for Web-Deployed Windows Forms Applications Chris Sells DHTML and.NET, Hosting Secure Client Side Controls Jay Allen MSDN Magazine January 2001.NET Application Updater Component

66Empowerpeople through software any time, any place, and on any device. great

67