Adopting .NET 5

Total Page:16

File Type:pdf, Size:1020Kb

Adopting .NET 5 Adopting .NET 5 Understand modern architectures, migration best practices, and the new features in .NET 5 Hammad Arif Habib Qureshi BIRMINGHAM—MUMBAI Adopting .NET 5 Copyright © 2020 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. Group Product Manager: Aaron Lazar Publishing Product Manager: Richa Tripathi Senior Editor: Nitee Shetty Content Development Editor: Ruvika Rao Technical Editor: Pradeep Sahu Copy Editor: Safis Editing Project Coordinator: Deeksha Thakkar Proofreader: Safis Editing Indexer: Pratik Shirodkar Production Designer: Jyoti Chauhan First published: December 2020 Production reference: 1291220 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-80056-056-7 www.packt.com To my wife, Sidrah, who assumed a disproportionate share of our responsibilities so that I could focus on this book. And to my children, Shanzay and Aaliyah, both of whom are now excited to resume playtime with me. – Hammad Arif I would like to dedicate these efforts to my beautiful wife for her support throughout my life, to my mother for my upbringing, and to my two children, who look up to their father and who one day will build on the things they aspire to and give back a lot to this wonderful world in which we live. – Habib Qureshi Packt.com Subscribe to our online digital library for full access to over 7,000 books and videos, as well as industry leading tools to help you plan your personal development and advance your career. For more information, please visit our website. Why subscribe? • Spend less time learning and more time coding with practical eBooks and videos from over 4,000 industry professionals • Improve your learning with Skill Plans built especially for you • Get a free eBook or video every month • Fully searchable for easy access to vital information • Copy and paste, print, and bookmark content Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at packt.com and, as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details. At www.packt.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on Packt books and eBooks. Contributors About the authors Hammad Arif is a passionate IT leader and speaker with over 16 years' experience in architecture, design, and implementing cutting-edge solutions to address business opportunities for enterprise applications. He earned his bachelor's degree in computer science and has previously worked as a solutions architect on Microsoft platforms. Based in Sydney, Hammad is currently leading a software development team that builds solutions on Azure and AWS platforms that serves all the top-tier financial institutions in Australia. Comparing my initial drafts with the final copy, I can see a noticeable improvement that would not have been possible without the expert guidance from the Packt editorial team. In particular, I'd like to thank Ruvika Rao for the painstaking effort of thoroughly ensuring content quality and proposing improvements, often multiple times. I also wish to thank my experienced co-author, Habib Qureshi. His advice was invaluable during every step of my first book authoring journey. Habib Qureshi is an integration architect and lead developer with almost two decades of professional experience in the software industry. He has worked with start-ups and enterprises, successfully delivering high-quality solutions in an agile manner. He has experience in multiple countries and cultures with on-site, off-site, and remote teams. He is a go-getter and teams always look up to him for technical reviews and solutions. First of all, I would like to thank Neha Sharma for reaching out to me at a time when I was ready to author another book. Next, I would like to thank all of the Packt team, who were very helpful and communicative from start to finish, especially Ruvika as the content editor, who was very interactive and helped us to reach our set targets on time. About the reviewers Omprakash Pandey, a Microsoft 365 consultant, has been working with industry experts to understand project requirements and work on the implementation of projects for the last 20 years. He has trained more than 50,000 aspiring developers and has assisted in the development of more than 50 enterprise applications. He has offered innovative solutions on .NET development, Microsoft Azure, and other technologies. He has worked for multiple clients across various locations, including Hexaware, Accenture, Infosys, and many more. He has been a Microsoft Certified Trainer for more than 5 years. Senthil Kumar is a Microsoft MVP in Visual Studio technologies. He is a co-author of the book Windows 10 Development Recipes Using JavaScript and CSS, published by Apress. Senthil has been working in the IT industry for over 9 years now and has had exposure to a variety of languages, including C#, JavaScript, PHP, and others. Packt is searching for authors like you If you're interested in becoming an author for Packt, please visit authors. packtpub.com and apply today. We have worked with thousands of developers and tech professionals, just like you, to help them share their insight with the global tech community. You can make a general application, apply for a specific hot topic that we are recruiting an author for, or submit your own idea. Table of Contents Preface Section 1: Features and Capabilities 1 Introducing .NET 5 Features and Capabilities Technical requirements 20 What are the .NET 5 headliners? 30 Evolution of .NET 21 Discovering self-contained applications 30 Discovering the distinguishing .NET 5 app trimming optimizations 33 factors in .NET versions 22 ReadyToRun 34 Understanding the advantages of one Developing programs for .NET 34 over the other 23 Performance improvements 35 What is the outlook for jumping Why performance is so important? 35 to .NET 5? 25 Performance improvements in .NET Types of applications developed versions 37 using .NET 26 Let's do some benchmarking 41 Web applications 26 .NET release schedule 48 Mobile development 27 .NET support life cycle 49 Desktop applications 27 .NET Framework support 50 Internet of Things 28 .NET Core support 50 Cloud-native development and microservices 28 Summary 51 Machine learning 28 Visual Studio solution templates for .NET 28 ii Table of Contents 2 What's New in C# 9? Technical requirements 54 Letting the new keyword infer the type Having prior knowledge of C# 54 for us 71 Embracing other productivity The .NET Framework enhancements 73 requirements to use C# 9 54 Leveraging performance Configuring LINQPad 6 for .NET 5 and improvements 78 C# 9 55 Introducing Span<T> 78 Understanding what's new in Choosing the winner – Substring C# 9 57 versus Slice showdown 79 Writing concise code with pattern Utilizing .NET library performance matching 58 improvements 81 Keeping track of changes – immutable records 65 Summary 81 Further reading 82 Section 2: Design and Architecture 3 Design and Architectural Patterns Technical requirements 86 communication 97 Why should we follow design Standard communication protocols 98 strategies? 86 Architectural patterns 99 Application design patterns 87 Monolith application architecture 100 Refreshing the GoF design patterns 87 Microservices architecture 101 Refresher of the SOLID design principles 89 Backend for Frontend (BFF) 102 Dependency injection 90 Serverless architecture 104 The Repository pattern 93 Enterprise Service Bus (ESB) 105 Communication styles and Distributed processing 106 protocols 97 Summary 110 Synchronous and asynchronous Table of Contents iii 4 Containerized Microservices Architecture Technical requirements 112 WSL as a Docker engine 126 Why overview other topics and What is Tye? 127 not just microservices? 113 Introduction to containerization The gRPC communication and container orchestration 127 protocol 113 What are some modern container HTTP/2 and Protobuf 114 fundamentals? 128 gRPC versus REST APIs versus SOAP 114 Kubernetes basics 130 What's new with gRPC in .NET 5? 116 Sample service proto file 116 Let's build a demo microservices application 132 What is WSL? 118 What is the application? 133 Installing WSL on your development Architecture for the demo application 133 machine 119 Developing the microservices Some useful VS Code-related application 136 extensions 122 Things to check before you start Summary 163 debugging with WSL 125 Further reading 164 Section 3: Migration 5 Upgrading Existing .NET Apps to .NET 5 Technical requirements
Recommended publications
  • Python Guide Documentation 0.0.1
    Python Guide Documentation 0.0.1 Kenneth Reitz 2015 11 07 Contents 1 3 1.1......................................................3 1.2 Python..................................................5 1.3 Mac OS XPython.............................................5 1.4 WindowsPython.............................................6 1.5 LinuxPython...............................................8 2 9 2.1......................................................9 2.2...................................................... 15 2.3...................................................... 24 2.4...................................................... 25 2.5...................................................... 27 2.6 Logging.................................................. 31 2.7...................................................... 34 2.8...................................................... 37 3 / 39 3.1...................................................... 39 3.2 Web................................................... 40 3.3 HTML.................................................. 47 3.4...................................................... 48 3.5 GUI.................................................... 49 3.6...................................................... 51 3.7...................................................... 52 3.8...................................................... 53 3.9...................................................... 58 3.10...................................................... 59 3.11...................................................... 62
    [Show full text]
  • Azure Integration Services Announcements from Ignite 2020
    Melb.NET Azure Integration Services Announcements from Ignite 2020 Bill Chesnut Cloud Platform & API Evangelist, SixPivot Azure MVP [email protected] @biztalkbill Agenda General Azure Logic Apps API Management Azure Functions BizTalk Server General • Azure Availability Zones now in Australia East • App Service introduces the new Pv3 SKU for Windows and Linux customers • App Service announces the general availability of Windows Container support • App Service Environment v3 in development--will launch November 1 • Azure Communication Services now available in public preview (US for now) Azure Logic Apps Logic Apps will now run on a new containerized runtime, the same runtime powering Azure Functions, providing hosting flexibility to: • Run on Functions, App Service, Kubernetes, Docker and any cloud. • Deploy multiple workflows to a single Logic App simplifying automated deployments and CI/CD pipelines. • Enable enterprise features such as private endpoints, simpler and more cost effective VNET access, deployment slots and more. • New VS Code Extension • Local Development • Improved Functions integration https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-logic-apps-runtime-performance-and-developer- improvements/ba-p/1645335 Azure Logic Apps (2) • Better CI/CD with VS Code. • New Designer (more on the screen, easier to understand) • Performance with Stateless • Automation Tasks (Logic Apps without building them) https://techcommunity.microsoft.com/t5/azure-developer-community-blog/new-logic-apps-runtime-performance-and-developer- improvements/ba-p/1645335 Azure API Management Debug API Management Policies in real time • Developer Tier Only • VS Code • Set breakpoints https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-apimanagement Support for Dapr applications in API Management • Using three new policies you can perform service invocations, dispatch messages to pub/sub topics, and send messages to external systems from a Dapr- enlightened self-hosted gateway.
    [Show full text]
  • NET Core 3 and Unit Testing
    Learn C# Programming A guide to building a solid foundation in C# language for writing efcient programs Marius Bancila Rafaele Rialdi Ankit Sharma BIRMINGHAM—MUMBAI Learn C# Programming Copyright © 2020 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every efort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. Commissioning Editor: Richa Tripathi Acquisition Editor: Alok Dhuri Senior Editor: Storm Mann Content Development Editor: Ruvika Rao Technical Editor: Pradeep Sahu Copy Editor: Safs Editing Language Support Editor: Safs Editing Project Coordinator: Francy Puthiry Proofreader: Safs Editing Indexer: Pratik Shirodkar Production Designer: Jyoti Chauhan First published: April 2020 Production reference: 1280420 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78980-586-4 www.packt.com To my smart boys, Cristian and Bogdan, who love learning new things every day.
    [Show full text]
  • 0672325756 A020601
    .NET Refresher A020601 .NET is the latest version of the component-based architec- ture that Microsoft has been developing for a number of years to support its applications and operating systems. As the name suggests, .NET provides a range of technologies specially designed to enable applications to be integrated across a network, often using XML as the glue between the different components. In turn, this helps it support many of the emerging standards for application in development, including UDDI, SOAP Messaging, WSDL, and other Web services standards to enable you to build XML Web services applications. The .NET Framework consists of the main technology components and libraries that support .NET application development. By using .NET, it’s possible to build a desktop application, a desktop interface to a Web applica- tion, or a Web application and still use the same toolkits and libraries. It’s even possible to convert a desktop appli- cation to a Web-based one and provide both application types by using the same core code base. The real benefit of .NET, however, is how it integrates with other applications and, more importantly, with other components within the .NET system. Existing application development models rely on compiling an application written in one language into a native format directly executable by the operating system and the underlying hardware. With .NET, application components are compiled from their native language (C++, Java, Perl) to run in the Common Language Runtime (CLR). This means that a single application can be made up of components written in a number of different languages—each component using the strengths of each language while simultaneously contributing toward a common goal.
    [Show full text]
  • Pdf for a Detailed Explanation, Along with Various Techniques for Debouncing
    MicroPython Documentation Release 1.11 Damien P. George, Paul Sokolovsky, and contributors May 29, 2019 CONTENTS i ii CHAPTER ONE MICROPYTHON LIBRARIES Warning: Important summary of this section • MicroPython implements a subset of Python functionality for each module. • To ease extensibility, MicroPython versions of standard Python modules usually have u (“micro”) prefix. • Any particular MicroPython variant or port may miss any feature/function described in this general docu- mentation (due to resource constraints or other limitations). This chapter describes modules (function and class libraries) which are built into MicroPython. There are a few categories of such modules: • Modules which implement a subset of standard Python functionality and are not intended to be extended by the user. • Modules which implement a subset of Python functionality, with a provision for extension by the user (via Python code). • Modules which implement MicroPython extensions to the Python standard libraries. • Modules specific to a particular MicroPython port and thus not portable. Note about the availability of the modules and their contents: This documentation in general aspires to describe all modules and functions/classes which are implemented in MicroPython project. However, MicroPython is highly configurable, and each port to a particular board/embedded system makes available only a subset of MicroPython libraries. For officially supported ports, there is an effort to either filter out non-applicable items, or mark individual descriptions with “Availability:” clauses describing which ports provide a given feature. With that in mind, please still be warned that some functions/classes in a module (or even the entire module) described in this documentation may be unavailable in a particular build of MicroPython on a particular system.
    [Show full text]
  • Introduction to Visual Studio Code
    Developing Multi- Platform Apps with Visual Studio Code Get up and running with VS Code by building multi-platform, cloud-native, and microservices- based apps Ovais Mehboob Ahmed Khan Khusro Habib BIRMINGHAM—MUMBAI Developing Multi-Platform Apps with Visual Studio Code Copyright © 2020 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every efort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing or its dalers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. Commissioning Editor: Richa Tripathi Acquisition Editor: Alok Dhuri Senior Editor: Nitee Shetty Content Development Editor: Tiksha Lad Technical Editor: Pradeep Sahu Copy Editor: Safs Editing Project Coordinator: Deeksha Takkar Proofreader: Safs Editing Indexer: Rekha Nair Production Designer: Joshua Misquitta First published: September 2020 Production reference: 1170920 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-83882-293-4 www.packt.com Packt.com Subscribe to our online digital library for full access to over 7,000 books and videos, as well as industry leading tools to help you plan your personal development and advance your career.
    [Show full text]
  • Comparison of C++ and C
    Comparison of C++ and C# Jim Fawcett CSE681 – Software Modeling and analysis Summer 2005 Table of Contents • Object Models • C# Language • C# Object Model • Common Type System • C# Object Type • Type Class • Class Browser in IDE • Delegates • Events • Threads • Assemblies • C# Libraries Both are Important • C++ has a huge installed base. • Your next employer is very likely to be a C++ house. • C# is gaining popularity very quickly. • But, your next employer may not yet do C#. • CSE681 – Software Modeling and Analysis • Focuses almost exclusively on C# and .Net. • CSE687 – Object Oriented Design: • Focuses almost exclusively on C++ and the Standard Library. Comparison of Object Models Contents • C++ Object Model • .Net Object Model • All objects share a rich memory model: • More Spartan memory model: • Static, stack, and heap • Value types are stack-based only. • Rich object life-time model: • Reference types (all user defined types • Static objects live of the duration of the and library types) live on the heap. program. • Non-deterministic life-time model: • Objects on stack live within a scope defined • All reference types are garbage collected. by { and }. • That’s the good news. • Objects on heap live at the designer’s • That’s the bad news. descretion. • Semantics based on a shallow reference • Semantics based on a deep copy model. model. • That’s the good news. • For compilation, client’s use their • That’s the bad news. server’s meta-data. • For compilation, clients carry their • That is great news. server’s type information. • It is this property that makes .Net • That’s definitely bad news.
    [Show full text]
  • Discovering Ironpython
    PART I Introducing IronPython ⊲⊲ CHAPTER 1: Discovering IronPython ⊲⊲ CHAPTER 2: Understanding the IronPython Basics COPYRIGHTED MATERIAL 548592c01.indd 1 2/24/10 12:47:07 PM 548592c01.indd 2 2/24/10 12:47:08 PM 1 Discovering IronPython WHAT’S IN THIS CHAPTER? ➤➤ Understanding why you want to add IronPython to your developer toolbox ➤➤ Obtaining and installing IronPython on your machine ➤➤ Understanding some underlying basics of how IronPython works ➤➤ Using IronPython at the console and within a window ➤➤ Designing and building a simple application IronPython: It sounds like some kind of metal snake infesting your computer, but it isn’t. IronPython is the .NET version of the open source Python language (http://www .python.org/). Python is a dynamic language that can greatly enhance your programming experience, help you create applications in less time, and make the applications you create significantly more responsive to user needs. Of course, you’ve heard these promises before from other languages. This chapter helps you understand how IronPython delivers on these promises in specific situations. The smart developer soon learns that every language serves specific needs and might not work well in others. So this chapter isn’t here to blow smoke at you — ​once you complete it, you’ll understand the strengths and weaknesses of IronPython. Of course, you’ll need to obtain a copy of IronPython before you can use it because Visual Studio doesn’t include IronPython as part of the default installation. This chapter helps you get IronPython installed on your system and tells you about some options you may want to install as well.
    [Show full text]
  • Comparative Studies of Six Programming Languages
    Comparative Studies of Six Programming Languages Zakaria Alomari Oualid El Halimi Kaushik Sivaprasad Chitrang Pandit Concordia University Concordia University Concordia University Concordia University Montreal, Canada Montreal, Canada Montreal, Canada Montreal, Canada [email protected] [email protected] [email protected] [email protected] Abstract Comparison of programming languages is a common topic of discussion among software engineers. Multiple programming languages are designed, specified, and implemented every year in order to keep up with the changing programming paradigms, hardware evolution, etc. In this paper we present a comparative study between six programming languages: C++, PHP, C#, Java, Python, VB ; These languages are compared under the characteristics of reusability, reliability, portability, availability of compilers and tools, readability, efficiency, familiarity and expressiveness. 1. Introduction: Programming languages are fascinating and interesting field of study. Computer scientists tend to create new programming language. Thousand different languages have been created in the last few years. Some languages enjoy wide popularity and others introduce new features. Each language has its advantages and drawbacks. The present work provides a comparison of various properties, paradigms, and features used by a couple of popular programming languages: C++, PHP, C#, Java, Python, VB. With these variety of languages and their widespread use, software designer and programmers should to be aware
    [Show full text]
  • Introducing .NET Standard @Dotnet @Aspnet September 26, 2016 by Immo Landwerth [MSFT] // 199 Comments
    Server & Tools Blogs > Developer Tools Blogs > .NET Blog Sign in .NET Blog A first-hand look from the .NET engineering teams Introducing .NET Standard @dotnet @aspnet September 26, 2016 by Immo Landwerth [MSFT] // 199 Comments Share 2K 1622 1175 Search MSDN with Bing Questions? Check out the .NET Standard FAQ. You can find the latest version of the Search this blog compatibility matrix here. Search all blogs In my last post, I talked about how we want to make porting to .NET Core easier. In this post, I’ll Tags focus on how we’re making this plan a reality with .NET Standard. We’ll cover which APIs we plan to include, how cross-framework compatibility will work, and what all of this means for .NET Core. .NET .NET Core If you’re interested in details, this post is for you. But don’t worry if you don’t have time or you’re not interested in details: you can just read the TL;DR section. .net framework .NET Update For the impatient: TL;DR announcement .NET Standard solves the code sharing problem for .NET developers across all platforms by bringing asp.net ASP.NET Core open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com asp.net all the APIs that you expect and love across the environments that you need: desktop applications, async azure c# clr mobile apps & games, and cloud services: bcl codegen .NET Standard is a set of APIs that all .NET platforms have to implement. This unifies the community .NET platforms and prevents future fragmentation.
    [Show full text]
  • Points-To and Side-Effect Analyses for Programs Built with Precompiled
    Points-to and Side-effect Analyses for Programs Built with Precompiled Libraries Atanas Rountev and Barbara G. Ryder Department of Computer Science, Rutgers University, Piscataway, NJ 08854, USA {rountev,ryder}@cs.rutgers.edu Abstract. Large programs are typically built from separate modules. Traditional whole-program analysis cannot be used in the context of such modular development. In this paper we consider analysis for programs that combine client modules with precompiled library modules. We define separate analyses that allow library modules and client modules to be analyzed separately from each other. Our target analyses are Andersen’s points-to analysis for C [1] and a side-effect analysis based on it. We perform separate points-to and side-effect analyses of a library module by using worst-case assumptions about the rest of the program. We also show how to construct summary information about a library module and how to use it for separate analysis of client modules. Our empirical results show that the separate points-to analyses are practical even for large modules, and that the cost of constructing and storing library summaries is low. This work is a step toward incorporating practical points-to and side-effect analyses in realistic compilers and software productivity tools. 1 Introduction Large programs are typically built from separate modules. Such modular devel- opment allows better software management and provides a practical compilation model: instead of (re)compiling large programs from scratch, compilers can per- form separate compilation of individual modules. This approach allows sharing of modules between programs; for example, an already compiled library module can be reused with no implementation or compilation cost.
    [Show full text]
  • State of .NET State of Azure
    State of .NET State of Azure Markus Egger President and Chief Software Architect CODE Magazine & Consulting CODE Magazine’s State of .NET - codemag.com/stateofdotnet Kicking Things Off Jim Duffy • Director of Business Development CODE Magazine & Consulting • Former Developer Now Responsible for Sales & Marketing • [email protected] • International Author and Speaker • Former Microsoft RD (Regional Director) 9 years • Former 11 time Microsoft Most Valuable Professional (MVP) • Twitter: @jmduffy Build Cross Platform Apps With Photino • Build native, cross-platform desktop apps that are lighter than light. • Lightweight open-source framework for building native, cross- platform desktop applications with Web UI technology. • Photino is maintained by the CODE Magazine team with the help of the open-source community. • tryphotino.io • Github.com/tryphotino Free Subscription to CODE Magazine! • The leading software development magazine written by expert developers for developers • All registered attendees will automatically receive a free digital subscription to CODE Magazine – no need to do anything, it’ll happen auto-magically •Please share this free subscription link: https://bit.ly/2QXUrpY About the Presenter • Markus Egger • President and Chief Software Architect EPS Software Corp. (dba CODE Consulting) • Publisher – CODE Magazine • International Author and Speaker • Microsoft RD (Regional Director) • Microsoft MVP 1995-2019 • Email: [email protected] • Twitter: @markusegger About CODE Consulting “Helping People Build Better Software” • Custom Software Development, Training, Mentoring,… • Web, Cloud, Mobile, Desktop, Serverless, Databases,… • User Interface and Interaction Design • Project Rescue, Legacy Conversions (VB, VFP, Access, etc.) • Development Team Staff Augmentation • Microsoft Certified Partner Your Ticket to Free Consulting • One hour on us. Really. Schedule a call today.
    [Show full text]