1) Basic Resources –
N.B.-> Learn C# by Building a Simple RPG, O’Reilly’s Coding4Fun Text , Channel 9’s Coding4Fun (Toolkit) and Java Projects that will Have You Inspired and Sharpen Your Skills(think and try all these out in .NET and I bet, you will learn a hell lot)
e) C# in Depth
h) CLR via C#
N.B.-> Probably, the best part about the above text is Chapter 6.Why? Well, it gives insights into building Genetic Algorithms using .NET Expression Trees.
N.B -> Dynamic vs. Var vs. Object, Creating a .NET Windows Service: Three Different Approaches, Managed Threading Best Practices, Using Expression Trees in Your APIs, Expression API vs Reflection, Buffer,File and Stream, CLR Inside Out Series , Coding Bibliography , Value vs Reference Types in C#, List Passed By Ref, 2,000 Things You Should Know About C# , .NET Extensions Methods Library , ExtensionMethod.NET , AutoMapper , Clone with Better Performance, .NET Deep Copy, Improving C# Reflection Performance , Strongly Typed, High Performance Reflection with C# Delegate , Dynamic Type using Reflection.Emit , Get Drunk on the Power of Reflection.Emit , Destructors in C#(Using the Destructor and IDisposable together) and Dispose Pattern, Understanding Application Domains , Executing Code in a Separate Application Domain Using C# , Loading Native (NGEN) images and its interaction with the GAC, Exploring and Manipulating the GAC, Demystifying the .NET Global Assembly Cache, GAC Phobia, Anything wrong with NOT signing a .NET assembly?, Why sign an assembly , Strong Names , Consuming assemblies that are located in a folder different from the application base folder, How to add DLL search path, In what order are locations searched to load referenced DLLs?, Dynamic-Link Library Search Order, ASP.net assembly loading from GAC or Bin (Dll in both the bin and the gac, which one gets used?), The Right Way to Version Your Assemblies, Design-Time Code Generation by using T4 Text Templates, How to have an auto incrementing version number, Using T4 templates to manage assembly version information, How do I determine the dependencies of a .NET application?(sometimes very useful to solve GAC related issues), Learning Network Programming in C#, A Complete Impersonation demo in C#, Imperatively Impersonate a User , Understanding WeakReferences in .NET , W is for …Weak Reference , Lambda , Castle’s DynamicProxy, There is no source available for the current location, IsAssignableToGenericType, Exception.Message vs Exception.ToString(), Pass a method with N params as parameter in C#, Chained null checks and the Maybe monad, .NET Remoting Static method Execution, C# For Scripting, Friendly Unique Id Generation, Can attributes be added dynamically in C#?, Change Attribute’s parameter at runtime, Choosing Between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo and LinFu Framework – Part I, Part II, Part III, Part IV, Part V and Part VI.
2) Functional Programming –
N.B. -> F# Performance in Scientific Computing, Functional Programming for Everyday .NET Development, F# Programming wiki , MSDN – Real World Functional Ppogramming , Functional C# , FC# – Internal Functional DSL to C# 3.0 , .NET Functional Programming Series , FSharp.ML-industry needs(Machine Learning For .NET) and Functional Programming Bibliography
3) Dynamic Programming –
4) Concurrent Programming –
N.B.-> Pro Asynchronous Programming with .NET, Parallel Programming with Microsoft .NET, Introduction to Rx, Best Practices in Asynchronous Programming, Best Practices for c# async/await, Building Parallel Algorithms, Introduction to Async/Await on ASP.NET, Async in C# 5.0, Multithreading in C# 5.0 Cookbook , Threading in C# , C# 2008 and 2005 Threaded Programming, Seven Concurrency Models in Seven Weeks: When Threads Unravel, Patterns for Parallel Programming – Understanding and Applying Parallel Patterns with the .NET Framework 4 , Articles on Parallel Programming with the .NET Framework 4 , Parallel Programming in the .NET Framework , A Tour through the Parallel Programming Samples for .NET 4 , Specialized Task Schedulers in .NET 4 , Practical Parallel and Concurrent Programming , Professional Parallel Programming with C#: Master Parallel Extensions with .NET 4 , Pro .NET 4 Parallel Programming in C# , Parallel Processing and Concurrency in the .NET Framework , Concurrent Programming on Windows , Patterns for Parallel Programming , Introduction to Parallel Computing , Developing Parallel Programs , Developing Parallel Programs – A Discussion of Popular Models , Work Stealing in .NET 4.0 ,Lock Free Work Stealing Queue , Understanding the volatile modifier in C# , Volatile keyword in C#, Volatile and MemoryBarrier, TransactionScope with Parallel Extensions, Transactions across a set of Parallel Tasks, Participating in TransactionScopes and Async/Await Going deep into the abyss, Get TransactionScope to work with async / await, Asynchronous Repositories, Mocking async repository calls, The Joy of Rx: Building an Asynchronous API with Rx and IQueryable, Dataflow Book, Programming Reactive Extensions and LINQ, Reactive Extensions Projects and A WebCrawler demonstrating TPL Dataflow
5) ORM – Entity Framework Code First (Learning .NET Data Development in general) –
h) Entity Framework Metadata –
N.B. -> Using EF Code First, for BulkInsert use a EF wrapper over SqlBulkCopy while for BulkUpdate and BulkDelete use a EF wrapper over table valued parameter. But beware of the fact that while using table valued parameter the order of columns in a datatable need to be in the exact same order as the UDDT as no column mapping is applied.Also, if you are using DBContext directly or ObjectContext(e.g converting a DBContext object to ObjectContext object) and it’s a multi-threaded application,please use it within some lock (or better use a per-thread DBContext/ObjectContext object), since DBContext/ObjectContext is not thread-safe. Whole EF is THREAD- UNSAFE.My personal preference is to use per-thread,per-BoundedContext(can be small functional modules as well) DBContext objects since this approach safe-gaurds multi-threading issues and also gives better performance.
N.B. -> An ADO.NET Tip for highly Concurrent Scenario -> Always use connection,command,data reader, data adapter etc objects using “using” construct of C#. Always open the connection only when u really hit the DB e.g calling DataAdapter.Fill,ExecuteNonQuery etc.So just before doing the actual DB hit open the connection and just after that close it – you can create connection,command etc in that order but technically, you should open any connection just before doing any actual DB hit and just after that close it.Also if there are methods like Get,Save etc in your DAL, use separate set of connection,command etc objects for each method.
Also, one can refer the Extensions Methods Library having very good EF6+ support.
N.B. -> OData by Example
6) Unstructured Data Handling – Structured, semi structured and unstructured data, A Relational Approach to Incrementally Extracting and Querying Structure in Unstructured Data, Storing large files in DB, Art of SQL Server FileStream, FileStream and FileTable in SQL Server 2012, Working with Entity Framework Code First and SQL FILESTREAM, Web API File Upload with MS SQL SERVER FileTable, WCF Large Data and Streaming and Crate.IO Use Cases.
7) Enterprise Excel and VBA – Excel Development using VBA, VBA Developer’s Handbook, Pro Excel 2007 VBA, Classes in VBA, Calling Sub and Function Procedures, Macros in Excel (VBA), VBA For Smarties, Excel VBA Referencing Ranges, VBA (Excel): Find Based on Multiple Search Criteria Without Looping, Cheap trick for imitating function pointer/delegate mechanism in VBA, Evaluate Functions and Formulas Fun, Higher Order Functions in VBA, Application.Run, A ByRef argument with the Application.Run method, Application.Evaluate Method, Calling XLAM/XLL/Automation UDFs from VBA, Why does VBA Find loop fail when called from Evaluate?, Excel’s Application.Evaluate() does not consider all data types, How to use Evaluate to invoke an Excel UDF programmatically, Complex Excel Formula in terms of Final, Excel Solver AddIn, Using Solver in Excel VBA, Error Handling via an Error Class, VBA Excel Error HAndling, VBA Error Handling, Error Handling (Global), How To Write Errors to Log File, VBA Multithreading, Multithreaded VBA, VBA Unit Testing
8) Other Good Resources in general –
N.B. – Introducing BDD, Moq, Fluent Assertions , Pex and Moles – Isolation and White box Unit Testing for .NET , Testing Strategies for WCF Services , Microsoft.Activities.UnitTesting , Fake DbConnection for Unit Testing EF Code and Testeroids Unit Testing Framework(can test asynchronous Rx and TPL)
g) Instrumentation and Monitoring – Embracing Semantic Logging, Instrumentation with Semantic Logging Application, Semantic Logging, HangFire, File System Watcher, System Center Monitoring, AVIcode .NET Application Monitoring, Creating a System Monitoring Service in .NET , Monitor and Manage Services on Remote Machines, Monitoring MSMQ Message Queues, AppInsight Performance Analytics, Microsoft Research AppInsight, AppInsight: Mobile App Performance Monitoring in the Wild, The Top 10 Best Web Analytic Tools and Top 30 Web Analytics Tools | Google Analytics Alternative