240 likes | 349 Vues
This document outlines the system requirements and setup instructions for using the GuideOnLine Framework. Key requirements include .NET Framework 4.0, Microsoft SQL Server 2008 R2, and Visual Studio 2010. It provides step-by-step guidance on copying necessary project and item templates for both VB and C# within Visual Studio. Additionally, it details how to create a new plugin, including assembly management and service registration for effective plugin integration. Follow this guide for a seamless installation and development experience with GuideOnLine Framework.
E N D
GuideOnLineFramework B.V. Electronic Østerbro 5 7800 Skive +45 97 52 50 22 www.bve.dk
System Requirements • .Net Framework 4.0 • Microsoft SQL Server 2008 R2* • Microsoft Visual Studio 2010 • GuideOnLine • VB or C# Project Templates • VB or C# Item Templates *GO Core and somepluginscan run without a database
Project Templates • Kopier mapperne: \Templates\ProjectTemplates\Visual C#\GOLF til \Documents\VisualStudio 2010\Templates\ProjectTemplates\Visual C#. Kopier mappen \Templates\ProjectTemplates\VisualBasic\GOLF til \Documents\VisualStudio 2010\Templates\ProjectTemplates\Visual Basic
Item Templates • Kopier mapperne: \ItemTemplates\Visual C#\GOLF til \Documents\VisualStudio 2010\Templates\ItemTemplates\Visual C# \ItemTemplates\VisualBasic\GOLF til \Documents\VisualStudio 2010\Templates\ItemTemplates\Visual Basic
New Project • Opretter nyt projekt • Tilføjer .Plugin til assemblyname • Sætter Assembly Version til 4.0.* • Tilføjer referencer til • GO.Core.dll • GO.Forms.dll • GO.Shared.dll • GO.Windows.dll • Opretter Post-build event, der kopierer assembly til C:\Program Files\B.V. Electronic\GuideOnLine4.0\
New Plugin Plugins er en erstatning for kodeforløbet: 1. Instantier typen ved at kalde vilkårlig constructor. 2. Typen specificeres i kode. 3. Instantieringsrækkefølgen af forskelllige typer bestemmes i kode. 4. Brug instansen. 5. Når ingen længere har reference til instansen -> GC. I stedet opnås følgende kodeforløb: 1. Instantier alle typer ved at kalde default constructor. 2. Typerne og instantieringsrækkefølgen specificeres i database. 3. Sæt InstanceID. 4. Kald Initalize() metoden. 5. Brug instansen. 6. Kald Terminate() metoden. 7. Når ingen længere har reference til instansen -> GC.
New Plugin Plugins er typer, der implementerer IPlugin: publicinterfaceIPlugin { stringInstanceID { set; get; } void Initialize(PluginInitializeEventArgs e); void Terminate(PluginTerminateEventArgs e); }
New Plugin • PluginControlBase System.Windows.Forms.UserControlForms • PluginFormBase System.Windows.Forms.Form • PluginNamedBaseClass Class • PluginUserControlBase (WPF) UserControl WPF System.Windows.UserControl • PluginWindowBase (WPF) Window (WPF) System.Windows.Windows.Window
Debug • Vælg Start external program og peg på C:\Program Files\B.V. Electronic\GuideOnLine4.0\GO.Main.Windows.exe • Tilføj –ignoreupdates under Command Line Arguments • Vælg Start Debugging • Tilføj pluginunder Management
Opgave • Opret en ny plugin og start den i GuideOnLine.
Opgave • Opret en property og sæt værdien i GuideOnLine. • Vis værdien, når pluginen starter op.
Services Services skal registrere sig selv i en singleton klasse, der implementerer IServiceManager: publicinterfaceIServiceManager { eventEventHandler<ServiceAddedEventArgs> ServiceAdded; eventEventHandler<ServiceRemovedEventArgs> ServiceRemoved; void Add(stringinstanceID, stringdisplayName, stringdescr, INamedObjectservice); void Remove(INamedObject service); objectGetService(stringinstanceID); objectGetService(Serviceservice); INamedObject[] GetServices(); } Som det ses af IServiceManager, så er det eneste der kræves af en type for at være en service, at den implementerer INamedObject: publicinterfaceINamedObject { stringInstanceID { get; set; } string Description { get; set; } stringDisplayName { get; set; } } INamedObject er meget simpel at implementere. Man kan dog i stedet lade sin type arve fra NamedObjectBase, som i følgende eksempel: MyService : NamedObjectBase { voidDoSomething() {} } // Create service varservice = new MyService(); // Register service serviceManager.Add("Test.MyService", "Min Service", "Min danske beskrivelse", service); // Use service varuse = (MyService)serviceManager.GetService("Test.MyService"); use.DoSomething();
Consumers Consumers kan vælge selv at hente deres services fra IServiceManager, som vist i forrige eksempel. Ofte vil man dog vælge, at lade consumer typen arve fra ServiceBase, der implementer de mest gængse services: IServiceManagerServiceManager; DatabaseDatabase; IActivationOptionsActivationOptions; IEnvironment Environment; IDirectory Directory; ILogErrorLog; ILogInfoLog; ILogEventLog; IDatabaseDictionary Dictionary; IAccessManagerAccessManager; ILogOnManagerLogonManager; Eksempel: MyConsumer : ServiceBase { voidDoSomething() { // Use inherited service ErrorLog.WriteLine(“Hello world”); } } Det er vigtigt, ikke at cache services i MyConsumer, da en eventuel ny service kan blive registreret.
Data binding i WPF • DataItems kan bruges sammen med data binding i WPF. • Mulighed for at læse og skrive data uden at have underliggende kode.
Services • LogListener ILogListener (GO.Logging) • DataServer IDataServer (GO) • DataSubscription DataSubscription (GO.DataServices) • MessageConnection IMessageConnection (GO.MessageHandler) • Printer PrinterBase (GO.PrintHandler) • Activity (Workflow) ServiceCodeActivity (GO)