{"product_id":"net-best-practices-and-design-patterns-training","title":"Advanced C#, Design Patterns and Best Practices","description":"\u003cdiv\u003e\n\u003cp\u003eGain the skills needed to solve enterprise-level software programming problems to quickly deliver reliable applications that realize the value and quality goals of Agile development.\u003c\/p\u003e\r\n\u003cp\u003eIn part 1 you will identify and apply tactical design patterns to achieve SOLID results. This includes a cross section of patterns from lazy Singleton to delegate-based Strategy to leveraging the Task Parallel Library (TPL) using asynchronous adapters. Best practices include comprehensive coverage of automated Test-Driven Development (TDD) and modern techniques for paying down technical debt.\u003c\/p\u003e\r\n\u003cp\u003eIn part 2, strategic architectural patterns such as MVC and ORM are utilized to achieve \"separation of concerns\", an approach in which you will learn to write C# code that is much more maintainable, flexible and resilient. You will apply extended features, including definitive coverage Language Integrated Query (LINQ), to streamline the use of C# as both an object-oriented and a first-class data-manipulation language. This includes leveraging the Entity Framework (EF) in the highly portable and open .NET Core environment.\u003c\/p\u003e\r\n\u003cp\u003eThroughout the course, advanced and less-used features of C# are introduced as needed including specialized C# keywords, advanced lambda expressions, extension methods, generic classes and delegates, universal functions, dynamic enumeration and anonymous types. In particular, to optimize data access, productivity, and overall application performance.\u003c\/p\u003e\r\n\u003cul\u003e\u003c\/ul\u003e\n\u003c\/div\u003e\u003cdiv\u003e\n\u003ch3\u003eAdvanced C#, Design Patterns and Best Practices Benefits\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eIn this course, you will:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eSolve complex programming problems using tactical and strategic design patterns\u003c\/li\u003e\n\u003cli\u003eDeliver bug-free code using test-driven development (TDD)\u003c\/li\u003e\n\u003cli\u003eCreate layered architectures for reusability and to eliminate functional duplication\u003c\/li\u003e\n\u003cli\u003eApply the S.O.L.I.D. principles for better application design\u003c\/li\u003e\n\u003cli\u003eStreamline data-centric applications with C# extended features and the Entity Framework\u003c\/li\u003e\n\u003cli\u003eExploit LINQ keywords and full-stack capabilities including queries, grouping and joins\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cb\u003ePrerequisites\u003c\/b\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eConstructing, compiling, and executing C# applications using the Visual Studio integrated development environment.\u003c\/li\u003e\n\u003cli\u003eDesigning and implementing moderately complex programs in C#.\u003c\/li\u003e\n\u003cli\u003eApplying fundamental object-oriented development techniques, such as encapsulation, inheritance, interfaces, and polymorphism.\u003c\/li\u003e\n\u003cli\u003eDeveloping applications that leverage key components of the .NET framework library.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\u003cdiv\u003e\u003ch3\u003e.NET Course Outline\u003c\/h3\u003e\u003c\/div\u003e\u003cdiv\u003e\n\u003ch4\u003eLearning Objectives\u003c\/h4\u003e\n\u003cp\u003e\u003cb\u003eModule 1: Simplifying Complex Programming with Proven Design Patterns\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eApplying simple interfaces to intricate algorithms\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eUnifying interfaces from subsystems for ease of use and reusability\u003c\/li\u003e\n\u003cli\u003eImplementing the Façade, Observer and thread-safe lazy Singleton patterns\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 2: Automated Test-Driven Development\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eAutomating unit testing\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eShortening development cycles with automated tests\u003c\/li\u003e\n\u003cli\u003eEliminating regression errors with reusable tests\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eIntegrating testing and coding\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eApplying the test–first programming practice\u003c\/li\u003e\n\u003cli\u003eGenerating immediate red–green feedback for increased code quality and shortened feature development cycles\u003c\/li\u003e\n\u003cli\u003eOrganizing, coordinating and running test cases\u003c\/li\u003e\n\u003cli\u003eIsolating dependencies with the Mock–Object pattern for reliable and repeatable testing\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eRefactoring code to improve design\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eImproving design while ensuring correct behavior is preserved\u003c\/li\u003e\n\u003cli\u003eEliminating code duplication by refactoring using the Template Methods pattern and the Hollywood principle\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 3: Applying SOLID Principles\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eDesign by Interface\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eIdentifying objects by behavior, not type\u003c\/li\u003e\n\u003cli\u003eOrganizing state–rich applications with the State pattern\u003c\/li\u003e\n\u003cli\u003eRefactoring to achieve the Single Responsibility Principle\u003c\/li\u003e\n\u003cli\u003eMaintaining the Open-Closed Principle during development\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eInheritance vs. Aggregation\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eAdhering to Interface Segregation for code design\u003c\/li\u003e\n\u003cli\u003eApplying the Liskov Substitutability Principle to ensure correct inheritance\u003c\/li\u003e\n\u003cli\u003eChanging algorithms dynamically at run-time using the Strategy Pattern\u003c\/li\u003e\n\u003cli\u003eDependency injection vs. Dependency Inversion\u003c\/li\u003e\n\u003cli\u003eDeploying run-time Factory Patterns\u003c\/li\u003e\n\u003cli\u003eTemplate Methods and the Hollywood Principle\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 4: Threading and Concurrency\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eOrganizing long-running business logic\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eCapabilities of Task Parallel Library (Parallel.For and Parallel.Foreach)\u003c\/li\u003e\n\u003cli\u003eAsynchronous C# keywords\u003c\/li\u003e\n\u003cli\u003eCoding using the Awaitable-Awaiter Pattern\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 5: Separation of Concerns (Business Logic – Data)\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eObject-Relational Mapping (ORM)\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eCreating an effective Data Access Layer\u003c\/li\u003e\n\u003cli\u003eReducing User Interface code with Data Binding\u003c\/li\u003e\n\u003cli\u003eCentralizing data access using the lazy Repository pattern\u003c\/li\u003e\n\u003cli\u003eDetermining when to force eager loading\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eEasing data access code with the Entity Framework\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eMaintaining data context automatically\u003c\/li\u003e\n\u003cli\u003eReducing database access code by exploiting Entity Navigation Properties\u003c\/li\u003e\n\u003cli\u003eEliminating database update code with Entity change tracking\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 6: Separation of Concerns (View - Business Logic)\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eStrategic (Architectural) Design Patterns\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eDesigning with MVC, MVP and MVVM\u003c\/li\u003e\n\u003cli\u003eSimplifying complex highly-stateful logic with the State Pattern\u003c\/li\u003e\n\u003cli\u003eCoding controller objects for use with auto-generated entity objects\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 7: Harnessing Lesser-Used C# Language Features\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eLanguage shortcuts\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eApplying auto-implemented and lambda generated properties\u003c\/li\u003e\n\u003cli\u003eBenefiting from dynamic and implied-type declaration\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eStreamlining program logic\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eInstantiating entity objects\u003c\/li\u003e\n\u003cli\u003eSimplifying construction with object initializers\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eFiltering and ordering data with lambda expressions\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003ePassing lambda expressions to methods (behavior vs. data)\u003c\/li\u003e\n\u003cli\u003eCalling \u003cb\u003eCount, Reverse, Union, Except\u003c\/b\u003e and other extension methods\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eApplying extended features\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eMaking code more flexible with delegates\u003c\/li\u003e\n\u003cli\u003eParameterizing delegates and lambda expressions\u003c\/li\u003e\n\u003cli\u003eStreamlining code with \u003cb\u003eFunc\u0026lt;T,R\u0026gt;\u003c\/b\u003e generic delegates\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 8: Leveraging LINQ Query Keywords\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eSyntax and semantics\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eCoding LINQ queries\u003c\/li\u003e\n\u003cli\u003eFiltering with \u003cb\u003efrom\u003c\/b\u003e,\u003cb\u003e where\u003c\/b\u003e, \u003cb\u003eorderby \u003c\/b\u003eand\u003cb\u003e group\u003c\/b\u003e\n\u003c\/li\u003e\n\u003cli\u003ePerforming inner and outer \u003cb\u003ejoins\u003c\/b\u003e\n\u003c\/li\u003e\n\u003cli\u003eGenerating anonymous types\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eIterating collections\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eInterfacing between C# and LINQ using \u003cb\u003eIEnumerable\u0026lt;T\u0026gt; \u003c\/b\u003eand\u003cb\u003e IQueryable\u0026lt;T\u0026gt;\u003c\/b\u003e\n\u003c\/li\u003e\n\u003cli\u003eIssuing queries on entity and spatial types\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eConnecting to and reading from a database\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eInheriting \u003cb\u003eDbContext\u003c\/b\u003e objects\u003c\/li\u003e\n\u003cli\u003eCorrelating entity classes and data tables\u003c\/li\u003e\n\u003cli\u003eExecuting stored procedures and table-valued functions\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eObject Relational Mapping\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eEmploying code-first and database first mapping to generate entity classes\u003c\/li\u003e\n\u003cli\u003eOptimizing complex mapping including many to many and database inheritance\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eUpdating a database\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eInserting, updating and deleting data when Core is integrated with .NET Framework\u003c\/li\u003e\n\u003cli\u003eError handling and exceptions\u003c\/li\u003e\n\u003cli\u003eCommitting and rolling back transactions\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 9: Enumerations and Generic Classes\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eDynamic Enumeration\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eComparing \u003cb\u003eIEnumerable\u0026lt;T\u0026gt;\u003c\/b\u003e and \u003cb\u003eIEnumerator\u0026lt;T\u0026gt;\u003c\/b\u003e\n\u003c\/li\u003e\n\u003cli\u003eThe \u003cb\u003eyield\u003c\/b\u003e keyword\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003e\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eModule 10: Processing Data with LINQ Queries\u003c\/b\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cb\u003eAdvanced LINQ techniques\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eCreating anonymous query results\u003c\/li\u003e\n\u003cli\u003eRetrieving composite views using nested \u003cb\u003efrom\u003c\/b\u003e clauses\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cb\u003eReferential Integrity and Concurrency\u003c\/b\u003e\u003c\/p\u003e\n\u003cul type=\"disc\"\u003e\n\u003cli\u003eFirst-wins, Last-wins and everyone wins scenarios\u003c\/li\u003e\n\u003cli\u003eProtecting concurrency data corruption\u003c\/li\u003e\n\u003cli\u003eConcurrency detection and recovery\u003c\/li\u003e\n\u003cli\u003eTransaction Processing\u003c\/li\u003e\n\u003cli\u003eRecovering from Data Exceptions\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c\/div\u003e","brand":"Learning Tree","offers":[{"title":"267C12US \/ 2026-07-21T09:00:00 \/ Online","offer_id":47534215954651,"sku":"US-511-IL","price":2512.0,"currency_code":"USD","in_stock":true},{"title":"269C29US \/ 2026-09-15T09:00:00 \/ Herndon, VA","offer_id":48216556011739,"sku":"US-511-IL","price":2512.0,"currency_code":"USD","in_stock":true},{"title":"26BA84US \/ 2026-11-17T09:00:00 \/ Herndon, VA","offer_id":48216556044507,"sku":"US-511-IL","price":2512.0,"currency_code":"USD","in_stock":true},{"title":"271A93US \/ 2027-01-19T09:00:00 \/ Herndon, VA","offer_id":48216556077275,"sku":"US-511-IL","price":2512.0,"currency_code":"USD","in_stock":true},{"title":"273A72US \/ 2027-03-16T09:00:00 \/ Herndon, VA","offer_id":48377299796187,"sku":"US-511-IL","price":2512.0,"currency_code":"USD","in_stock":true},{"title":"275A73US \/ 2027-05-18T09:00:00 \/ Herndon, VA","offer_id":48780667715803,"sku":"US-511-IL","price":2512.0,"currency_code":"USD","in_stock":true}],"url":"https:\/\/learningtreeinternational-dirinfosec-hhs.myshopify.com\/products\/net-best-practices-and-design-patterns-training","provider":"Learning Tree International","version":"1.0","type":"link"}