scoprirete che su office non si può solo contare ma anche sviluppare

39
prirete che su Office non si può solo contare ma anche svilup

Upload: mose-carrara

Post on 01-May-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Scoprirete che su Office non si può solo contare ma anche sviluppare

Scoprirete che su Office non si può solo contare ma anche sviluppare

Page 2: 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

Page 3: Scoprirete che su Office non si può solo contare ma anche sviluppare

AgendaTask PaneDocument Data IslandManaged ControlsDeploymentSecurity

Page 4: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 5: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 6: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 7: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 8: Scoprirete che su Office non si può solo contare ma anche sviluppare

Aggiungere uno User Controls al ActionsPane

Page 9: Scoprirete che su Office non si può solo contare ma anche sviluppare

ActionsPane Runtime ManipulationUsage and Benefits

Gestione dell’interfaccia graficaPosizioneDimensioneVisibilità

Preferenze di utilizzoImplementato con poco codice

Page 10: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 11: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 12: Scoprirete che su Office non si può solo contare ma anche sviluppare

Actions Pane Run-Time Manipulation

Page 13: Scoprirete che su Office non si può solo contare ma anche sviluppare

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 ?

Page 14: Scoprirete che su Office non si può solo contare ma anche sviluppare

Smart Document con VSTO 2.0

Page 15: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 16: Scoprirete che su Office non si può solo contare ma anche sviluppare

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;}

Page 17: Scoprirete che su Office non si può solo contare ma anche sviluppare

Document Data IslandData richiesti dal Server

ASPX page

Data Island

User data

Page 18: Scoprirete che su Office non si può solo contare ma anche sviluppare

ASPX page

Updated data

Document Data Island Data inviati al Server

UpdatedData

Cache

Page 19: Scoprirete che su Office non si può solo contare ma anche sviluppare

Data Caching

Page 20: Scoprirete che su Office non si può solo contare ma anche sviluppare

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);

}

Page 21: Scoprirete che su Office non si può solo contare ma anche sviluppare

Data Caching

Page 22: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 23: Scoprirete che su Office non si può solo contare ma anche sviluppare

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)

Page 24: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 25: Scoprirete che su Office non si può solo contare ma anche sviluppare

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;

}

Page 26: Scoprirete che su Office non si può solo contare ma anche sviluppare

Using Dynamic Controls

Page 27: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 28: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 29: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 30: Scoprirete che su Office non si può solo contare ma anche sviluppare

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>

Page 31: Scoprirete che su Office non si può solo contare ma anche sviluppare

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>

Page 32: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 33: Scoprirete che su Office non si può solo contare ma anche sviluppare

DistribuzioneAggiornare il Manifest

E’ possibile cambiare ogno parte dell’Application Manifest

ServerDocument doc = new ServerDocument("file.doc");doc.AppManifest.DeployManifestPath = “http://...";

Page 34: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 35: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 36: Scoprirete che su Office non si può solo contare ma anche sviluppare

SicurezzaScenario positivo

Page 37: Scoprirete che su Office non si può solo contare ma anche sviluppare

SicurezzaScenario negativo

Page 38: Scoprirete che su Office non si può solo contare ma anche sviluppare

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

Page 39: Scoprirete che su Office non si può solo contare ma anche sviluppare

© 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.