{"id":1419,"date":"2024-06-23T20:52:07","date_gmt":"2024-06-23T12:52:07","guid":{"rendered":"https:\/\/moneystock.net\/wp_e\/?p=1419"},"modified":"2024-07-17T23:11:34","modified_gmt":"2024-07-17T15:11:34","slug":"tools-and-libraries-for-net-developers-in-2024","status":"publish","type":"post","link":"https:\/\/moneystock.net\/wp_e\/2024\/06\/23\/tools-and-libraries-for-net-developers-in-2024\/","title":{"rendered":"Tools for .Net developers in 2024"},"content":{"rendered":"<h3>Tools<\/h3>\n<p><a href=\"https:\/\/www.jetbrains.com\/resharper\/\">Resharper<\/a><\/p>\n<p>One of the most popular productivity tool for Visual Studio users. The need for Resharper is reduced for the recent few years though. I&#8217;m simply so familiar with it and it&#8217;s muscle memory now.<\/p>\n<p>ChatGPT and GitHub Copilot<\/p>\n<p>A LLM based support is key productivity tool for developer since it&#8217;s introduced. The more knowing how to get most of of it, the more productive a software engineer can be.<\/p>\n<p>VS Code<\/p>\n<p>This becomes the one of the best IDE across widows\/linux worlds. Various extensions make this editor much more useful. The being light weight is the one big advantage over Visual Studio, which is still my main IDE though.<\/p>\n<p>&nbsp;<\/p>\n<h3>Library<\/h3>\n<p><strong>Unit Testing<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/Moq\/moq4\/wiki\/Quickstart\">Moq<\/a><\/p>\n<p>A mocking library\u00a0that I\u2019ve chosen. Easy to use, flexible enough. I also work with Autofac.<\/p>\n<p><a href=\"http:\/\/fluentassertions.com\/\">FluentAssertion<\/a>s<\/p>\n<p>A while after unit testing in the C# world, it didn\u2019t take long before I realize that I need more tools to fill in the gap. FluentAssertions help asserts like speaking. It flows naturally. and much more to help do a proper unit test. This is another must have if you do unit test.<\/p>\n<p><a href=\"http:\/\/specflow.org\/\">SpecFlow<\/a><\/p>\n<p>This is very interesting one. This help does BDD. If you don\u2019t do a TDD or BDD, this tool is just too much. I\u2019ve applied this partially on a small project and found that the problem is it\u2019s not fully integrated with existing Unit Testing tools in VS. So, it\u2019s about using SpecFlow on the entire project or don\u2019t use it.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Log\/Exception Handling<\/strong><\/p>\n<p>NLog<\/p>\n<p>Newer one. would be good for .Net project. seems like supporting more modern functions. It\u00a0seems like accepted as a better library than log4net on .Net project, but if you don\u2019t use it extensively, it\u2019s would be no big difference from Log4Net.<\/p>\n<p><a href=\"https:\/\/sentry.io\/\">Sentry<\/a><\/p>\n<p>A cloud hosted application monitoring application. All my companies exceptions are sent to Sentry and monitored there. Sentry becomes a central place to monitor any application exceptions of entire application of the company.<\/p>\n<p><a href=\"https:\/\/stackify.com\/\">Stackify<\/a><\/p>\n<p>Easy to use APM, application performance monitoring solution. By just installing an agent in the server, it is possible to monitor performance all dotnet applications without extra configuration. As we move apps to the cloud, Azure, I now started rely more on application insights. However, monitoring entire applications in one place may require another solution than just application insights, which is very useful to investigate a single application.<\/p>\n<p><strong>Debug<\/strong><\/p>\n<p><strong>Compression<\/strong><\/p>\n<p>ICSharpCode.SharpZipLib<\/p>\n<p>De facto standard compression library for C#<\/p>\n<p><strong>CSV file<\/strong><\/p>\n<p><a href=\"https:\/\/joshclose.github.io\/CsvHelper\/\">CSVHelper<\/a><\/p>\n<p>Replacing LumenWorks.Framework.IO.<\/p>\n<p><strong>JSON<\/strong><\/p>\n<p>Newtonsoft.Json<\/p>\n<p>Probably no need to say anything on this one. Another de facto JSON library for C#.<\/p>\n<p><strong>Email<\/strong><\/p>\n<p>OpenPop.NET<\/p>\n<p>Used as a .Net POP3 client.<\/p>\n<p><strong>FTP<\/strong><\/p>\n<p>WinSCP.net<\/p>\n<p>I know there are lots of commercial version FTP libraries, but as an open source library WinSCP.net looks to be the best one.<\/p>\n<p><strong>Excel file creation<\/strong><\/p>\n<p>EPPlus<\/p>\n<p>Also when it comes to Excel library in .Net world, EPPlus is an easy-to-use library. I used this for a couple projects and was happy about it.<\/p>\n<p><strong>Dependency Injection<\/strong><\/p>\n<p><a href=\"http:\/\/autofac.readthedocs.io\/\">Autofac<\/a><\/p>\n<p>I haven\u2019t used other IoC container much though, Autofac seems to be the most widely used one. and I\u2019m happy with this so far.<\/p>\n<p><strong>Functional Programming Pattern<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/nlkl\/Optional\">Optional<\/a><\/p>\n<p>Once start using functional programming principle in C#, the first library I\u2019m trying to utilize is this one. It seems to me that there isn\u2019t a big community in this area yet and couldn\u2019t find some de facto standard library here. At least for far, I\u2019m working on getting best out of the Optional library.<\/p>\n<p><strong>API<\/strong><\/p>\n<p><a href=\"https:\/\/github.com\/RicoSuter\/NSwag\">Nswag<\/a><\/p>\n<p>The Swagger\/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. In particular, we use NSwag client code generator to create Type Script API client code automatically, which save time and reduce potential errors. Highly recommend it.<\/p>\n<p><strong>Scheduler<\/strong><\/p>\n<p><a href=\"https:\/\/www.hangfire.io\/\">Hangfire<\/a><\/p>\n<p>Getting to like it. Hangfire, which is \u201can easy way to perform background processing in .NET and .NET Core applications\u201d. I have been using Windows Task Scheduler for back-end automation applications for quite a long time, and it\u2019s good enough, however, if to have an control of scheduling inside ASP.Net, Hangfire is a good one. Hangfire works on various kinds of databases including MS SQL, SQLite, etc.<\/p>\n<p>Windows Task Scheduler<\/p>\n<p>Some may think it is boring. But as far as I can see, Windows Task Scheduler works fine for most of back end scheduled task. Unless an app should run more frequently than 1 minute, I prefer to use Task Scheduler with console application for simplicity.<\/p>\n<p><strong>Etc<\/strong><\/p>\n<p><a href=\"https:\/\/automapper.org\/\">Automapper<\/a><\/p>\n<p>Just started using this a while ago. Not yet fully convinced about using it as my projects doesn\u2019t require massive mapping across the solution. Once the solution gets to the point where it\u2019s complex enough in terms of using model and DB tables, Automapper looks to be very useful.<\/p>\n<p><a href=\"https:\/\/github.com\/morelinq\/MoreLINQ\">MoreLinq<\/a><\/p>\n<p>To do a LINQ query better, I searched libraries to get some help. and found this one. Looks really promising and handy. We could just create a few LINQ extension methods, but why reinvent the wheel and using the existing one can be a way of quick learning.<\/p>\n<p>&nbsp;<\/p>\n<h3>Others<\/h3>\n<p><strong>Backend Framework<\/strong><\/p>\n<p>WebAPI<\/p>\n<p>I\u2019ve switched to SPA+ Web API architecture when building a web app in .Net stack, as I assume many others have done.<\/p>\n<p><strong>Front-End<\/strong><\/p>\n<p>Vue<\/p>\n<p>React with Next.js may be the most popular front-end framework. However, our company choose to use Vue.js (as TypeScript) and it is working just well and could not find a reason for a different front-end framework.<\/p>\n<p><a href=\"https:\/\/angular.io\/\">Angular<\/a><\/p>\n<p>Started using AngularJs and soon after Angular2 release, I found it\u2019s much cleaner and moved to Angular. The problem is that I can\u2019t follow the speed of Angular version up. The fact that Angular is based on Typescript is a great merit for the developer like me who started from strongly typed language like C# and still feeling weird in many things in how Javascript works.<\/p>\n<p><a href=\"https:\/\/getbootstrap.com\/\">Bootstrap<\/a><\/p>\n<p>No need to add a word in here. I\u2019m still using BS3.0. Not sure when to move on to 4.0<\/p>\n<p><a href=\"https:\/\/github.com\/valor-software\/ngx-bootstrap\">ngx-bootstrap<\/a><\/p>\n<p>I\u2019m happy about the fact that there is a library like this that works perfectly with Angular. However, These front-end libraries are changing so quickly and still many to improve.<\/p>\n<p><a href=\"https:\/\/www.npmjs.com\/\">NPM<\/a><\/p>\n<p>Quickly it became that we can\u2019t develop front-end web things without NPM. Glad I can rely on one technology. Hope NPM live long.<\/p>\n<p><strong>CI\/CD<\/strong><\/p>\n<p><a href=\"https:\/\/jenkins.io\/\">Azure DevOps<\/a><\/p>\n<p>My go-to DevOps tools. It is free for small team of up to 5.<\/p>\n<p><strong>Database<\/strong><\/p>\n<p>SQL Server<\/p>\n<p>Microsoft SQL Server is the easy chose for .net developers for the most of needs for relational database behind most of the applications.<\/p>\n<p>Cosmos DB<\/p>\n<p>As a key-value paired document DB, for the massive volume and for the less structured document, this looks to be very useful. Especially, it is cheap to use in Azure cloud compare to SQL server.<\/p>\n<p>Elastic Search<\/p>\n<p>The most well known and proven quick search solution. This solution is great to provide a quick search or text search. However, you will experience a bit of learning curve.<\/p>\n<p><strong>Chrome Extension<\/strong><\/p>\n<p>JsonView<\/p>\n<p>This helps to view json file pretty in Chrome, which is useful to work for API project.<\/p>\n<p><strong>PC Tools<\/strong><\/p>\n<p>ZoomIt<\/p>\n<p><strong>No Code\/Low Code<\/strong><\/p>\n<p>Nintex K2 workflow<\/p>\n<p>I&#8217;ve been using this low code solution about 2 years in the company. The biggest benefit from the low code solution is quick to create a simple application that includes forms \/ workflow \/ approval \/ task tracking. However, there seems to be cheaper option out there.<\/p>\n<p>Power App, Power Automate<\/p>\n<p>This Microsoft no code platform looks to be a great another no code solution if you are a Microsoft tech embedded company.<\/p>\n<p><strong>Task Management<\/strong><\/p>\n<p>Jira \/ Confluence<\/p>\n<p><strong>Content Management<\/strong><\/p>\n<p>iManage<\/p>\n<p>Good solution, but not cheap.<\/p>\n<p><strong>Reporting<\/strong><\/p>\n<p>SQL Server Reporting Services (SSRS)<\/p>\n<p>We have been using SSRS for various reports. However, various report requirement from various people can quickly make an report hell. Standardization and management of reports are key.<\/p>\n<p>Power BI<\/p>\n<p>Great for multidimension report. Potential to provide dynamic reports to user who can customize and drill down to analyze the data.<\/p>\n<p><strong>Email Service<\/strong><\/p>\n<p>SendGrid<\/p>\n<p>postmark<\/p>\n<p>sparkpost<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tools Resharper One of the most popular productivity tool for Visual Studio users. The need for Resharper is reduced for the recent few years though. I&#8217;m simply so familiar with it and it&#8217;s muscle memory now. ChatGPT and GitHub Copilot A LLM based support is key productivity tool for developer since it&#8217;s introduced. The more&hellip; <a class=\"more-link\" href=\"https:\/\/moneystock.net\/wp_e\/2024\/06\/23\/tools-and-libraries-for-net-developers-in-2024\/\">Continue reading <span class=\"screen-reader-text\">Tools for .Net developers in 2024<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[586,548,215,582,79],"tags":[184,698,696,694],"class_list":["post-1419","post","type-post","status-publish","format-standard","hentry","category-azure","category-c","category-development-life-cycle","category-sql","category-web-development","tag-net","tag-dotnet","tag-solutions","tag-tools","entry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts\/1419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/comments?post=1419"}],"version-history":[{"count":4,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts\/1419\/revisions"}],"predecessor-version":[{"id":1428,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/posts\/1419\/revisions\/1428"}],"wp:attachment":[{"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/media?parent=1419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/categories?post=1419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/moneystock.net\/wp_e\/wp-json\/wp\/v2\/tags?post=1419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}