ARCH-10: Modernizing Your Application through AppServer...

14
ARCH-10: Modernizing Your Application through AppServer-.Net Integration Chad Thomson Progress Exchange 2007 10-13 June, Phoenix, AZ, USA 1 1 ARCH ARCH- 10: 10: Modernizing Your Application Modernizing Your Application through AppServer through AppServer - .Net .Net Integration Integration Application integration made Application integration made simple simple 2 Modernizing Your Application Modernizing Your Application through AppServer through AppServer- .Net .Net Integration Integration Introductions Introductions Chad Thomson Chad Thomson Senior Technologist Senior Technologist Bravepoint, Inc. Bravepoint, Inc. [email protected] [email protected]

Transcript of ARCH-10: Modernizing Your Application through AppServer...

Page 1: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 2: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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?

Page 3: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 4: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 5: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 6: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 7: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 8: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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.

Page 9: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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.

Page 10: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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.

Page 11: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 12: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 13: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

Page 14: ARCH-10: Modernizing Your Application through AppServer ...download.psdn.com/media/exch_audio/2007/ARCH/ARCH-10_Thoms… · ARCH-10: Modernizing Your Application through AppServer-.Net

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

[email protected]

28