ASP.NET Core Mastery: Intermediate Skills

it courses

Contents

Middleware and Request Pipeline

Welcome to the "ASP.NET Core Mastery: Intermediate Skills" tutorial! This tutorial is designed for developers who have a basic understanding of ASP.NET Core and are looking to enhance their skills by diving into more advanced topics. Our goal is to help you build efficient, secure, and maintainable web applications using the latest ASP.NET Core techniques.

As you progress through this tutorial, you'll learn practical approaches to working with middleware and the request pipeline, which are essential concepts for building robust ASP.NET Core applications. By understanding these concepts, you'll be better equipped to manage the flow of HTTP requests and responses within your application.

Understanding Middleware in ASP.NET Core

Middleware is a key component of the ASP.NET Core architecture. It allows you to configure and control the request pipeline by adding or removing components responsible for handling various aspects of the HTTP request and response process. Middleware components can be used for a wide range of tasks, such as logging, authentication, caching, and error handling.

To get started with middleware, follow these steps:

  • Create a new middleware component by implementing the IMiddleware interface or defining a middleware delegate.
  • Configure the middleware in the Configure method of the Startup class using the IApplicationBuilder extension methods, such as Use, Map, and Run.
public void Configure(IApplicationBuilder app)
{
    app.Use(async (context, next) =>
    {
        // Pre-request processing
        await next.Invoke(); // Call the next middleware in the pipeline
        // Post-request processing
    });

    app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Hello, World!");
    });
}

Request Pipeline in ASP.NET Core

The request pipeline in ASP.NET Core is a series of middleware components that are executed in a specific order, defined by the order in which they're added to the IApplicationBuilder in the Configure method. Each middleware component can decide whether to pass the request to the next component in the pipeline or short-circuit it and directly generate the response.

By understanding and effectively managing the request pipeline, you'll be able to create highly efficient and scalable applications. As you practice building your own middleware components and configuring the request pipeline, you'll gain valuable hands-on experience with this essential aspect of ASP.NET Core development.

In the next sections of this tutorial, we'll explore more advanced topics, such as dependency injection, model binding, and Razor Pages, to further enhance your ASP.NET Core programming skills. Keep up the great work, and remember that the key to success is consistent learning and practice!

Dependency Injection and Services

Dependency Injection (DI) is a powerful technique for managing dependencies between components in your application, promoting loose coupling and maintainability. In this tutorial, we'll explore the built-in Dependency Injection system in ASP.NET Core and learn how to work with services effectively.

Understanding Dependency Injection in ASP.NET Core

ASP.NET Core has a built-in, lightweight Dependency Injection container that makes it easy to manage the dependencies between your application's components. This DI container is responsible for creating and managing the lifetimes of services, which are objects that provide functionality to other parts of your application.

To get started with Dependency Injection in ASP.NET Core, follow these general steps:

  • Create a service by defining an interface and a corresponding implementation class.
  • Register the service with the DI container in the ConfigureServices method of the Startup class, specifying its lifetime (singleton, scoped, or transient).
  • Use constructor injection to request the service in your controllers, middleware, or other components.
// Define a service interface
public interface IMyService
{
    string GetMessage();
}

// Implement the service
public class MyService : IMyService
{
    public string GetMessage()
    {
        return "Hello, Dependency Injection!";
    }
}

// Register the service in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IMyService, MyService>();
}

// Use the service in a controller
public class HomeController : Controller
{
    private readonly IMyService _myService;

    public HomeController(IMyService myService)
    {
        _myService = myService;
    }

    public IActionResult Index()
    {
        ViewBag.Message = _myService.GetMessage();
        return View();
    }
}

Working with Services Effectively

Understanding how to work with services effectively is crucial for building scalable and maintainable applications. Here are some best practices for using services in your ASP.NET Core applications:

  • Encapsulate functionality: Organize your code into services that each have a single responsibility, making it easier to maintain, test, and reuse.
  • Use interfaces: Define your services using interfaces to decouple the implementation details from the components that depend on them, enabling easier testing and swapping of implementations.
  • Choose appropriate lifetimes: Select the appropriate service lifetime (singleton, scoped, or transient) based on the required behavior and resource usage.

By learning Dependency Injection and effectively working with services, you'll be able to create more modular and maintainable applications in ASP.NET Core. In the next sections of this tutorial, we'll explore more advanced topics, such as model binding, Razor Pages, and Web API development, to further enhance your skills and help you become a proficient ASP.NET Core developer.

Model Binding and Validation

Model binding and validation are essential features of ASP.NET Core that simplify the process of working with user input and ensuring data consistency. In this tutorial, we'll explore how to use model binding to automatically map user input to model objects, as well as how to implement validation to enforce business rules and data integrity.

Model Binding in ASP.NET Core

Model binding in ASP.NET Core allows you to automatically map user input from HTTP requests to model objects, making it easier to work with data in your application. Model binding works with various data sources, such as query strings, route data, and form data, and supports complex object hierarchies and collections.

To use model binding in your application, follow these steps:

  • Create a model class to represent the data you want to bind.
  • Use model binding attributes, such as [FromQuery], [FromRoute], and [FromBody], to specify the source of the data in your action methods.
  • Include the model class as a parameter in your action method, and ASP.NET Core will automatically bind the data from the request to the model object.
public class ProductViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

public class ProductsController : Controller
{
    [HttpPost]
    public IActionResult Create(ProductViewModel product)
    {
        // Process the product data
        return RedirectToAction("Index");
    }
}

Validation in ASP.NET Core

Validation is crucial for ensuring data integrity and enforcing business rules in your application. ASP.NET Core provides built-in support for validation using data annotations, which allow you to define validation rules directly on your model classes.

To implement validation in your application, follow these steps:

  • Add validation attributes, such as [Required], [StringLength], and [Range], to the properties of your model classes.
  • In your action methods, use the ModelState.IsValid property to check if the model data is valid according to the defined validation rules.
  • In your views, use validation tag helpers to display validation error messages for individual properties and the overall model.
public class ProductViewModel
{
    [Required]
    public int Id { get; set; }

    [Required]
    [StringLength(100)]
    public string Name { get; set; }

    [Range(0, 9999.99)]
    public decimal Price { get; set; }
}

public class ProductsController : Controller
{
    [HttpPost]
    public IActionResult Create(ProductViewModel product)
    {
        if (ModelState.IsValid)
        {
            // Process the product data
            return RedirectToAction("Index");
        }

        return View(product);
    }
}

By understanding and effectively using model binding and validation, you'll be able to create more user-friendly and robust applications in ASP.NET Core. In the upcoming sections of this tutorial, we'll explore more advanced topics, such as Razor Pages, Web API development, and securing your application with authorization policies, to further enhance your ASP.NET Core programming skills.

Razor Pages and View Components

In this tutorial, we'll delve into Razor Pages and View Components, two powerful features of ASP.NET Core that enable you to create clean, modular, and maintainable web applications. Razor Pages simplifies the process of building and organizing page-focused scenarios, while View Components offer a reusable way to handle parts of your views that require complex rendering logic.

Razor Pages in ASP.NET Core

Razor Pages is a feature of ASP.NET Core that provides a simpler way to organize your application's UI layer, particularly for page-focused scenarios. Each Razor Page consists of a Razor view file (.cshtml) and an associated Page Model class (.cs), which contains the server-side logic for the page. Razor Pages promotes a clean separation of concerns and makes it easier to manage your application's UI layer.

To get started with Razor Pages, follow these steps:

  • Create a new Razor Pages project or add the required NuGet package and configure your existing project to support Razor Pages.
  • Add a new Razor Page to your project by creating a .cshtml file and an associated Page Model class that inherits from PageModel.
  • Use Razor syntax to define the HTML and C# code in your Razor Page, and implement server-side logic in the Page Model class.
// Index.cshtml
@page
@model MyRazorPagesApp.Pages.IndexModel

<h1>Hello, Razor Pages!</h1>

// Index.cshtml.cs
namespace MyRazorPagesApp.Pages
{
    public class IndexModel : PageModel
    {
        public void OnGet()
        {
            // Server-side logic for handling the GET request
        }
    }
}

View Components in ASP.NET Core

View Components are a powerful feature of ASP.NET Core that allows you to create reusable components for your views, particularly for scenarios that require complex rendering logic or data access. View Components are similar to partial views, but they have their own model binding and lifecycle, making them more modular and testable.

To create a View Component, follow these steps:

  • Define a class that inherits from ViewComponent and implements the InvokeAsync method.
  • Create a Razor view file (.cshtml) for your View Component in the Views/Shared/Components folder.
  • Use the @await Component.InvokeAsync method to render your View Component in your views.
// MyViewComponent.cs
public class MyViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync()
    {
        // Retrieve data and perform any necessary processing
        var data = await GetDataAsync();
        return View(data);
    }
}

// Views/Shared/Components/MyViewComponent/Default.cshtml
<h2>My View Component</h2>

// Usage in a view
@await Component.InvokeAsync("MyViewComponent")

By learning Razor Pages and View Components, you'll be able to create more organized, modular, and maintainable web applications in ASP.NET Core. In the next sections of this tutorial, we'll explore more advanced topics, such as Web API development, securing your application with authorization policies, and advanced Entity Framework Core techniques, to further develop your ASP.NET Core programming skills.

Web API Development and RESTful Services

In this tutorial, we'll explore how to develop Web APIs and RESTful services using ASP.NET Core. Web APIs enable your application to provide data and services to various clients, such as web browsers, mobile applications, and other servers, using HTTP and JSON as the primary communication protocols.

Building Web APIs in ASP.NET Core

ASP.NET Core makes it easy to create Web APIs by providing built-in support for routing, model binding, and JSON serialization. To create a Web API in ASP.NET Core, follow these steps:

  • Create a new Web API project or configure your existing project to support Web API development.
  • Define a model class to represent the data you want to expose through your API.
  • Create a controller that inherits from ControllerBase and use the [ApiController] attribute to enable Web API-specific features.
  • Implement action methods in your controller to handle HTTP requests and return data as JSON.
// Product.cs
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

// ProductsController.cs
[ApiController]
[Route("api/products")]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public IActionResult GetProducts()
    {
        // Retrieve and return product data as JSON
        var products = GetProductData();
        return Ok(products);
    }
}

Designing RESTful Services with ASP.NET Core

Representational State Transfer (REST) is an architectural style for designing networked applications that emphasize scalability, performance, and maintainability. RESTful services are built on top of HTTP and use standard HTTP methods (GET, POST, PUT, DELETE) to perform operations on resources, which are identified by URIs.

To design a RESTful service with ASP.NET Core, follow these best practices:

  • Use standard HTTP methods to perform operations on resources.
  • Use meaningful and consistent URIs to identify resources, such as /api/products and /api/products/{id}.
  • Provide support for content negotiation, allowing clients to request data in different formats, such as JSON and XML.
  • Implement proper error handling and return appropriate HTTP status codes in your responses.

By understanding and effectively using Web API development and RESTful services, you'll be able to create scalable and maintainable APIs that can be consumed by various clients. In the upcoming sections of this tutorial, we'll explore more advanced topics, such as securing your application with authorization policies, advanced Entity Framework Core techniques, and unit testing and integration testing in ASP.NET Core, to further enhance your ASP.NET Core programming skills.

Securing Your Application with Authorization Policies

In this tutorial, we'll explore how to secure your ASP.NET Core application using authorization policies. Authorization policies enable you to define and enforce access control rules for your application's resources and functionality, ensuring that only authorized users can perform certain actions.

Understanding Authorization in ASP.NET Core

ASP.NET Core provides a flexible and extensible authorization system built on top of the middleware pipeline. This authorization system allows you to define and enforce access control policies for your application's resources and functionality.

To implement authorization in your ASP.NET Core application, follow these general steps:

  1. Configure the required authentication services and middleware in your Startup class.
  2. Add the [Authorize] attribute to your controllers or action methods to enforce authorization for specific resources or actions.
  3. Implement custom authorization policies, requirements, and handlers to define complex access control rules.

Implementing Custom Authorization Policies

Custom authorization policies in ASP.NET Core enable you to define complex access control rules that can be enforced across your application. To create a custom authorization policy, follow these steps:

  • Create a custom requirement class that implements the IAuthorizationRequirement interface.
  • Implement a custom authorization handler that inherits from AuthorizationHandler<TRequirement> and overrides the HandleRequirementAsync method.
  • Register your custom authorization handler with the dependency injection container.
  • Define a custom authorization policy in the ConfigureServices method of your Startup class, and reference your custom requirement and handler.
  • Use the [Authorize(Policy = "YourPolicyName")] attribute to enforce your custom authorization policy on your controllers or action methods.
// CustomRequirement.cs
public class CustomRequirement : IAuthorizationRequirement
{
    // Define any properties or methods required for your custom requirement
}

// CustomAuthorizationHandler.cs
public class CustomAuthorizationHandler : AuthorizationHandler<CustomRequirement>
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomRequirement requirement)
    {
        // Implement your custom authorization logic
        if (IsUserAuthorized(context))
        {
            context.Succeed(requirement);
        }

        return Task.CompletedTask;
    }
}

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("CustomPolicy", policy =>
            policy.Requirements.Add(new CustomRequirement()));
    });

    services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>();
}

By understanding and effectively implementing authorization policies in your ASP.NET Core application, you can ensure that your application's resources and functionality are only accessible to authorized users. In the next sections of this tutorial, we'll explore more advanced topics, such as advanced Entity Framework Core techniques, unit testing and integration testing, and performance optimization in ASP.NET Core, to further develop your ASP.NET Core programming skills.

Advanced Entity Framework Core Techniques

In this tutorial, we'll explore advanced Entity Framework Core techniques to improve the efficiency and maintainability of your data access layer. Entity Framework Core is a powerful and flexible Object-Relational Mapper (ORM) that allows you to work with relational databases using .NET objects.

Working with Complex Queries and Projections

Entity Framework Core provides a rich LINQ API to perform complex queries and projections on your data. By leveraging these features, you can optimize your data access layer and reduce the amount of data transferred between your application and the database.

Some advanced query techniques include:

  • Eager Loading: Use the Include and ThenInclude methods to load related entities in a single query, reducing the number of round-trips to the database.
  • Filtered Eager Loading: Combine the Include method with a Where clause to load only the related entities that match the specified filter.
  • Projection: Use the Select method to project your entities into a new shape, retrieving only the necessary data from the database.
using (var context = new MyDbContext())
{
    var products = context.Products
        .Include(p => p.Category)
        .ThenInclude(c => c.Subcategories)
        .Where(p => p.Price > 100)
        .Select(p => new
        {
            p.Id,
            p.Name,
            CategoryName = p.Category.Name,
            SubcategoryCount = p.Category.Subcategories.Count
        })
        .ToList();
}

Implementing Custom Conventions and Mappings

Entity Framework Core allows you to customize the default conventions and mappings between your .NET objects and the database schema. By implementing custom conventions and mappings, you can optimize your data access layer and adapt Entity Framework Core to work with legacy or non-standard database schemas.

To implement custom conventions and mappings, you can:

  • Use the Fluent API in your DbContext class to configure entity and property mappings programmatically.
  • Implement custom conventions using extension methods and the ModelBuilder class.
  • Implement custom value converters and value comparers to handle complex data types or custom serialization logic.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Product>(entity =>
    {
        entity.ToTable("tbl_Products");
        entity.Property(e => e.Name).HasColumnName("ProductName");
        entity.Property(e => e.Price).HasPrecision(10, 2);
    });

    modelBuilder.ApplyCustomConventions();

    modelBuilder.Entity<Order>(entity =>
    {
        entity.Property(e => e.Status)
            .HasConversion<string>()
            .HasComparer(new CustomEnumComparer<OrderStatus>());
    });
}

By learning advanced Entity Framework Core techniques, you can create efficient and maintainable data access layers for your ASP.NET Core applications. In the upcoming sections of this tutorial, we'll explore more advanced topics, such as unit testing and integration testing, performance optimization, and deployment strategies in ASP.NET Core, to further enhance your ASP.NET Core programming skills.

Unit Testing and Integration Testing in ASP.NET Core

In this tutorial, we'll explore unit testing and integration testing in ASP.NET Core, which are crucial for ensuring the reliability and quality of your applications. By implementing a comprehensive suite of tests, you can identify and fix defects early in the development process, leading to more robust and maintainable applications.

Unit Testing in ASP.NET Core

Unit testing focuses on testing individual components or units of code in isolation. In ASP.NET Core, you can use testing frameworks like xUnit, NUnit, or MSTest to create unit tests for your application's classes and methods.

To create unit tests for your ASP.NET Core application:

  • Create a separate test project that references your main application project.
  • Install the appropriate testing framework NuGet packages and configure your test project accordingly.
  • Write test methods that exercise the functionality of your classes and methods in isolation, using stubs or mocks to replace dependencies.
// ProductServiceTests.cs
public class ProductServiceTests
{
    [Fact]
    public void CalculateDiscount_PriceAboveThreshold_ReturnsDiscountedPrice()
    {
        // Arrange
        var productService = new ProductService();
        decimal originalPrice = 150;

        // Act
        decimal discountedPrice = productService.CalculateDiscount(originalPrice);

        // Assert
        Assert.Equal(135, discountedPrice);
    }
}

Integration Testing in ASP.NET Core

Integration testing focuses on testing the interaction between multiple components or layers of your application, such as the interaction between your controllers and the data access layer. ASP.NET Core provides built-in support for integration testing using the TestServer and WebApplicationFactory classes.

To create integration tests for your ASP.NET Core application:

  • Create a separate test project that references your main application project.
  • Install the required NuGet packages for integration testing, such as Microsoft.AspNetCore.TestHost and Microsoft.AspNetCore.Mvc.Testing.
  • Write test methods that exercise your application's HTTP endpoints using the TestServer or WebApplicationFactory classes, and assert the expected results.
// IntegrationTests.cs
public class ProductsControllerTests : IClassFixture<WebApplicationFactory<Startup>>
{
    private readonly WebApplicationFactory<Startup> _factory;

    public ProductsControllerTests(WebApplicationFactory<Startup> factory)
    {
        _factory = factory;
    }

    [Fact]
    public async Task GetProducts_ReturnsSuccessStatusCode()
    {
        // Arrange
        var client = _factory.CreateClient();

        // Act
        var response = await client.GetAsync("/api/products");

        // Assert
        response.EnsureSuccessStatusCode();
    }
}

By implementing unit tests and integration tests for your ASP.NET Core applications, you can ensure the reliability and quality of your software. In the next sections of this tutorial, we'll explore more advanced topics, such as performance optimization, deployment strategies, and monitoring and diagnostics in ASP.NET Core, to further develop your ASP.NET Core programming skills.

In conclusion, throughout this tutorial, we've covered various advanced techniques to enhance your ASP.NET Core programming skills. We've explored Web API development and RESTful services, securing your application with authorization policies, advanced Entity Framework Core techniques, and unit testing and integration testing in ASP.NET Core.

By mastering these concepts, you'll be well-equipped to create robust, scalable, and maintainable applications using ASP.NET Core. As you continue to learn and practice, you'll discover even more advanced topics that can help you further refine your skills and develop high-quality applications.

Remember, the key to becoming a proficient ASP.NET Core developer is consistent practice and staying up-to-date with the latest features and best practices. Keep exploring, experimenting, and learning to stay ahead in the ever-evolving world of web development.

ASP.NET Core Mastery: Intermediate Skills PDF eBooks

ASP.Net for beginner

The ASP.Net for beginner is level PDF e-book tutorial or course with 265 pages. It was added on December 11, 2012 and has been downloaded 7769 times. The file size is 11.83 MB.


Introduction to ASP.NET Web Development

The Introduction to ASP.NET Web Development is level PDF e-book tutorial or course with 36 pages. It was added on December 11, 2012 and has been downloaded 4964 times. The file size is 792.33 KB.


ASP.NET Web Programming

The ASP.NET Web Programming is a beginner level PDF e-book tutorial or course with 38 pages. It was added on October 20, 2015 and has been downloaded 4785 times. The file size is 1.15 MB. It was created by Hans-Petter Halvorsen.


Learning .net-core

The Learning .net-core is a beginner level PDF e-book tutorial or course with 26 pages. It was added on July 14, 2022 and has been downloaded 1119 times. The file size is 151.75 KB. It was created by Stack Overflow.


ASP.NET and Web Programming

The ASP.NET and Web Programming is a beginner level PDF e-book tutorial or course with 38 pages. It was added on October 13, 2014 and has been downloaded 6910 times. The file size is 1.73 MB. It was created by Telemark University College.


Course ASP.NET

The Course ASP.NET is level PDF e-book tutorial or course with 67 pages. It was added on December 11, 2012 and has been downloaded 3840 times. The file size is 786.29 KB.


The Entity Framework and ASP.NET

The The Entity Framework and ASP.NET is level PDF e-book tutorial or course with 107 pages. It was added on December 11, 2012 and has been downloaded 3439 times. The file size is 1.7 MB.


ASP.NET MVC Music Store

The ASP.NET MVC Music Store is a beginner level PDF e-book tutorial or course with 136 pages. It was added on February 29, 2016 and has been downloaded 4948 times. The file size is 3.05 MB. It was created by Jon Galloway - Microsoft.


Getting started with MVC3

The Getting started with MVC3 is a beginner level PDF e-book tutorial or course with 81 pages. It was added on December 26, 2013 and has been downloaded 3942 times. The file size is 1.8 MB. It was created by Scott Hanselman.


Practical Guide to Bare Metal C++

The Practical Guide to Bare Metal C++ is an advanced level PDF e-book tutorial or course with 177 pages. It was added on February 13, 2023 and has been downloaded 2523 times. The file size is 1.19 MB. It was created by Alex Robenko.


Introduction to VB.NET manual

The Introduction to VB.NET manual is level PDF e-book tutorial or course with 327 pages. It was added on December 9, 2012 and has been downloaded 14012 times. The file size is 3.17 MB.


Tutorial on Web Services

The Tutorial on Web Services is an intermediate level PDF e-book tutorial or course with 81 pages. It was added on February 27, 2014 and has been downloaded 1479 times. The file size is 339.16 KB. It was created by Alberto Manuel Rodrigues da Silva.


VB.NET Tutorial for Beginners

The VB.NET Tutorial for Beginners is a beginner level PDF e-book tutorial or course with 243 pages. It was added on March 7, 2014 and has been downloaded 27458 times. The file size is 3.46 MB. It was created by ANJAN’S.


InDesign CC 2014 Intermediate Skills

The InDesign CC 2014 Intermediate Skills is a beginner level PDF e-book tutorial or course with 35 pages. It was added on October 18, 2016 and has been downloaded 2728 times. The file size is 1.6 MB. It was created by Kennesaw State University.


.NET Tutorial for Beginners

The .NET Tutorial for Beginners is a beginner level PDF e-book tutorial or course with 224 pages. It was added on June 25, 2016 and has been downloaded 10008 times. The file size is 1.63 MB. It was created by India Community Initiative.


InDesign CC 2017 Intermediate Skills

The InDesign CC 2017 Intermediate Skills is a beginner level PDF e-book tutorial or course with 35 pages. It was added on November 1, 2017 and has been downloaded 4814 times. The file size is 1.66 MB. It was created by Kennesaw State University.


Android Development Tutorial

The Android Development Tutorial is a beginner level PDF e-book tutorial or course with 54 pages. It was added on August 18, 2014 and has been downloaded 13237 times. The file size is 1.35 MB. It was created by Human-Computer Interaction.


Introduction to Visual Basic.NET

The Introduction to Visual Basic.NET is a beginner level PDF e-book tutorial or course with 66 pages. It was added on December 8, 2012 and has been downloaded 12041 times. The file size is 1.63 MB. It was created by Abel Angel Rodriguez.


.NET Book Zero

The .NET Book Zero is a beginner level PDF e-book tutorial or course with 267 pages. It was added on January 19, 2017 and has been downloaded 4122 times. The file size is 967.75 KB. It was created by Charles Petzold.


Beginners Guide to C# and the .NET

The Beginners Guide to C# and the .NET is a beginner level PDF e-book tutorial or course with 58 pages. It was added on December 26, 2013 and has been downloaded 8461 times. The file size is 618.34 KB. It was created by Gus Issa (GHI Electronics, LLC).


Learning .NET Framework

The Learning .NET Framework is a beginner level PDF e-book tutorial or course with 241 pages. It was added on February 17, 2019 and has been downloaded 2715 times. The file size is 1.03 MB. It was created by Stack Overflow Documentation.


Visual Basic and .NET Gadgeteer

The Visual Basic and .NET Gadgeteer is an advanced level PDF e-book tutorial or course with 125 pages. It was added on September 17, 2014 and has been downloaded 7620 times. The file size is 3.17 MB. It was created by Sue Sentance, Steven Johnston, Steve Hodges, Jan Kučera, James Scott, Scarlet Schwiderski-Grosche.


Microsoft Word 2013 Part 2: Intermediate

The Microsoft Word 2013 Part 2: Intermediate is an intermediate level PDF e-book tutorial or course with 25 pages. It was added on October 23, 2017 and has been downloaded 12481 times. The file size is 519.17 KB. It was created by California State University, Los Angeles.


Evaluating Information

The Evaluating Information is a beginner level PDF e-book tutorial or course with 21 pages. It was added on December 2, 2017 and has been downloaded 382 times. The file size is 207.73 KB. It was created by Jerry Stratton.


.NET Framework Notes for Professionals book

The .NET Framework Notes for Professionals book is a beginner level PDF e-book tutorial or course with 192 pages. It was added on November 4, 2018 and has been downloaded 989 times. The file size is 1.44 MB. It was created by GoalKicker.com.


Microsoft Outlook 2013: Intermediate Part 2

The Microsoft Outlook 2013: Intermediate Part 2 is a beginner level PDF e-book tutorial or course with 25 pages. It was added on October 23, 2017 and has been downloaded 4453 times. The file size is 800.58 KB. It was created by California State University, Los Angeles.


Visual Basic .NET Notes for Professionals book

The Visual Basic .NET Notes for Professionals book is a beginner level PDF e-book tutorial or course with 149 pages. It was added on June 11, 2019 and has been downloaded 8570 times. The file size is 1.72 MB. It was created by GoalKicker.com.


Building Access 2010 databases

The Building Access 2010 databases is an intermediate level PDF e-book tutorial or course with 35 pages. It was added on August 15, 2014 and has been downloaded 5066 times. The file size is 827.04 KB. It was created by University of Bristol IT Services.


Core JavaScript Documentation

The Core JavaScript Documentation is a beginner level PDF e-book tutorial or course with 36 pages. It was added on January 27, 2019 and has been downloaded 5222 times. The file size is 145.71 KB. It was created by Jonathan Fine.


C# .NET Crash Course

The C# .NET Crash Course is level PDF e-book tutorial or course with 120 pages. It was added on December 6, 2012 and has been downloaded 4537 times. The file size is 919.61 KB.


it courses