Visual Studio 2005 Tools per Office System: Supporto per Outlook e InfoPath Fabio Santini...
-
Upload
nestore-carli -
Category
Documents
-
view
217 -
download
0
Transcript of Visual Studio 2005 Tools per Office System: Supporto per Outlook e InfoPath Fabio Santini...
Visual Studio 2005 Tools per Office System: Visual Studio 2005 Tools per Office System: Supporto per Outlook e InfoPathSupporto per Outlook e InfoPath
Fabio SantiniFabio [email protected]@microsoft.com
La nuova versione dei Visual Studio 2005 Tools per Office introduce il supporto per Outlook ed estende quello già presente per Infopath. Durante questa sessione vedremo come costruire addins per Outlook e di come interagire con il suo modello ad oggetti per creare soluzioni che si integrino perfettamente con il proprio client di posta. Vedremo anche come estendere le funzionalità di InfoPath utilizzando al posto dello script il .NET Framework e Visual Studio 2005, che di fatto ci permetterà di avere a disposizione la semplicità d’uso di InfoPath e la potenza di .NET.
AgendaAgenda
Visual Studio Tool for Office : Outlook Visual Studio Tool for Office : Outlook add-insadd-ins
Situazione attualeSituazione attuale
ArchitetturaArchitettura
DemoDemo
InfoPath Toolkit per Visual StudioInfoPath Toolkit per Visual StudioCome funziona ?Come funziona ?
La gestione degli eventiLa gestione degli eventi
Offline SubmitOffline Submit
Visual Studio 2005 Tools for the Microsoft Visual Studio 2005 Tools for the Microsoft Office System (VSTO)Office System (VSTO)
Personalizzazione a livello di DocumentoPersonalizzazione a livello di DocumentoMicrosoft Excel 2003 Microsoft Excel 2003
Microsoft Word 2003Microsoft Word 2003
Microsoft InfoPath 2003Microsoft InfoPath 2003
Add-ins a livello di applicazioneAdd-ins a livello di applicazioneMicrosoft Outlook 2003Microsoft Outlook 2003
Supporto a Design-time (specifico per ogni Supporto a Design-time (specifico per ogni app)app)
Supporto a Runtime (uguale per tutte le app)Supporto a Runtime (uguale per tutte le app)
VSTO Outlook Add-insVSTO Outlook Add-ins
demo
VSTO ‘Hello Outlook’ Add-inVSTO ‘Hello Outlook’ Add-in
Problemi con Add-ins ManagedProblemi con Add-ins Managed
Più modi per caricare un add-insPiù modi per caricare un add-insUnshimmed (lo standard)Unshimmed (lo standard)
Shim sempliceShim semplice
Shim COM privatoShim COM privato
Unshimmed add-ins non vanno beneUnshimmed add-ins non vanno benesoprattutto per la stabilità e la sicurezzasoprattutto per la stabilità e la sicurezza
Lo Shim COM è difficile da implementare e Lo Shim COM è difficile da implementare e da distribuireda distribuire
L’interfaccia IDTExtensibility2 è complessaL’interfaccia IDTExtensibility2 è complessa
Outlook ha un problemaOutlook ha un problema
Unshimmed non è la scelta giustaUnshimmed non è la scelta giusta
Caricato nel DefaultDomainCaricato nel DefaultDomainTutti gli add-ins condividono lo stesso Tutti gli add-ins condividono lo stesso contesto di sicurezzacontesto di sicurezza
Un mal funzionamento in un add-ins può Un mal funzionamento in un add-ins può compromettere tutti gli altricompromettere tutti gli altri
Non può essere scaricato dalla memoriaNon può essere scaricato dalla memoria
Tutti gli add-ins sono registrati “come” Tutti gli add-ins sono registrati “come” MSCorEEMSCorEE
Impossibile firmare MSCorEE.dllImpossibile firmare MSCorEE.dll
Poca sicurezza (trust su tutto Poca sicurezza (trust su tutto ))
Lo Shim COM è fragileLo Shim COM è fragile
Costruire un singolo componente Costruire un singolo componente COM per ogni add-inCOM per ogni add-inNon è supportato da MSNon è supportato da MS
Esempio scaricabile da MSDN con Esempio scaricabile da MSDN con sorgentisorgentiUn Wizard per crearlo in automatico Un Wizard per crearlo in automatico (genera codice sorgente) (genera codice sorgente)
Il codice sorgente è in C++ Il codice sorgente è in C++ Ogni componente necessità di firma Ogni componente necessità di firma digitale se la sicurezza di Office è digitale se la sicurezza di Office è impostata ad Highimpostata ad HighIl deployment è più complessoIl deployment è più complesso
Problemi con IDTExtensibility2Problemi con IDTExtensibility2
Utilizzata con Host diversiUtilizzata con Host diversi
Non è strongly-typedNon è strongly-typedOnConnection(… object o…)OnConnection(… object o…)
Excel.Application host = (Excel.Application)o;Excel.Application host = (Excel.Application)o;
5 metodi anche se normalmente se ne usano 5 metodi anche se normalmente se ne usano sempre 2sempre 2
OnConnection OnConnection inizializzazione inizializzazione
OnAddInsUpdate OnAddInsUpdate NOP NOP
OnStartupComplete OnStartupComplete NOP NOP
OnBeginShutdownOnBeginShutdown NOP NOP
OnDisconnectionOnDisconnection pulizia pulizia
Un problema con gli Add-ins in OutlookUn problema con gli Add-ins in Outlook
Paradosso del coccodrilloParadosso del coccodrilloPerchè non ancora sistemato ?Perchè non ancora sistemato ?
Diversi “oggetti esterni” mantengono un puntatore ad Diversi “oggetti esterni” mantengono un puntatore ad Outlook ed è quindi difficile gestire corretamente lo Outlook ed è quindi difficile gestire corretamente lo shutdownshutdown
L’utente che lavora con l’interfaccia graficaL’utente che lavora con l’interfaccia graficaExchange che invia le emailExchange che invia le emailActive SyncActive SyncWord come editor di emailWord come editor di emailMulti-oggetto (Email, Calendar, Task, etc.)Multi-oggetto (Email, Calendar, Task, etc.)
Outlook non chiama OnDisconnection se l’ add-ins Outlook non chiama OnDisconnection se l’ add-ins mantiene un puntatore al suo OMmantiene un puntatore al suo OML’ Add-ins mantiene un puntatore all’ OM di Outlook L’ Add-ins mantiene un puntatore all’ OM di Outlook fino a quando non riceve l’evento OnDisconnectionfino a quando non riceve l’evento OnDisconnectionDifficile consistenza tra il modello di reference Difficile consistenza tra il modello di reference counting di COM e la garbage collection di .NETcounting di COM e la garbage collection di .NET
Le opportunitàLe opportunità
Molte persone “vivono” in OutlookMolte persone “vivono” in Outlook
I task e le Email spesso sono una parte I task e le Email spesso sono una parte integrale di processi di business nei integrale di processi di business nei workflow documentaliworkflow documentali
Il desiderio di avere un unico front-end Il desiderio di avere un unico front-end a fronte di molti sistemi di back-enda fronte di molti sistemi di back-end
Interfaccia grafica già conosciutaInterfaccia grafica già conosciuta
Soluzione: VSTO per Outlook Add-inSoluzione: VSTO per Outlook Add-in
Un shim supportatoUn shim supportatoUtilizza il runtime VSTO runtimeUtilizza il runtime VSTO runtime
Isolamento degli AppDomainIsolamento degli AppDomainSicurezza separata per ogni add-insSicurezza separata per ogni add-insInstallazioni e Aggiornamenti tramite Installazioni e Aggiornamenti tramite ManifestManifest
Modello di sicurezza .NETModello di sicurezza .NETRisolto il problema di OutlookRisolto il problema di OutlookNuovo progetto Visual StudioNuovo progetto Visual StudioSnippets, esempi di codice, Snippets, esempi di codice, whitepaperwhitepaper
VSTO Add-in ArchitectureVSTO Add-in ArchitectureUnmanaged
Office (Outlook)
Host Application
AddinLoader.dll
Addin Loader
IDTExtensibility2 proxy
AddinLoader.dll
Addin Loader
IDTExtensibility2 proxy
AddinLoader.dll
Addin Loader
IDTExtensibility2 proxy
Managed
DefaultDomain
VSTO Runtime
AppDomain Provider
SecurityManager
Add-in Domain #N
Managed Add-in
Add-in Domain #3
Managed Add-in
Add-in Domain #2
Managed Add-in
VSTO AddinLoader (Load)VSTO AddinLoader (Load)
Office
User
1. Start Office
3. CreateAdd-in
AddinLoader +IDTExtensibility2
Proxy
5. ReturnIDTExtensibility2
Pointer6. IDTExtensibility2.
OnConnection
4. Get AppManifest URL
Registry2. Scan forAdd-ins
Application Manifest
VSTORuntime
7. Ask VSTOto Load Add-in,
Passing AppManifest URL
8. LoadApp Manifest
CASPolicyStore
9. CheckSecurity
ManagedAdd-in
10. Create AppDomain,Load Add-in
11. IStartup.Startup
RegistroRegistro
HKEY_CURRENT_USER\ SOFTWARE\ Mi cr osof t \ Offi ce\ Out l ook\ Addi ns\MyOut l ookAddi nHel l oWor l dAddi nAnot her Addi n
HKEY_CLASSES_ROOT\ Hel l oWor l dAddi nCLSI D = {F0E54810-A875-4c54-9697-0AE40DAA7317}
HKEY_CLASSES_ROOT\ CLSI D\ {F0E54810-A875-4c54-9697-0AE40DAA7317}I npr ocSer ver 32 = “C: \ Pr ogr am Fi l es\ . . . \ Addi nLoader . dl l ”Mani f est Locat i on = “C: \ Temp\ Hel l oWor l dAddi n”Mani f est Name = “Hel l oWor l dAddi n. mani f est ”
IDTExtensibility2 IDTExtensibility2 IStartup IStartup
Caricamento Add-inCaricamento Add-in
Metodi Metodi IDTExtensibility2IDTExtensibility2
Implementazione Implementazione tipicatipica
Metodo Metodo IStartupIStartup
OnBeginShutdownOnBeginShutdown --
OnDisconnectionOnDisconnection Rilascio Rilascio puntatoripuntatori
ShutdownShutdown
Scaricamento Add-inScaricamento Add-in
Metodi Metodi IDTExtensibility2IDTExtensibility2
Implementazione Implementazione tipicatipica
Metodo Metodo IStartupIStartup
OnConnectionOnConnection InizializzazioneInizializzazione StartupStartup
OnAddInsUpdateOnAddInsUpdate - -
OnStartupCompleteOnStartupComplete --
VSTO AddinLoader (Unload)VSTO AddinLoader (Unload)
User
Office
1. Disconnect
AddinLoader + IDTExtensiblity2
proxy
2. IDTExtensibility2.OnDisconnection
ManagedAdd-in
3. IStartup.Shutdown
VSTORuntime
4. Unload AppDomain
5. Return from OnDisconnection
Registry6. Update
LoadBehavior
demo
Un esempio completoUn esempio completo
AgendaAgenda
InfoPath e i Visual Studio Tools for InfoPath e i Visual Studio Tools for OfficeOffice
La gestione degli eventiLa gestione degli eventi
Offline SubmitOffline Submit
Programmare InfoPathProgrammare InfoPath
La maggior parte delle form non richiede codice
XML Schema
RulesFormulas
Data ValidationData Connections
Conditional Formatting
C#VB.NET
RequisitiRequisiti
SviluppatoriSviluppatoriVisual Studio .NET 2003 o 2005 Beta 2 o 2005 Visual Studio .NET 2003 o 2005 Beta 2 o 2005 RCRCInfoPath 2003 SP1InfoPath 2003 SP1InfoPath Toolkit per Visual Studio (Macros)InfoPath Toolkit per Visual Studio (Macros)
Visual Studio .NET 2003 (Download)Visual Studio .NET 2003 (Download)Visual Studio 2005 Beta 2 (Download o CD)Visual Studio 2005 Beta 2 (Download o CD)Visual Studio 2005 RC (MSDN)Visual Studio 2005 RC (MSDN)
Utente finaleUtente finale.NET Framework 1.1 o 2.0 Beta 2.NET Framework 1.1 o 2.0 Beta 2InfoPath 2003 SP1InfoPath 2003 SP1
InfoPath e InfoPath e Visual StudioVisual Studio
Form TemplateForm Template
Sorgenti (CS, VB)Definizione progetto (*PROJ)
File del Form Template
Progetto Visual StudioProgetto Visual Studio
Assembly (DLL and PDB)Definizione Template (XSF)
Data di default (XML)Schema (XSD)Viste (XSLT)
Form Template InfoPath (XSN)
Pubblica / Preview
Dati della form
Utente inserisce i dati nella form
.XML
Gli eventiGli eventi
Open
Edit
Submit
Close
Utente
C#VB.NET
Gestione Eventi
OnLoad
OnAfterChange
OnValidate
OnBeforeChange
OnClick
Eventi
OnSubmitRequest
Altri eventi
hours
Gli eventi durante l’editingGli eventi durante l’editing
status
issues items
item item
rate source
OnAfterChange(DataDOMEvent e)
Bubbling
Event HandlerXMLDOM
Gli eventi durante l’editingGli eventi durante l’editing
status
issues Site
item item
rate Source
OnAfterChange(DataDOMEvent e)
Bubbling
Bubbling nasconde la Bubbling nasconde la sorgente dell’eventosorgente dell’evento
e.Site per chi ha gestito e.Site per chi ha gestito l‘eventol‘evento
e.Source dove realmente e.Source dove realmente è stato scatenato l’eventoè stato scatenato l’evento
Gli eventi arrivano 2 Gli eventi arrivano 2 volte!volte!
Usare e.OperationUsare e.Operation
Controllare “Insert”Controllare “Insert”
Event HandlerXMLDOM
Gestire gli eventiGestire gli eventi
Offline Submit e cachingOffline Submit e caching
Offline Submit (Offline Submit (Esempi MSDNEsempi MSDN, Blog), Blog)Submit Online: usare DataAdapterSubmit Online: usare DataAdapter
Submit Offline: usare IsolatedStorageSubmit Offline: usare IsolatedStorage
On Load: Fare submit dei dati presenti On Load: Fare submit dei dati presenti nell’ IsolatedStoragenell’ IsolatedStorage
Offline sorgenti secondarieOffline sorgenti secondarieOnline: DataAdapter verso Online: DataAdapter verso IsolatedStorageIsolatedStorage
Offline: Caricare dall’ IsolatedStorageOffline: Caricare dall’ IsolatedStorage
Lavorare offlineLavorare offline
ResourcesResources
VSTO Team Blogs: http://blogs.msdn.com/vsto2/http://blogs.officezealot.com/whitechapel/http://blogs.msdn.com/eric_carter/
VSTO Outlook Add-in: http://go.microsoft.com/?linkid=3064045…thru…http://go.microsoft.com/?linkid=3064049
Mads’ Blog:
http://weblogs.asp.net/mnissen
Community ResourcesCommunity ResourcesMicrosoft Community ResourcesMicrosoft Community Resourceshttp://www.microsoft.com/communities/default.mspxhttp://www.microsoft.com/communities/default.mspxNon-Microsoft Community ResourcesNon-Microsoft Community Resourceshttp://www.microsoft.com/communities/related/default.mspxhttp://www.microsoft.com/communities/related/default.mspxNewsgroupsNewsgroupsConverse online with Microsoft Newsgroups, including Converse online with Microsoft Newsgroups, including WorldwideWorldwidehttp://www.microsoft.com/communities/newsgroups/default.mhttp://www.microsoft.com/communities/newsgroups/default.mspxspxUser GroupsUser GroupsMeet and learn with your peersMeet and learn with your peershttp://www.microsoft.com/communities/usergroups/default.mshttp://www.microsoft.com/communities/usergroups/default.mspxpxAttend a free chatAttend a free chathttp://www.microsoft.com/communities/chats/default.mspxhttp://www.microsoft.com/communities/chats/default.mspxAttend a free web castAttend a free web casthttp://www.microsoft.com/usa/webcasts/default.asphttp://www.microsoft.com/usa/webcasts/default.aspMost Valuable Professional (MVP)Most Valuable Professional (MVP)http://http://mvp.support.microsoft.commvp.support.microsoft.com//
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only.MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Paradosso del coccodrilloParadosso del coccodrilloUn coccodrillo aveva afferrato un bambino che stava Un coccodrillo aveva afferrato un bambino che stava giocando sulle rive del Nilo. La madre imploro' il giocando sulle rive del Nilo. La madre imploro' il coccodrillo di restituirglielo. "Certo" disse il coccodrillo di restituirglielo. "Certo" disse il coccodrillo. "Se sai dirmi in anticipo esattamente cio' coccodrillo. "Se sai dirmi in anticipo esattamente cio' che faro', ti restituiro' il piccolo; pero', se non che faro', ti restituiro' il piccolo; pero', se non indovinerai, lo mangero' per pranzo". "Oh" disse indovinerai, lo mangero' per pranzo". "Oh" disse la madre piangendo disperata, "tu divorerai il mio la madre piangendo disperata, "tu divorerai il mio bambino". L'astuto coccodrillo ribatte': "Non posso bambino". L'astuto coccodrillo ribatte': "Non posso ridarti il bambino, perche', se te lo rendo,faro' si' ridarti il bambino, perche', se te lo rendo,faro' si' che tu abbia detto il falso, e ti avevo garantito che se che tu abbia detto il falso, e ti avevo garantito che se tu avessi detto il falso, lo avrei divorato". "Le cose tu avessi detto il falso, lo avrei divorato". "Le cose stanno esattamente al contrario", rispose astuta la stanno esattamente al contrario", rispose astuta la madre. "Non puoi mangiare il mio bambino perche', madre. "Non puoi mangiare il mio bambino perche', se lo divori, farai si' che io abbia detto la verita' e tu se lo divori, farai si' che io abbia detto la verita' e tu avevi promesso che, se io avessi detto la verita', avevi promesso che, se io avessi detto la verita', avresti restituito il bambino. So che sei un coccodrillo avresti restituito il bambino. So che sei un coccodrillo d'onore e che mantieni la parola data".d'onore e che mantieni la parola data".
back