SlideShare a Scribd company logo
Soprex framework on .NET in action Milan Vukoje www.Vukoje.NET [email_address] August 8, 2011
Themes What is SCA? Why we built it? Architecture overview Domain objects Data Access Layer Business Layer Presentation layer Discussion
Typical business app  OLTP OLAP sync sync External sys
Why SCA for  Management ? Rapid Application Development Stability & Predictability Quality - error probability reduction High app performance Usable GUI Solving problem once User management Access Rights Translation Configuration …
Why SCA for Developers? Simple & Uniform solutions Configuration over custom code Simple test cases High code reuse Executable best practices Focus on BR
DEMO 1
Architecture overview Is “simply” easy to build? How to implement a  sure thing? SOA? First law of distributed object design:  - Don't distribute  your objects! Martin Fowler DB GUI PL BL DAL
Doman Objects (DO) The choice? Parameters (no DO) XML POCO DataTable Typed DataTable Linq to SQL Entity Framework The winner - POCO + DataTable DB GUI PL BL DAL DO
DO features [1] Simple API  State New Modified Unchanged Change Tracking Original values Change notification Change control Always Local only New Only DB GUI PL BL DAL DO
DO features [2] Validation Required  Max length Max/ Min value … Serializable Clone/Copy/Sync Optimized Generated from DB Integrated meta model Memory DO querying DB GUI PL BL DAL DO
Data Access Layer (DAL) Key focus is performance! Isolates DB Dependency DAAB Queries vs. Stored procedures Support for MS SQL and SQLite No T-SQL in API No abstract queries All non-trivial abstractions, to some degree, are leaky. Joel Spolsky DB GUI PL BL DAL
DAL features [1] CRUD Filtering  Filter composition Paging Paged searching (Default) Ordering Simple JOINs DB GUI PL BL DAL
DAL features [2] Batch saving & Importing Partitioned data loading Unique rule validation Unique key generation DB GUI PL BL DAL
Meta means murder Denormalized meta-model IsLocal CreatedOn CreatedBy UpdatedOn UpdatedBy Status IsLocked table columns have translatable description DBUtil – tool handling redundancy Soft Delete pros and cons  DB GUI PL BL DAL
Business Layer (BL) Implements BR Validates Data DB agnostic Concurrency control Pessimistic Optimistic  Child DO (lazy) loading Anemic DO vs. Rich DO DB GUI PL BL DAL
Services DB AppUserRights BL DAL AppProperties BL DAL AppTranslation BL DAL
DEMO 2
Presentation Layer (PL) Applies BR to GUI Editability Data size Converts GUI actions to BL  actions Coordinates data loading paging/sorting filter composition Controls access rights Controls actions availability Presenter BL Service Service Service PL PL PL
PL features Implements Presentation Logic Form customization Position Size Filter Gris Settings Translates messages Optimistic & Pessimistic concurrency Optimized Partial grid data loading Child data lazy loading DB GUI PL BL DAL
PL advantages Unit testable Keeps BR in BL Keeps PL out of GUI GUI agnostic Easy to have alternative GUI DB GUI PL BL DAL
GUI Data DO PO PL BIND BIND LOAD
GUI Binding – declarative sync Minimum amount of logic Built using designer (not generated) DB GUI PL BL DAL
Data Import DB Convert DataTable Import Respects user settings Reports format errors Async Fast Extensible Reports BL errors Data editable by User
Profiling Trace Production debugging Performance monitoring High performance Event Logger Reliable support notification Collects reproduction data User input Trace System state
More SCA features Export Excel, CSV, Text, XML, HTML Printing Word/PDF Mailing AppCache Offline app sync Record Attachments
Summary Frameworks are nice…  … but they cost money! Keep it simple, Stupid! (KISS) Don't repeat yourself! (DRY) Long live MVP! Don’t chaise technology
Patterns of Enterprise Application Architecture Application Architecture Guide 2.0 Framework Design Guidelines Resources
Questions Arguing with an Engineer is a lot like wrestling in the mud with a pig: After a few hours, you realize the pig likes it.
Thank you for your attention. Milan Vukoje www.Vukoje.NET [email_address]
Microsoft and Open Source gateway for deeper exploration of open source engagements http://www.microsoft.com/openness Port25 blogs from the platform community and the OSS Lab teams  http://Port25.technet.com Codeplex resources for developers and consumers of open source projects http://www.codeplex.com   Interoperability Bridges technical collaborative works  http://www.interoperabilitybridges.com   Open Up cross-Industry Interoperability and Standards activities http://www.microsoft.com/interop/openup   Shared Source portal for programmatically sharing code http://www.microsoft.com/sharedsource OData open source starter kit for Internet publishing of Government datasets using the Open Data http://ogdisdk.cloudapp.net Open Spec protocols, file formats, standards, technical specifications http://www.microsoft.com/openspecifications   BizSpark Program for Start-Up companies from both commercial and open source backgrounds http://www.microsoft.com/bizspark   Openness and Interoperability @Microsoft How can I receive up-to-date Openness announcements from Microsoft? In addition to the websites above, you can receive regular updates to Microsoft’s openness, interoperability and standards efforts via the following channels: http://blogs.technet.com/b/openness/   http://blogs.msdn.com/b/interoperability/   http://twitter.com/OpenAtMicrosoft   http://port25.technet.com   http://channel9.msdn.com/Blogs/Interoperability
Help us choose the best Sinergija lecturer!  Telekom Srbija  and Microsoft will award you – at the conference end,  we’ll give one HTC Mozart WP7 phone  to someone from the audience – randomly. Go to  www.mssinergija.net , log in and cast your votes.  Please rate this lecture  and  WIN HTC MOZART! You can rate only lectures that you were present at, just once.  More lectures you rate, more chances you have. Please use computers at the front of this room, or rate lecture from your phone or home computer, at Sinergija portal.  This prize contest will end at Thursday, October 20 th  at 9 PM.  Winner will be announced at the official Sinergija web portal, www.mssinergija.net is a friend of  Sinergija 2011  Conference  and  Imagine Cup  student competition  in Serbia.

More Related Content

PPT
Flex vs HTML5
PPTX
Ukfs Snr Dev Arch Forum Pres3 Re
PPTX
Ukfs Snr Dev Arch Forum Pres1 Jb
PPTX
IFML - Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
ODP
XPages: The Next Step In Your Life As A Notes Developer
PPTX
Ukfs Snr Dev Arch Forum Pres2 St
PPTX
Ms Cloud Day Closing - Harish
PPT
ArcReady - Scalable And Usable Web Applications
Flex vs HTML5
Ukfs Snr Dev Arch Forum Pres3 Re
Ukfs Snr Dev Arch Forum Pres1 Jb
IFML - Interaction Flow Modeling Language - tutorial on UI and UX modeling &...
XPages: The Next Step In Your Life As A Notes Developer
Ukfs Snr Dev Arch Forum Pres2 St
Ms Cloud Day Closing - Harish
ArcReady - Scalable And Usable Web Applications

What's hot (20)

PPTX
ArcReady - Architecting For The Client Tier
PPTX
A Case for Grails
PDF
Introduction to Force.com
PPT
Flex vs. HTML5 for RIAS
PPTX
MSDN Presents: Visual Studio 2010, .NET 4, SharePoint 2010 for Developers
PPT
What you need to know on Force.com in 10 slides
PDF
Domain Driven Design
PPTX
Sharepoint 2010: Practical Architecture from the Field
PDF
Cookbook for Building An App
PDF
Elements of DDD with ASP.NET MVC & Entity Framework Code First
PPT
Flex In Dot Net
PPTX
Dynamics CRM 2011 Architecture Overview
PDF
Intro to Force.com Webinar presentation
PDF
Domain Driven Design
PDF
End-to-end Model-driven Development of Applications with Eclipse using the ...
PPT
Software Development Trends 2010-2011
PDF
Evolving legacy to microservices and ddd
PPT
ENOVIA 3Dcom Architecture
PPT
Cross Platform Mobile Development: The Easy Way to Develop Native iPhone & An...
PPTX
Hybrid Integration with Dynamics CRM Online, Microsoft Azure Service Bus and ...
ArcReady - Architecting For The Client Tier
A Case for Grails
Introduction to Force.com
Flex vs. HTML5 for RIAS
MSDN Presents: Visual Studio 2010, .NET 4, SharePoint 2010 for Developers
What you need to know on Force.com in 10 slides
Domain Driven Design
Sharepoint 2010: Practical Architecture from the Field
Cookbook for Building An App
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Flex In Dot Net
Dynamics CRM 2011 Architecture Overview
Intro to Force.com Webinar presentation
Domain Driven Design
End-to-end Model-driven Development of Applications with Eclipse using the ...
Software Development Trends 2010-2011
Evolving legacy to microservices and ddd
ENOVIA 3Dcom Architecture
Cross Platform Mobile Development: The Easy Way to Develop Native iPhone & An...
Hybrid Integration with Dynamics CRM Online, Microsoft Azure Service Bus and ...
Ad

Similar to Soprex framework on .net in action (20)

PPTX
Microsoft Data Access Technologies
PPTX
Introduction to Telerik OpenAccess ORM
PPT
Introduction To Dot Net Siddhesh
PPTX
Real World API Design Using The Entity Framework Services
PDF
70487.pdf
PPTX
.NET Architecture for Enterprises
PPT
ADO.NET Data Services
PPTX
Entity Framework V1 and V2
PPT
Ado.Net Data Services (Astoria)
PPTX
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
PDF
X Aware Ajax World V1
PDF
App301 Implement a Data Access Layer with Ent Lib
PPTX
Чурюканов Вячеслав, “Code simple, but not simpler”
PPT
What's New for Data?
PDF
My cool new Slideshow!
PPT
L2s 090701234157 Phpapp02
PDF
e-SUAP - General software architecture (English)
PPTX
Getting started with entity framework
PPTX
.net Framework
PDF
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
Microsoft Data Access Technologies
Introduction to Telerik OpenAccess ORM
Introduction To Dot Net Siddhesh
Real World API Design Using The Entity Framework Services
70487.pdf
.NET Architecture for Enterprises
ADO.NET Data Services
Entity Framework V1 and V2
Ado.Net Data Services (Astoria)
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
X Aware Ajax World V1
App301 Implement a Data Access Layer with Ent Lib
Чурюканов Вячеслав, “Code simple, but not simpler”
What's New for Data?
My cool new Slideshow!
L2s 090701234157 Phpapp02
e-SUAP - General software architecture (English)
Getting started with entity framework
.net Framework
e-SUAP - Pubblicazione scientifica per evento Inista 2014 (International Symp...
Ad

More from Milan Vukoje (6)

PPTX
Juniori/Seniori
PPTX
State of the art logging
PPTX
Code Refactoring
PPTX
Coding Standard And Code Review
PPTX
Advanced unit testing – real life examples and mistakes
PPTX
Unit testing solid fundamentals
Juniori/Seniori
State of the art logging
Code Refactoring
Coding Standard And Code Review
Advanced unit testing – real life examples and mistakes
Unit testing solid fundamentals

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
sap open course for s4hana steps from ECC to s4
PDF
KodekX | Application Modernization Development
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Big Data Technologies - Introduction.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Encapsulation_ Review paper, used for researhc scholars
Diabetes mellitus diagnosis method based random forest with bat algorithm
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Empathic Computing: Creating Shared Understanding
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectral efficient network and resource selection model in 5G networks
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Unlocking AI with Model Context Protocol (MCP)
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Network Security Unit 5.pdf for BCA BBA.
sap open course for s4hana steps from ECC to s4
KodekX | Application Modernization Development
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Big Data Technologies - Introduction.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Dropbox Q2 2025 Financial Results & Investor Presentation
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Encapsulation_ Review paper, used for researhc scholars

Soprex framework on .net in action

  • 1. Soprex framework on .NET in action Milan Vukoje www.Vukoje.NET [email_address] August 8, 2011
  • 2. Themes What is SCA? Why we built it? Architecture overview Domain objects Data Access Layer Business Layer Presentation layer Discussion
  • 3. Typical business app OLTP OLAP sync sync External sys
  • 4. Why SCA for Management ? Rapid Application Development Stability & Predictability Quality - error probability reduction High app performance Usable GUI Solving problem once User management Access Rights Translation Configuration …
  • 5. Why SCA for Developers? Simple & Uniform solutions Configuration over custom code Simple test cases High code reuse Executable best practices Focus on BR
  • 7. Architecture overview Is “simply” easy to build? How to implement a sure thing? SOA? First law of distributed object design: - Don't distribute your objects! Martin Fowler DB GUI PL BL DAL
  • 8. Doman Objects (DO) The choice? Parameters (no DO) XML POCO DataTable Typed DataTable Linq to SQL Entity Framework The winner - POCO + DataTable DB GUI PL BL DAL DO
  • 9. DO features [1] Simple API State New Modified Unchanged Change Tracking Original values Change notification Change control Always Local only New Only DB GUI PL BL DAL DO
  • 10. DO features [2] Validation Required Max length Max/ Min value … Serializable Clone/Copy/Sync Optimized Generated from DB Integrated meta model Memory DO querying DB GUI PL BL DAL DO
  • 11. Data Access Layer (DAL) Key focus is performance! Isolates DB Dependency DAAB Queries vs. Stored procedures Support for MS SQL and SQLite No T-SQL in API No abstract queries All non-trivial abstractions, to some degree, are leaky. Joel Spolsky DB GUI PL BL DAL
  • 12. DAL features [1] CRUD Filtering Filter composition Paging Paged searching (Default) Ordering Simple JOINs DB GUI PL BL DAL
  • 13. DAL features [2] Batch saving & Importing Partitioned data loading Unique rule validation Unique key generation DB GUI PL BL DAL
  • 14. Meta means murder Denormalized meta-model IsLocal CreatedOn CreatedBy UpdatedOn UpdatedBy Status IsLocked table columns have translatable description DBUtil – tool handling redundancy Soft Delete pros and cons DB GUI PL BL DAL
  • 15. Business Layer (BL) Implements BR Validates Data DB agnostic Concurrency control Pessimistic Optimistic Child DO (lazy) loading Anemic DO vs. Rich DO DB GUI PL BL DAL
  • 16. Services DB AppUserRights BL DAL AppProperties BL DAL AppTranslation BL DAL
  • 18. Presentation Layer (PL) Applies BR to GUI Editability Data size Converts GUI actions to BL actions Coordinates data loading paging/sorting filter composition Controls access rights Controls actions availability Presenter BL Service Service Service PL PL PL
  • 19. PL features Implements Presentation Logic Form customization Position Size Filter Gris Settings Translates messages Optimistic & Pessimistic concurrency Optimized Partial grid data loading Child data lazy loading DB GUI PL BL DAL
  • 20. PL advantages Unit testable Keeps BR in BL Keeps PL out of GUI GUI agnostic Easy to have alternative GUI DB GUI PL BL DAL
  • 21. GUI Data DO PO PL BIND BIND LOAD
  • 22. GUI Binding – declarative sync Minimum amount of logic Built using designer (not generated) DB GUI PL BL DAL
  • 23. Data Import DB Convert DataTable Import Respects user settings Reports format errors Async Fast Extensible Reports BL errors Data editable by User
  • 24. Profiling Trace Production debugging Performance monitoring High performance Event Logger Reliable support notification Collects reproduction data User input Trace System state
  • 25. More SCA features Export Excel, CSV, Text, XML, HTML Printing Word/PDF Mailing AppCache Offline app sync Record Attachments
  • 26. Summary Frameworks are nice… … but they cost money! Keep it simple, Stupid! (KISS) Don't repeat yourself! (DRY) Long live MVP! Don’t chaise technology
  • 27. Patterns of Enterprise Application Architecture Application Architecture Guide 2.0 Framework Design Guidelines Resources
  • 28. Questions Arguing with an Engineer is a lot like wrestling in the mud with a pig: After a few hours, you realize the pig likes it.
  • 29. Thank you for your attention. Milan Vukoje www.Vukoje.NET [email_address]
  • 30. Microsoft and Open Source gateway for deeper exploration of open source engagements http://www.microsoft.com/openness Port25 blogs from the platform community and the OSS Lab teams http://Port25.technet.com Codeplex resources for developers and consumers of open source projects http://www.codeplex.com Interoperability Bridges technical collaborative works http://www.interoperabilitybridges.com Open Up cross-Industry Interoperability and Standards activities http://www.microsoft.com/interop/openup Shared Source portal for programmatically sharing code http://www.microsoft.com/sharedsource OData open source starter kit for Internet publishing of Government datasets using the Open Data http://ogdisdk.cloudapp.net Open Spec protocols, file formats, standards, technical specifications http://www.microsoft.com/openspecifications BizSpark Program for Start-Up companies from both commercial and open source backgrounds http://www.microsoft.com/bizspark Openness and Interoperability @Microsoft How can I receive up-to-date Openness announcements from Microsoft? In addition to the websites above, you can receive regular updates to Microsoft’s openness, interoperability and standards efforts via the following channels: http://blogs.technet.com/b/openness/ http://blogs.msdn.com/b/interoperability/ http://twitter.com/OpenAtMicrosoft http://port25.technet.com http://channel9.msdn.com/Blogs/Interoperability
  • 31. Help us choose the best Sinergija lecturer! Telekom Srbija and Microsoft will award you – at the conference end, we’ll give one HTC Mozart WP7 phone to someone from the audience – randomly. Go to www.mssinergija.net , log in and cast your votes. Please rate this lecture and WIN HTC MOZART! You can rate only lectures that you were present at, just once. More lectures you rate, more chances you have. Please use computers at the front of this room, or rate lecture from your phone or home computer, at Sinergija portal. This prize contest will end at Thursday, October 20 th at 9 PM. Winner will be announced at the official Sinergija web portal, www.mssinergija.net is a friend of Sinergija 2011 Conference and Imagine Cup student competition in Serbia.