ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
1
1
ARCHARCH--10: 10: Modernizing Your Application Modernizing Your Application
through AppServerthrough AppServer™™--.Net.Net™™
Integration Integration
Application integration made Application integration made simplesimple
2
Modernizing Your Application Modernizing Your Application through AppServerthrough AppServer--.Net .Net
IntegrationIntegration
IntroductionsIntroductionsChad ThomsonChad ThomsonSenior TechnologistSenior TechnologistBravepoint, Inc.Bravepoint, [email protected]@bravepoint.com
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
2
3
AgendaAgenda
•• OverviewOverview•• Best Practice Discussion Best Practice Discussion •• BackgroundBackground•• Solution Design WalkSolution Design Walk--ThroughThrough•• Closing statementsClosing statements
4
OverviewOverviewDiscussion of Architecture and Design Best PracticeDiscussion of Architecture and Design Best Practice•• OpenEdgeOpenEdge®® best practice (OERA)best practice (OERA)•• Application design and company best practiceApplication design and company best practice
Goals and Demonstration of the designGoals and Demonstration of the design•• Simple Starting Point for Open IntegrationSimple Starting Point for Open Integration•• Standardized OpenAPI Proxy InterfaceStandardized OpenAPI Proxy Interface•• Methods for CRUD (Create Read Update Delete) operationsMethods for CRUD (Create Read Update Delete) operations•• Allow extensibility and customizationAllow extensibility and customization
Future direction of MethodologyFuture direction of Methodology•• Where can this methodology go?Where can this methodology go?•• What types of functionality can be added to this practice?What types of functionality can be added to this practice?•• Is this going to hinder my ability to adapt OERA standards?Is this going to hinder my ability to adapt OERA standards?
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
3
5
AgendaAgenda
•• OverviewOverview•• Best Practice Discussion Best Practice Discussion •• BackgroundBackground•• Solution Design WalkSolution Design Walk--Through Through •• Closing statementsClosing statements
6
Best Practice: If you only knewBest Practice: If you only knew……•• Current Prescribed BestCurrent Prescribed Best--Practice: OpenEdge Reference ArchitecturePractice: OpenEdge Reference Architecture•• Possibly perceived to be too technical Possibly perceived to be too technical •• May not necessarily suited for your situationMay not necessarily suited for your situation
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
4
7
Best Practice: Best Practice: ……itit’’s good for yous good for you
•• If the best practice solution is not completely If the best practice solution is not completely understood, how does it help you?understood, how does it help you?– “Should I switch to developing OO ABL?”
•• Your design requirements dictate the best Your design requirements dictate the best practicepractice– Identify the issues and design the solution– Don’t adhere to a solution and try fit it each
requirement into it.•• Thought migration: learn to crawl, walk, then Thought migration: learn to crawl, walk, then
run!run!– Simple doesn’t mean it’s wrong
8
AgendaAgenda
•• OverviewOverview•• Best Practice DiscussionBest Practice Discussion•• BackgroundBackground•• Solution Design WalkSolution Design Walk--ThroughThrough•• Closing statementsClosing statements
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
5
9
BackgroundBackground
•• V7V7--style Progressstyle Progress®® CHUI ApplicationCHUI Application•• V7V7--style DB Designstyle DB Design
– Very “wide” table design– Not necessarily normalized to any effective degree
outside of proprietary requirements•• V9 Progress GUI and Webspeed interfaceV9 Progress GUI and Webspeed interface
– GUI Utilized AppServer in an ASP model•• Mostly maintenanceMostly maintenance--style Progress developersstyle Progress developers•• Some strong 4GL knowledgeSome strong 4GL knowledge•• Very skilled .Net developersVery skilled .Net developers
10
Background: ContBackground: Cont’’dd
•• Development pushed ahead with Development pushed ahead with VB.Net GUI interfaceVB.Net GUI interface– OOP class-based development
•• Progress SQLProgress SQL--92 interface used to 92 interface used to retrieve data from ERP data sourceretrieve data from ERP data source
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
6
11
Background: IssuesBackground: Issues
•• OpenEdge SQLOpenEdge SQL--92 Interface92 Interface– Is *not* MS SQL– With a “legacy” DB design, high number of “join”
constraints will show limitations quickly• DB well-tuned• Server well-tuned• Still desired quicker response times
•• How to How to ““migratemigrate”” ABL business logic to VB?ABL business logic to VB?– Possibility of SQL stored procedures in MSSQL DB
• Rewrite in T-SQL or VB assemblies (extended stored procedures)?
12
AgendaAgenda
•• OverviewOverview•• Best Practice Discussion Best Practice Discussion •• Background Background •• Solution Design WalkSolution Design Walk--ThroughThrough•• Closing statementsClosing statements
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
7
13
Solution: RequirementsSolution: Requirements
•• Results from Requirement gatheringResults from Requirement gathering– Need high-volume data retrieval from ERP data source– Transaction management, spanning multiple requests– Quick Response times– Ability to re-use existing ABL business logic to a lesser
degree– VB application will be front-end
•• Leverage Existing resourcesLeverage Existing resources– AppServer licenses are available!– Very skilled .Net developers with minimal ABL– Progress developers with limited .Net
14
Solution: DesignSolution: Design•• Replace SQLReplace SQL--92 calls with the .Net Open Client API to interface to 92 calls with the .Net Open Client API to interface to
existing AppServerexisting AppServer
OpenEdgeAppServer
Data Access and Business Logic
OpenClientProxy
.NET User InterfaceJonas Grumby110 Desert Isle PathMinnow, HI
OKCancel
OpenEdge.NET Interface
OE DB DataSource
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
8
15
Solution: AppServer InterfaceSolution: AppServer Interface
•• Keep Stateless natureKeep Stateless nature– Running a procedure PERSISTENT on a stateless
AppServer session is to be avoided• This binds the session for the life of the procedure• The session is unbound when the procedure instance
is deleted
•• Client Connections MaintainedClient Connections Maintained– The clients would establish connections to the
AppServer Broker, but would not bind to an agent (by any means) unless absolutely necessary.
16
Solution: AppServer StartupSolution: AppServer Startup•• PrePre--load persistent/super library objects during AS startup.load persistent/super library objects during AS startup.•• This virtually eliminates unnecessary runThis virtually eliminates unnecessary run--time overhead during time overhead during
loading of libraries.loading of libraries.•• Eliminates necessity of Eliminates necessity of ““bindingbinding”” AppServer session upon each AppServer session upon each
request.request.
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
9
17
Solution: AppServer ProceduresSolution: AppServer Procedures
18
Solution: Data Access ModelSolution: Data Access Model
The Data Access Model is controlled by methods exposed in the session super-procedure dbMethods.p.
Customizable events are published to allow for auxiliary processing, not just pre/post processing.
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
10
19
Solution: Business Entity ModelSolution: Business Entity Model
The primary function of the design is data access, and may be considered similar to the Data Access Objects of the OERA.
20
Solution: Business Entity ExampleSolution: Business Entity Example
The objects developed to invoke the Data Access methods may also provide methods for a specific data-related task.
This may be considered similar to the Business Entity of the OERA.
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
11
21
Solution: OpenAPI ProxySolution: OpenAPI Proxy
•• In order to access internal procedures, In order to access internal procedures, needed to load needed to load ““stubstub”” *persistent**persistent*– Even though this binds the agent, the client
design standard illustrates that once the library is loaded and the method executed, the library is to be un-loaded.
– Due to the relatively small size of the stub procedure, loading is very quick.
– The AppServer is tied-up for virtually the same duration as a completely stateless call.
22
Solution: OpenAPI ProxyGenSolution: OpenAPI ProxyGen
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
12
23
Solution: .Net DemonstrationSolution: .Net Demonstration
24
AgendaAgenda
•• OverviewOverview•• Best Practice Discussion Best Practice Discussion •• Background Background •• Solution Design WalkSolution Design Walk--ThroughThrough•• Closing StatementsClosing Statements
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
13
25
Closing StatementsClosing Statements•• Best PracticeBest Practice
– Best practice is: what is best for you
•• ArchitectureArchitecture– Any path selected, even the simplest one, can still be correct. Just
make sure that some forward thought is done to make sure you’re not heading for a dead-end design again.
•• Where can you take this method?Where can you take this method?– If all this makes sense then moving toward the OERA standard
approach should be straight-forward.– At minimum, alter the procedures to use ProDataSets instead of
temp-tables to provide relational data retrieval.– Consider producing logic/entity procedures that get initialized on the
AppServer session, then referenced on subsequent calls.– Context management
26
ReferencesReferences
•• ReferencesReferences– PSDN
www.psdn.com• forums:
www.psdn.com/library/forumindex.jspa• Application Architecture Made Simple
www.psdn.com/library/entry.jspa?categoryID=230&externalID=2462
– PEG• www.peg.com
– Oehive.org• www.oehive.org
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson
Progress Exchange 2007 10-13 June, Phoenix, AZ, USA
14
27
Modernizing Your Application Modernizing Your Application through AppServerthrough AppServer--.Net .Net
IntegrationIntegration
Contact Information:
Chad Thomson
28
Top Related