scoprirete che su office non si può solo contare ma anche sviluppare
TRANSCRIPT
Scoprirete che su Office non si può solo contare ma anche sviluppare
Fabio [email protected]://blogs.msdn.com/fabiosantinihttp://playmobil.sts.winisp.net/default.aspxDeveloper & Platform Evangelism
Advanced Visual Studio Tool for Office 2005
AgendaTask PaneDocument Data IslandManaged ControlsDeploymentSecurity
IntroduzioneActionsPane
Fornisce un modello di programmazione in codice managed per il “Document Actions task pane”
Fondato sulle Windows FormsWindows Forms Designer
Contenitore per user controlsUn passo oltre lo SmartDoc SDK
L’interfaccia ISmartDocument implementata dietro le quinteIl mapping di uno schema XML non è più richiesto
Introduzione Benefici
Integrazione della UI con Word e ExcelControlli Windows Forms disponibili
Completamente .NET codeUtilizzo degli User controlsSviluppo riutilizzando tutte le conoscenze
Forte integrazione con Microsoft Visual Studio® 2005Sviluppo semplificatoUso del Data binding con i dati del documento
User Controls e ActionsPaneIntroduzione
UserControl disponibili in progetti Word e ExcelSemplici da creare
Simili alle Windows FormsUtilizzo completo dei controlli della toolbox
Facile da usare
Dim MyUserControl As New UserControl1
Private Sub ThisDocument_Initialize( _ ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Initialize
Me.ActionsPane.Controls.Add(MyUserControl)End Sub
Scenario di utilizzoGestione fatture
Gestire fatture collegate a databaseTecnologie utilizzate
Microsoft Excel – gestione dei calcoliXML Web service— gestione della comunicazioneSQL Server— database
ActionsPane di esempioMenu CustomDrop-down list per i datiI dati recuperati in realtime
Aggiungere uno User Controls al ActionsPane
ActionsPane Runtime ManipulationUsage and Benefits
Gestione dell’interfaccia graficaPosizioneDimensioneVisibilità
Preferenze di utilizzoImplementato con poco codice
Docking a destra per default Proprietà Anchor
Recupera o imposta a quale lato deve essere ancorato il containerI controlli posso ridimensionarsi con l’Actions paneValore:
AnchorStyles.NoneAnchorStyles.TopAnchorStyles.BottomAnchorStyles.LeftAnchorStyles.Right
ActionsPane Runtime ManipulationDocking and Anchoring
Posizionare più user controlOrdine
Valori:StackStyle.NoneStackStyle.FromTopStackStyle.FromBottomStackStyle.FromLeftStackStyle.FromRight
Esempio:
Actions Pane Run-time ManipulationPosizionamento
Actions PaneActions Pane
User Control 2User Control 2User Control 1User Control 1
User Control 1User Control 1
User Control 2User Control 2
Actions PaneActions Pane
(Default)(Default)StackStyle.NoneStackStyle.None
Me.ActionsPane.Controls.Add(MyUserControl)Me.ActionsPane.StackOrder = Microsoft.Office.Tools _ .ActionsPane.StackStyle.FromLeft
Actions Pane Run-Time Manipulation
L’ ActionsPane può essere usato per fornire informazioni basate sul contesto dell’utente e sulla posizione corrente all’interno del documentoUtilizzare uno Schema XML per fornire la strutturaShow/Hide dei controlli in risposta agli eventi ContextEnter/ContextLeave
ActionsPane Runtime ManipulationSmart Document ?
Smart Document con VSTO 2.0
Document Data IslandIntroduzione alle Data Island
Memorizza i dati all’interno del documentoPerchè fare cache dei dati nel documento?
Disponibili quando il client lavora offlineAccessibile a processi lato serverMemorizzare configurazioni
Supporto per il Data caching in Visual Studio Tools for Office
I campi marcati con l’attributo CachedI tipi possono implementare ICachedType per specializzare la modalità di serializzazioneLa classe ServerDocument class accede alla cache senza utilizzare Microsoft Word o Microsoft Excel
Document Data Island Esempio di Caching Data
[Cached()] CustomerDataSet customerDataSet;
void ThisDocument_Initialize(…) {
if (customerDataSet == null) {
customerDataSet = new CustomerDataSet(); dataAdapter.Fill(customerDataSet);
}
list1.DataSource = customerDataSet;}
Document Data IslandData richiesti dal Server
ASPX page
Data Island
User data
ASPX page
Updated data
Document Data Island Data inviati al Server
UpdatedData
Cache
Data Caching
Document Data Cache Utilizzare la classe ServerDocument
private void GetData(){
string user = Request.ServerVariables("AUTH_USER");
ExpensesDataset dsExpenses = new ExpensesDataset();
ExpensesDataAdapter.Fill(dsExpenses, user);ServerDocument doc = new
ServerDocument("expenses.xls");CachedDataItem cdi = doc.CachedData.
HostItems("ExpensesWorksheet"). CachedData("Expenses")
cdi.SerializeDataInstance(dsExpenses);doc.Save();doc.Close();Response.Write(doc);
}
Data Caching
Managed ControlsPersonalizzare i documenti tramite Controlli
La collection Controls contiene i riferimenti ai controlli statici e dinamici
Statici: aggiunti a design time – non si possono cancellare a runtimeDinamici: aggiunti a runtime
I controlli dinamici aggiungono una maggiore flessibilità ai documenti
Creare dinamicamente interfaccie UISegue il modello Windows Form
Managed ControlsHosting dei controlli managed
I controlli Managed sono “hostati” all’interno di un wrapper ActiveX
Un placeholder viene mostrato nel documento se i controlli managed falliscono il check di sicurezza
I controlli custom hanno più interfacciePrimaria: Windows Forms controlEstesa: ActiveX wrapper (_OLEObject)
Managed ControlsAggiungere un controllo dinamicamente
Metodo AddControl per controlli customParametri: istanza del controllo, posizione, e un nome univocoRitorna una istanza di _OLEObject
Microsoft.Office.Interop.Excel._OLEObject Microsoft.Office.Interop.Word._OLEObject
Nuovi metodi per aggiungere controlli dinamici
AddButton, AddLabel, etc.Accettano il nome del controllo e la posizioneRitornano un riferimento al custom control
Controls.AddButton → Microsoft.Office.Tools.Excel.Controls.Button
Managed ControlsEsempio di Custom Controlsusing Microsoft.Office.Interop;
private void AddDynamicControl(){
userControl1 customUserControl = new userControl1();
Excel_OLEObject dynamicControl = this.Controls.AddControl(
customUserControl, Range1, "dynamic");
// Set coordinates through the Excel._OLEObject, // not through the Windows Forms control.
dynamicControl.Top = 100;customUserControl.UniqueProperty = true;
}
Using Dynamic Controls
DistribuzioneManifest e ClickOnce
Utilizza la tecnologia ClickOnceUso di un manifest (XML)Rilasciata con la nuova versione di .NET Framework e Visual Studio 2005
Fornisce una descrizione completa dell’applicazione
Indica quali DLL devono essere utilizzateInclude assembly collegatiDescrive la posizione degli assemblyNon usato per un’installazione locale
DistribuzioneAssociazione dei file
Separazione tra il documento, il codice e gli assembly
Il codice è parte del progetto Visual StudioSolo l’assembly viene distribuito con il documento
L’Assembly è “collegato” al documentoVSTO 2003: Custom propertiesVSTO 2005: Application manifest dentro il documentoL’ Application manifest punta al manifest di deployment
DistribuzioneRequisiti del Client
.NET Framework 2.0Office Professional Edition 2003
o una versione standalone di Excel 2003/Word 2003PIAs sono necessarie
installare Office full selezionarle tramite il custom setup
Runtime VSTO 2005Impostazioni delle .NET security policies
DistribuzioneEsempio di Application Manifest<assembly ...>
<assemblyIdentity name="Excel4.manifest"version="1.0.22"/>
<entryPoint name="Startup" dependencyName="Excel4"><clrClassInvocation class="Sheet1"/>
</entryPoint><dependency name="Excel4">
<dependentAssembly> <assemblyIdentity name="Excel4" version="1.0.1"/></dependentAssembly><installFrom codebase="http://deployweb/excel4.dll" />
</dependency><installFrom
codebase="http://deployweb/excel4.deploy"/></assembly>
Distribuzione Deployment Manifest Example<assembly ...>
<assemblyIdentity name="Excel4.deploy" version="1.0.1"/>
<dependency><dependentAssembly>
<assemblyIdentity name="Excel4.manifest"version="1.0.22"/>
</dependentAssembly><installFrom codebase="http://deployweb/Excel4.manifest"/>
</dependency></assembly>
Some.dll 1.1
Distribuzione Trovare gli Assembly
Some.xls
manifest.xml
<manifest><deploy url=http://…/deploy.xmlversion=“1.0”/>
<manifest> . . .curVersion=”1.1” . . .</manifest>
Deploy.xml
Some.dll 1.0
<manifest><deploy url=http:…/deploy.xml version=“1.0”/> . . .
<manifest><deploy url=http:…/deploy.xml version=“1.1”/><assembly Name=“Some.dll” updateURL= http:../1.1/Some.dll
<manifest><deploy url=http:…/deploy.xml version=“1.1”/><assembly Name=“Some.dll” updateURL= http:../1.1/Some.dll
DistribuzioneAggiornare il Manifest
E’ possibile cambiare ogno parte dell’Application Manifest
ServerDocument doc = new ServerDocument("file.doc");doc.AppManifest.DeployManifestPath = “http://...";
Local/NetworkPro
Facile aggiornamento degli assemblyL’utente può modificarsi il documento
ControL’aggiornamento del documento richiede la ridistribuzione
Network/NetworkPro
Facile aggiornamento degli assemblyFacile aggiornamento del documento
ControGli utenti condividono un unica copia del documento
DistribuzioneDeployment Models
SicurezzaVisual Studio Tools for Office
Secure by defaultLa sicurezza è gestita dalla .NET Code Access Security
EvidencePermissions
Entrambi il codice e il documento devono avere full trust
Dovuto al fatto che VSTO chiama il modello ad oggetti di Office usando InterOp
SicurezzaScenario positivo
SicurezzaScenario negativo
SummaryLe Data island forniscono isole di dati all’interno del documentoL’uso di Managed controls permettono lo sviluppo di soluzioni completeI Manifest forniscono un modello di distribuzione flessibileLe policy di sicurezza di .NET assicurano l’esecuzione del codiceL’uso di XML permette una modellazione dei dati all’interno del documento
© 2004 Microsoft Corporation. All rights reserved.© 2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.Content created by 3 Leaf Solutions.Content created by 3 Leaf Solutions.