Structure and Guidance for Organizing Applications within Visual Studio Keith Elder Quicken Loans Manager, Sr. Software Engineer Microsoft MVP Keith a.

Slides:



Advertisements
Similar presentations
SharePoint 2010 Overview Presented by: Oscar Garcia
Advertisements

Unit 1: Overview of the Microsoft.NET Platform
SharePoint Forms All you ever wanted to know about forms but were afraid to ask.
Merit Consulting Terje Myrseth MUA – October 2008.
Distributed Systems 1 Topics  What is a Distributed System?  Why Distributed Systems?  Examples of Distributed Systems  Distributed System Requirements.
Adding scalability to legacy PHP web applications Overview Mario A. Valdez-Ramirez.
Introduction to CSLA.Net
UNIT-e Research & Development Microsoft Technology Day Stephen Cain (System Architect)
Enterprise Smart Clients Architecture, Patterns, Design, Best Practices Keith Elder Manager, Sr. Software Engineer Quicken Loans Blog:
Developing Smart Client Applications For The Enterprise Keith Elder Team Leader / Sr. Software Engineer Quicken Loans Blog:
Technical Architectures
Originally founded in 1985 as Rock Financial by Dan Gilbert Grew to one of the largest independent mortgage banks in the country 1998 IPO 1999 Launched.
Leveraging Enterprise Library in Your Applications Keith Elder Quicken Loans Manager, Sr. Software Engineer Microsoft MVP Keith a t keithelder dot net.
SharePoint 2010 First Look: What's new for Developers in Microsoft SharePoint 2010 Matthew McDermott, MVP Aptillon, Able
03 | Application Lifecycle Management Susan Ibach| Technical Evangelist Christopher Harrison | Head Geek.
RBNetERP or Enterprise Resource Planning is a software that allows companies to integrate all their operations and resources and manage them through one.
Open and save files directly from Word, Excel, and PowerPoint No more flash drives or sending yourself documents via Stop manually merging versions.
N-Tier Architecture.
Microsoft Share Point 2007 Lela Castaneda. Microsoft Office SharePoint Designer 2007 top 10 benefits 1)Be more productive with next-generation Microsoft.
Client/Server Architectures
© 2013 MPS Partners. All rights reserved. Current Trends in SharePoint Adoption MPS Partners SharePoint Adoption Survey 2012/2013.
Software Configuration Management (SCM)
MAT Inc. Ephphatha Studio …making your applications bepened Introducing… You need MS PowerPoint 2000 or later version for animation effects.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Las Vegas XNA Users Group. October 2007 MEETING! Presented by Charley Jones A+, MOUS, MCP, MCSA, MCSE, MCDBA, MCAD, MCT, PMP, ITIL MCTS: SQL Server 2005,
Keith Elder Microsoft MVP
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Nobody’s Unpredictable Ipsos Portals. © 2009 Ipsos Agenda 2 Knowledge Manager Archway Summary Portal Definition & Benefits.
© 2008 IBM Corporation ® IBM Cognos Business Viewpoint Miguel Garcia - Solutions Architect.
Composite User Interface Application Block Peter Provost Development Lead – patterns & practices
Version Control Systems with Subversion (SVN) and Tortoise.
Sage ACT! 2013 SDK Update Brian P. Mowka March 23, 2012 Template date: October 2010.
Chapter 8 Configuring and Managing Shared Folder Security.
Microsoft Management Seminar Series SMS 2003 Change Management.
Open Solutions for a Changing World™ Copyright 2005, Data Access Worldwide June 6-9, 2005 Key Biscayne, Florida 1 Application Deployment Stephen W. Meeley.
Getting Started with.NET Getting Started with.NET/Lesson 1/Slide 1 of 31 Objectives In this lesson, you will learn to: *Identify the components of the.NET.
UNDERSTANDING YOUR OPTIONS FOR CLIENT-SIDE DEVELOPMENT IN OFFICE 365 Mark Rackley
+ Publishing Your First Post USING WORDPRESS. + A CMS (content management system) is an application that allows you to publish, edit, modify, organize,
The World On-Line, Inc. Dynamic Solutions for Dynamic Companies The Missing Link: SBF Enhancement Series Don’t upgrade from SBF…Upgrade.
Rick Conrad Efrain Lopez III Saeed Noori. What is Experience Sampling? Survey method People’s experiences Real-time Format Paper and Pencil Handheld devices.
@GPUG WHAT’S NEW IN DYNAMICS GP 2016 ? Presented by Beat Bucher, Dynamics GP MVP 1 Tweet During today’s #GPUG, #GPUG.
Managing Database objects in Visual Studio and Team Foundation Server Presented by Sean P SQL Saturday - Phoenix 2016.
AX DEVELOPMENT FOR NON- DEVELOPERS Why did my 15 minute change take 3 weeks.
Developing SQL/Server database in Visual Studio Introducing SQL /Server Data Tools Peter Lu.Net Practices Director Principle Architect Nexient March 19.
Accounting Guru Cloud ERP (Enterprise Resource Planning) ERP Software https:
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
The Holmes Platform and Applications
People Inc. from P&A Software
J2EE Platform Overview (Application Architecture)
DevOps with ASP.NET Core and Entity Framework Core
L25 - PlantPAx Process Application Development Lab I
Polymorph Technologies Pte Ltd “ The Leader in Information Technology”
N-Tier Architecture.
Introduction to Kentico CMS
Visual Studio Tools for Office 2005
Haritha Dasari Josue Balandrano Coronel -
Maintaining software solutions
Introduction to Computers
Creating Custom Workflow Activities with Windows Workflow Foundation
Matt Masson Software Development Engineer Microsoft Corporation
People Inc. from P&A Software
Lecture 1: Multi-tier Architecture Overview
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
CAD DESK PRIMAVERA PRESENTATION.
Introduction to ASP.NET Parts 1 & 2
Mark Quirk Head of Technology Developer & Platform Group
The Future is Now with ASP.NET Core 3.0
Presentation transcript:

Structure and Guidance for Organizing Applications within Visual Studio Keith Elder Quicken Loans Manager, Sr. Software Engineer Microsoft MVP Keith a t keithelder dot net Blog:

Quicken Loans

About Quicken Loans  Originally founded in 1985 as Rock Financial by Dan Gilbert  Grew to one of the largest independent mortgage banks in the country  1998 IPO  1999 Launched Rockloans.Com  1999 Intuit, Inc (makers of TurboTax and Quicken) purchased Rock Financial.  July 2002 Dan Gilbert purchased Quicken Loans back from Intuit. Retained Quicken Loans branding and marketing initiatives.  4500 employees  Largest online retail home loan lender

Deep Fried Bytes is an audio talk show with a Southern flavor hosted by technologists and developers Keith Elder and Chris Woodruff. The show discusses a wide range of topics including application development, operating systems and technology in general. Anything is fair game if it plugs into the wall or takes a battery.Keith Elder Chris Woodruff

Take Aways  Covering the basics of solutions and projects  Things to consider before setting up your projects  Configuring the project  Initial project creation  Organizing our project  Handling Third Party Assemblies

Why Should We Care About How We Organize Our Projects  Localize Changes  Minimizes impact on other parts  Eases application maintenance  Enhances overall flexibility  Separation of Concerns  Example: UI, data access, business logic  Flexibility, maintainability, scalability  Components should be reusable  Independent teams should be able to work on parts of solution with minimal dependencies on other teams

Ever seen projects that look like this? Enhances overall flexibility Eases application maintenance Minimizes impact on other parts Your Mom Was Right! User Interface Database Business Logic Web Services Mobile Components How about this?

ELDERISM Messy projects take longer to understand and will only get messier.

Task: Take my water hose and setup a sprinkler in my yard. This is how your code looks to new team members if you don’t think about structure. Being organized makes maintenance and future growth easier. It is easier to be messy. Takes higher level thought to be organized.

The Joy of Wallowing in a Perfect Mess

What did we learn? Localize Changes Separate Concerns Help your team members a r O rg ai n z at iO n m t t e s ORGANIZATION MATTERS

Basics

Projects and Solutions Projects – all files belong to a project LibraryWindows FormComponent Solutions – are what you deploy Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer Web Application Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer Windows Application

Example Solution Projects Solution Folders

Three Solution Types

Single Solution Visual Studio Solution Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer Really Cool Piece of Software

Single Solution  Single  Advantages  Leverage project references  Simplified build process  Disadvantages  Development takes longer on larger projects  Build wait times increase  Model scales only so far  Even minor (non-breaking) changes to a single source file within a single project can result in a rebuild of many projects within the solution, due to project dependencies.

Multiple Solutions D E F C A B

 Multiple  Advantages  Limit work to small subsystems  Solution explorer remains less cluttered  Leverage project references in each solution  Master solution allows you to easily rebuild the entire system  Disadvantages  When new projects are created you need to add the project to multiple solution files.

This is your continuous integration build. Master Solution Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer Interface Accounts Payable Common Accounts Receivable Payroll Inventory Data Layer Interface Components Common Payroll Business Layer Inventory Data Layer Common Accounts Receivable Business Layer Inventory

Before you write a single line of code

It Starts With The Namespace CompanyTeamProductLayerCompanyProductModuleLayerExamplesMicrosoftPracticesEnterpriseLibraryWidgetsRUsHelpdesk

Where do these projects go?

Folder Structure For Application ModuleModule Project FoldersProject Folders Project Folder

ELDERISM Adding a project to a late project makes it later. The Mythical Man-Month, Fred Brooks, “Adding manpower to a late software project makes it later. “

Where are the solution files? CI Helpdesk Service Master Web Master Mobile Master WinForm

Real world example Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer WEB Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer Interface Components Accounts Payable Common Accounts Receivable Payroll Business Layer Inventory Data Layer MOBILESERVICESMART CLIENT Database DataLayer Business Workflow

Those pesky third party assemblies

Third Party Assemblies Allows you to version libraries. On larger projects the whole system may not change at once. Projects use a relative path of:../../../ Developers can checkout source control and do a build And, so can your automated build server! Can put DLL here, wouldn’t recommend strong named assemblies.

Did you test it though?

Tests Each project should have a corresponding tests project. While it doesn’t matter *where* you put your tests projects, we’ve found it easier to deal with them all in one location. Pick a standard, stick to it.

Demo Creating Our Application: SkunkWorks ERP

Resources  My Blog      Keith a t keithelder dot net  Resources  (team development with visual studio)