240 likes | 346 Views
GuideOnLine Framework. 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
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)