Enterprise Library Extensibility Brian Button VP of Engineering Asynchrony Solutions, Inc.

Slides:



Advertisements
Similar presentations
Classification & Your Intranet: From Chaos to Control Susan Stearns Inmagic, Inc. E-Libraries E204 May, 2003.
Advertisements

©2011 Quest Software, Inc. All rights reserved. Steve Walch, Senior Product Manager Blog: November, 2011 Partner Training Webcast.
Microsoft Office SharePoint Portal Server 2007 Introduction to InfoPath Forms Services Daryl L. Rudolph.
Test Automation: Coded UI Test
Apache Struts Technology
Implementing Autodesk Inventor in Your Company MA405-1
Enterprise Smart Clients Architecture, Patterns, Design, Best Practices Keith Elder Manager, Sr. Software Engineer Quicken Loans Blog:
Object-Oriented Enterprise Application Development Tomcat 3.2 Configuration Last Updated: 03/30/2001.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
SharePoint 2010: BCS m Business Connectivity Services.
● Dondi Vigesaa ● Operations Engineer ● Microsoft Corporation ● How Microsoft IT Deploys Windows Server 2008.
A Practical Guide to Working with ActiveSync 4.0 By Chris De Herrera Founder, Pocket PC FAQ Microsoft MVP, Mobile Devices.
Microsoft ® Office Word 2007 Training Mail Merge II: Use the Ribbon and perform a complex mail merge [Your company name] presents:
Using Microsoft SharePoint to Develop Workflow and Business Process Automation Ted Perrotte National Practice Manager, Quilogy, Microsoft Office SharePoint.
Information about Microsoft Project and Microsoft Project Server October 2011 Software Update Adrian Jenkins Senior Escalation Engineer Microsoft Corporation.
©2011 Quest Software, Inc. All rights reserved. Steve Walch, Senior Product Manager Blog: November, 2011 Partner Training Webcast.
Other Features Index and table of contents Macros and VBA.
©2011 Quest Software, Inc. All rights reserved. Steve Walch, Senior Product Manager Blog: November, 2011 Partner Training Webcast.
1 ADVANCED MICROSOFT WORD Lesson 15 – Creating Forms and Working with Web Documents Microsoft Office 2003: Advanced.
Kids Computer Club House
Information About Microsoft Project and Project Server Cumulative December Update Adrian Jenkins Support Escalation Engineer Microsoft Corporation 1 Brian.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Reading Data in Web Pages tMyn1 Reading Data in Web Pages A very common application of PHP is to have an HTML form gather information from a website's.
Open source administration software for education next generation student system Using the Kuali Student Configurable User Interaction Model & Framework.
CSCI 6962: Server-side Design and Programming Course Introduction and Overview.
Ext Environment Copyright © 2005 Liferay, LLC All Rights Reserved. No material may be reproduced electronically or in print without written permission.
Doing Something Useful with Enterprise Library 3.0 Benjamin Day Level: Intermediate.
Intro to C# Dr. John P. Abraham UTPA. Background required Thorough C++ programming – If you made an A in 1370/1170 you will do fine with some effort.
Developing Workflows with SharePoint Designer David Coe Application Development Consultant Microsoft Corporation.
Using JavaBeans and Custom Tags in JSP Lesson 3B / Slide 1 of 37 J2EE Web Components Pre-assessment Questions 1.The _____________ attribute of a JSP page.
Virtual techdays INDIA │ Nov 2010 Developing Office Biz Application using WPF on Windows 7 Sarang Datye │ Sr. Consultant, Microsoft Sridhar Poduri.
11 A First Game Program Session Session Overview  Begin the creation of an arcade game  Learn software design techniques that apply to any form.
Ext Environment Copyright © 2005 Liferay, LLC All Rights Reserved. No material may be reproduced electronically or in print without written permission.
1 Agenda Administration Background Our first C program Working environment Exercise Memory and Variables.
1 © 2008 Avaya Inc. All rights reserved. IPOffice Configuration Service Emil Ratnam.
ICONICS ActiveX ToolWorX V 6.1.
The Capabilities of AdminP Carilyn E. Daniel KMAS Consulting.
Duty Log and Chat Setup SSG Frese, Jerome S. Sensor Manager Cell 12 MDD.
What you don’t know you don’t know about Drupal 6 Dan Harris daneesia on drupal.org.
1 Extending User Profiles with Line of Business Data Patrick Curran, MCT.
Copyright © 2007 Vulcan Software LLC Introduction to Apex 9.5 Presented by Phil Kramer Vulcan Software LLC.
0 SharePoint Search 2013 Rafael de la Cruz SharePoint Developer Seneca Resources twitter.com/delacruz_rafael
System.Security.Policy namespace Chinmay Lokesh.NET Security CS 795 Summer 2010.
VITALE, CATURANO & COMPANY LTD Microsoft SharePoint Web Part Development Overview VITALE, CATURANO & COMPANY LTD SharePoint Developer Series – Web Part.
Connect. Communicate. Collaborate PerfsonarUI plug-in tutorial Nina Jeliazkova ISTF, Bulgaria.
Copyright © 2006 Pilothouse Consulting Inc. All rights reserved. Search Overview Search Features: WSS and Office Search Architecture Content Sources and.
MEMBERSHIP AND IDENTITY Active server pages (ASP.NET) 1 Chapter-4.
XML Access Control Koukis Dimitris Padeleris Pashalis.
Master Data Management & Microsoft Master Data Services Presented By: Jeff Prom Data Architect MCTS - Business Intelligence (2008), Admin (2008), Developer.
Microsoft FrontPage 2003 Illustrated Complete Integrating a Database with a Web Site.
Welcome to a MNSPUG Addition! April 8 th, 2009 What You Need to Know About SharePoint Designer (Now That It's Free) Raymond.
Mr. Justin “JET” Turner CSCI 3000 – Fall 2015 CRN Section A – TR 9:30-10:45 CRN – Section B – TR 5:30-6:45.
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved Address Book Application Introducing Database Programming.
Random Logic l Forum.NET l State Machine Mechanism Forum.NET 1 st Meeting ● December 27, 2005.
Building Custom Controls with ASP.NET and the Microsoft ®.NET Framework Rames Gantanant Microsoft Regional Director, Thailand
Software services delivering SharePoint, Mobile, and Business Intelligence solutions Understanding and implementing the remote provision pattern in SharePoint.
Enterprise Library 3.0 Memi Lavi Solution Architect Microsoft Consulting Services Guy Burstein Senior Consultant Advantech – Microsoft Division.
Project Server 2010 – Performance Part 1: Setup, Test Execution, and Results (Level 300) Mike Shughrue Principal Consultant Microsoft Corporation
The Holmes Platform and Applications
Configuration & Registry Microservice Deep Dive
Java FX: Scene Builder.
Concept To Solution Learning and Mastering Sage 300 Construction and Real Estate – Office Connector.
Avalon – Using Data In Your Applications
MGB 2003 Adam Calderon – C# MVP Principal Engineer Interknowlogy
Lesson 9 Sharing Documents
XAML User Interface Creation in C#
CSM System ( Customer Service Management System)
ESIS Consulting LLC (C) ESIS Consulting LLC. All rights reserved
How to organize and document your classes
Contexualized Data In Document Authoring
Presentation transcript:

Enterprise Library Extensibility Brian Button VP of Engineering Asynchrony Solutions, Inc.

What We Will Cover How the Enterprise Library Configuration Console works Steps needed to create your own design time experience

Session Prerequisites Knowledge of last web cast on building your own Enterprise Library runtime configuration Familiarity with Enterprise Library concepts Level 200

Agenda Overview of Configuration Console Overview of a Design Time 5 steps needed to implement a design time Q&A Final farewell

Overview of Configuration Console UI used to create Enterprise Library config.

Configuration Console – cont Console knows nothing about blocks at startup

Configuration Console – cont But it discovers them at runtime by looking in its bin directory

Configuration Console – How does it find the assemblies? Through reflection, all assemblies in bin directory are inspected AssemblyInfo.csConfigurationDesignManagerAttribute Design Manager class – Extends ConfigurationDesignManager Matching assemblies are loaded as design times

Overview of a Design Time Design-times allow users Create configuration for application blocks Store configuration into XML files (or elsewhere) Read and modify configuration from XML files Sits between the Configuration Console and the Application Block Runtime Configuration Like we built last time with Animal Application Block

5 steps to creating your own Design Time Markup assembly for runtime discovery Register assembly with Config Console Create visual experience Implement configuration writing Implement configuration reading

Marking assembly for discovery [assembly: ConfigurationDesignManager(typeof(AnimalConfigurationDesignManager))] AssemblyInfo.csAnimalConfigurationDesignManager.cs public class AnimalConfigurationDesignManager : ConfigurationDesignManager { public override void Register(IServiceProvider serviceProvider) { } }

Registering assembly with Configuration Console Root node needs to be registered in AnimalConfigurationDesignManager public class AnimalCommandRegistrar : CommandRegistrar { public override void Register() { ConfigurationUICommand cmd = ConfigurationUICommand.CreateSingleUICommand( ServiceProvider, "Animal Application Block", "Add the Animal Application Block", new AddAnimalSettingsNodeCommand(ServiceProvider), typeof(AnimalSettingsNode)); AddUICommand(cmd, typeof(ConfigurationApplicationNode)); AddDefaultCommands(typeof(AnimalSettingsNode)); }}

Not an interesting visual experience… yet Only our root node shows up at this point

Creating the visual experience Need to register nodes for all other configurable entities in our block Create Node class that mirrors properties from corresponding runtime configuration class Ex: PigData -> PigSettingsNode Register those nodes AddMultipleChildNodeCommand( "Pig", "Add a Pig", typeof(PigSettingsNode), typeof(AnimalSettingsNode)); "Pig", "Add a Pig", typeof(PigSettingsNode), typeof(AnimalSettingsNode));

Settings Node Example public class PigData : AnimalData { [ConfigurationProperty(weightProperty, IsRequired = true)] public int Weight { get { return (int)base[weightProperty]; } set { base[weightProperty] = value; } }} public class PigSettingsNode : AnimalNode { int weight; [Required] [SRCategory("CategoryGeneral", typeof(Resources))] [SRDescription("PigWeightDescription", typeof(Resources))] public int Weight { get { return weight; } set { weight = value; } }}

Wiring up active default behavior AnimalSettingsNode has a DefaultAnimalNode property Filled in manually When specified node deleted, this property should be updated Implemented in active behavior region of AnimalSettingsNode

Implementing Configuration Writing Very easy – we already have most of it written Actually read/write logic handled by runtime classes We just need to provider code that causes UI nodes to be translated to runtime configuration objects. System.Configuration does the rest…

Implementing Configuration Writing public class AnimalSettingsBuilder { public AnimalSettings Build() public AnimalSettings Build() { animalConfiguration.DefaultAnimal = settingsNode.DefaultAnimalNode.Name; animalConfiguration.DefaultAnimal = settingsNode.DefaultAnimalNode.Name; foreach (AnimalNode animal in hierarchy.FindNodesByType(settingsNode, typeof(AnimalNode))) foreach (AnimalNode animal in hierarchy.FindNodesByType(settingsNode, typeof(AnimalNode))) { animalConfiguration.AnimalProviders.Add(animal.AnimalData); animalConfiguration.AnimalProviders.Add(animal.AnimalData); } return animalConfiguration; return animalConfiguration; }}

Implementing Configuration Reading Again, very easy because most of the code is already written Just need to add code to translate from existing configuration runtime objects into UI nodes and insert the UI nodes in correct place.

Implementing Configuration Reading public class AnimalSettingsNodeBuilder : NodeBuilder { public AnimalSettingsNode Build() public AnimalSettingsNode Build() { AnimalSettingsNode rootNode = new AnimalSettingsNode(); AnimalSettingsNode rootNode = new AnimalSettingsNode(); foreach (AnimalData animal in settings.AnimalProviders) foreach (AnimalData animal in settings.AnimalProviders) { AnimalNode providerNode = NodeCreationService.CreateNodeByDataType( animal.GetType(), new object[] { animal }) as AnimalNode; AnimalNode providerNode = NodeCreationService.CreateNodeByDataType( animal.GetType(), new object[] { animal }) as AnimalNode; rootNode.AddNode(providerNode); rootNode.AddNode(providerNode); if (animal.Name == settings.DefaultAnimal) if (animal.Name == settings.DefaultAnimal) rootNode.DefaultAnimalNode = providerNode; rootNode.DefaultAnimalNode = providerNode; } return rootNode; return rootNode; }}

Session Summary First webcast described how to implement your own runtime This webcast described how to implement a design time You are now fully qualified to implement and field your own Enterprise Library application block!

For More Information Microsoft patterns and practices sites

Final Farewell On a personal note, this is my final webcast as a member of the p&p team. I want to thank all of those with whom I have worked, all of you who have used our software, and the cast and crew that has enabled me to do these wonderful webcasts. This was a great 2-1/2 years, and I’ll remember it always.

Questions and Answers Submit text questions using the “Ask” button. Don’t forget to fill out the survey. For upcoming and previously live webcasts: Got webcast content ideas? Contact us at: Today's webcast was presented using Microsoft Office Live Meeting. Get a free 14- day trial by visiting: Today's webcast was presented using Microsoft Office Live Meeting. Get a free 14- day trial by visiting: