Azure Functions have come a long way in a short time. With newer releases you can now create functions in Visual Studio using standard C# class files along with specific attributes to help define triggers, bindings, etc. This means that all the familiar powerful Visual Studio tools, workflows, NuGet packages, etc. can be used to develop Azure Functions. Visual Studio also provides publish support so you can upload your functions to the cloud once you are happy with them. Another feature that makes developing functions in Visual Studio easier is the local functions runtime that let’s you run and debug functions on your local development machine, without needing to publish to the cloud just to test them.
In my new Writing and Testing Precompiled Azure Functions in Visual Studio 2017 Pluralsight course you will learn how to:
- Set up your local development environment
- Develop and test Azure Functions locally
- Publish functions to Azure
- Create functions triggered from incoming HTTP requests
- Trigger functions from Azure Storage queues and blobs
- Trigger functions from Azure Service Bus and Azure Event Hubs
- Trigger functions periodically on a timer
- Unit test Azure Function business logic
Check out the full course outline for more details.
Azure Functions allow small discrete pieces of code to execute in response to an external stimulus such as a HTTP request, message queue message, new blob data, etc.
Just because functions are easy to create (even writing and testing code right in the Azure Portal) doesn’t mean good practices such as avoiding code duplication can be abandoned.
My new Pluralsight course Reducing C# Code Duplication in Azure Functions shows some ways to reduce or remove code duplication both in a single Function App and across apps.
Azure Functions allow small discrete pieces of code to execute in response to an external stimulus such as a HTTP request, message queue message, new blob data, etc. They can also be triggered manually from within the Azure Portal or set to execute on a specified schedule.
My new Azure Function Triggers Quick Start Pluralsight course shows how to get up to speed quickly with each of the function trigger types such as:
- Manual Triggers
- Azure Queue Storage Triggers
- Blob Triggers
- Timer Triggers
- HTTP Triggers
- Webhook Triggers
- Service Bus Triggers
- Event Hub Triggers
You can check out the course here.
Marten is a .NET document database library to allows objects to be stored, retrieved, and queried as documents stored as JSON in an underlying PostgreSQL database. This new course is a follow-on from the previous Getting Started with .NET Document Databases Using Marten course, if you’re new to Marten I’d recommend checking out the previous course first before continuing with this new one.
Among other topics, this new course covers how to log/diagnose the SQL that is being issued to PostgreSQL; how to enable offline optimistic concurrency; bulk document inserts; a number of ways to improve query performance; and the customization of database schema objects.
You can check out the new course on the Pluralsight site.
My latest Pluralsight course is now available for viewing. It demonstrates how to use the Scientist.NET library to execute candidate code in production alongside the existing production code. This allows the new candidate code to be additionally verified as able to work in production (for example with production data that may be of variable quality) and offers an additional check in addition to automated tests that have been executed in the development/QA environment.
From the course description: “Errors in production code can be costly to fix, more stressful for the development team, and frustrating for the end-user. In this course, Testing C# Code in Production with Scientist.NET, you will get to see how Scientist.NET allows sections of the application to be changed more safely by running both the existing code alongside the new code in production. You'll begin with an introduction to Scientist.NET before installing it and writing your first experiment. Next, you'll learn how to customize the configuration of experiments. Finally, you'll learn how to publish experiment data to SQL Server and analyze experiment results…”
You can check out the new course here.
My latest Pluralsight course is now available for viewing. It covers the fundamental aspects of working with nulls in C# code.
From the course description: “Unexpected null values and NullReferenceExceptions can be a constant source of bugs resulting in wasted time and out of hours support callouts. In this course, Working with Nulls in C#, you're going to learn about the different ways that null values pop up in C# code and how to deal with them. First, you're going to learn the fundamentals of why you get null values and the difference between value and reference types. Next you'll learn how you can use the various C# operators to check for and manipulate nulls. Finally, you'll learn how to think about nulls at a higher abstraction level in your object-oriented code. By the end of this course, you'll understand the different types of objects in C#, how to correctly create nullable value types, how to use C# operators to work with nulls with fewer lines of code, and how to implement the Null Object pattern to remove the need to write repetitive null checking code.”
You can check out the course here.
My Pluralsight course “Dynamic C# Fundamentals” is now available.
The course is split into 4 modules:
Module 1 introduces the dynamic features of C# and how it is enabled by the Dynamic Language Runtime (DLR).
Module 2 looks at numerous places that dynamic C# can be used including COM, XAML, MVC, and JSON.
Module 3 digs into more detail and shows how to create custom C# classes that can exhibit dynamic behaviour.
Module 4 shows how the DLR enables C# to interoperate with other dynamic languages such as IronPython.
Full list of topics:
1 Introducing Dynamic C#
- Why Dynamic C#?
- Course Outline
- Introducing the DLR
- Static and Dynamic Binding
- Dynamic Binding in Action and RuntimeBinderException
- Implicit Dynamic Conversions
- Var and Dynamic
- Runtime Method Resolution
- Dynamic and Object Types
- Limitations of Callable Methods
- Introducing ExpandoObject
- Refactoring to Dynamic
- Dynamically Adding ExpandoObject Behavior
2 Simplifying Code with Dynamic C#
- Simplifying Reflection Code
- Reducing Code with Unified Numeric Methods
- COM Interop Without Interop Assemblies
- Reducing Plumbing Code with Dynamic JSON
- Dynamically Populating Excel with Arbitrary JSON Data
- Dynamic JSON in Web API
- ExpandoObject and XAML Databinding
- Dynamic SQL Query Results with Dapper
- Improving SpecFlow Test Code with Dynamics
- Dynamic Code Considerations
3 Creating Custom Dynamic Classes
- Why Custom Dynamic Classes?
- The IDynamicMetaObjectProvider Interface
- The DynamicObject Base Class
- Creating a Dynamic HtmlElement Class
- Creating the First Test
- Adding Initial Dynamic Capabilities
- Dynamic Operation Exceptions
- Improving the Debugger Experience
- Overriding ToString
- Implementing Additional Interfaces
- Making the Dynamic Object Enumerable
- Implementing Dynamic Methods
- Method Invocation Precedence
- Invoking the Dynamic Object Itself
4 Interoperating with Dynamic Languages
- Why Dynamic Interop?
- Getting Started with IronPython
- Getting Scripting Input from the User
- Scripting Risks
- Executing Python Statements
- Interacting with Python Objects
- Passing Custom Dynamic Objects to Python
Check out the full course description.
SpecFlow is a tool that can translate natural language scenarios (e.g. writing in English or other spoken languages) into test code. This can allow business people, users, or other stakeholders to verify that the correct features are being built.
Selenium is a tool that allows test code (multiple programming languages supported) to automated a web browser. This allows the creation of automated UI tests that operate the web application as if an end user where doing it; for example clicking buttons and typing text into input boxes.
My new Pluralsight course shows how to integrate these two tools.
The course is organized into four modules:
- Introduction to Business Readable Web Testing
- Getting Started with Selenium
- Adding Business Readability with SpecFlow
- Creating More Maintainable Web Automation
If you’re new to SpecFlow I suggest watching this course first before moving on to Automated Business Readable Web Tests with Selenium and SpecFlow.
My newest Pluralsight course was just published. Business Readable Automated Tests with SpecFlow 2.0 teaches how to create tests that the business can read, understand, and contribute to. These “English-like” tests (other spoken languages are supported) can be executed by writing test code that is associated with the “English-like” steps. Because the tests sit alongside the source code, they can become living (executable) documentation for the system, as opposed to an out-of-date Word document somewhere on the network for example. Check out the course here.
My newest Pluralsight course “Getting Started Building Windows Services with Topshelf” has just been released.
Topshelf is an open source library that makes it easier to develop, test, and install Windows Services.
If you’re new to Windows Services, the course starts by introducing how Windows Services work and some of their features such as automatic service recovery and the ability to run in the background as different users.
The course then goes on to cover how to create a Windows Service with Topshelf as well as additional techniques such as debugging, logging, pause and continue and the ability to send custom commands to running services.
Check out the course link or browse all my Pluralsight courses.