Przejdź do głównej zawartości

How MongoDB + good programming practices saved my time

Today I'll show you how in I'm using MongoBD in web service part of Perfect Life application. I'll show how using good programming practices saves time.
I switch database to brand new instance of mongoDB. And I did it. And all that you'll see today was made within one hour. Interested? Keep reading...

As you know I tend to use interface to connect components in my application. It helps me to keep components loosely coupled.
For example I use dependency injection where controller uses IWeightRecord Repository.


Using interfaces this way makes it easy to switch my repository to something else.
In my case I'd like to create a new repository that depends on Mongo database instead of in-memory repository that uses Dictionary.
As the reault my data won't be deleted in case of web application restart. This is my target.
So first I'm adding a new Nuget package to my WebAPI application. The package is called MongoDB.Driver.
Next step is to create a new repository that I'm going ot use in my controller:

As you know my style of work I think the functionality is only halfway done without automated tests.
We need good integration test to make sure the application works fine:

The final step is to configure service provider in my ASP.NET Core MVC application in Startup.cs class.
I simply changed this line:
services.AddSingleton();
to this line:
services.AddSingleton();

This is what we managed to discover:
1) Using mongo in C# is really easy to configure - we operate on objects, not RDBMS using SQL - time savings when we don't need to create and maintain DB schema
2) When you use built-in Dependency Injection container in ASP.NET Core MVC, it's a matter of seconds to switch service. - Saving time!
3) When we keep in mind loosely coupling we can created a new repository and used it instead of the old one without a line of code in the controller class - saving time as we change only what we need.
4) With good suite of integration tests we can make significant changes in the logic of our application and be sure it's working without even running the app. Integration tests + Dependency Injection = huge time savings!
What is the summary thoughts? If we keep using good practices we can do amazing things in short time.
Not only maintenance is easy but with goot integration tests, you can be sure the app is working correctly always. There's need to run app and do manual tests while we use unit and integration tests.
I hope you'll use those techniques too and will create better applications in shorter time. Good luck?



Komentarze

Popularne posty z tego bloga

Aplikacja 'Perfect Life' - planowanie funkcjonalności

W poprzednim wpisie przedstawiłem budowę historii użytkownika(ang. User Story). Dzisiaj korzystając z tego narzędzia zaplanujemy kilka funkcjonalności. Czas na zaplanowanie funkcjonalności aplikacji mobilnej Perfect Life. Aplikacja jest tworzona w oparciu o technologię Xamarin.Forms. Póki co jednak abstrahując od rozwiązań technologicznych skupimy się na funkcjonalnościach. Dobre planowanie swojej pracy to podstawa sukcesu każdego projektu programistycznego. US1: Jako użytkownik aplikacji mobilnej chcę ekran logowania aby mieć możliwość zapisywania swoich postępów US2: Jako użytkownik aplikacji mobilnej chcę mieć kalkulator wskaźnika BMI aby móc mierzyć poziom swojej kondycji US3: Jako użytkownik aplikacji mobilnej chcę widzieć wykresy aby móc wizualnie interpretować swoje postępy US4: Jako użytkownik aplikacji mobilnej chcę mieć możliwość rozwiązania quizu, żeby zbadać wskaźnik Body Age US5: Jako użytkownik aplikacji mobilnej chcę pobierać pliki PDF aby mieć dostęp do planó...

Dziś Premiera Visual Studio 2017

Dzisiaj ważny dzień dla programistów .NET. Premiera środowiska programistycznego Visual Studio 2017. Relację na żywo można oglądać tutaj: https://launch.visualstudio.com/ Jutro będzie dzień warsztatów, w których możemy wziąć udział online. Nowe VS możemy pobrać ze strony: https://www.visualstudio.com/ Co ciekawe pobierając VS teraz otrzymasz 60 dni darmowego dostępu do Xamarin University. To ważne jeśli chcesz się nauczyć tworzyć aplikacje mobilne. Co nowego? Lepsza integracja z VSTS Live unit testing - zwróćmy uwagę na ikony po lewej stronie: Dodatkowe ikony: Wyszukiwanie metod po fragmencie nazwy. Code suggestions, czyli podpowiedzi na temat najlepszych praktyk w trakcie pisania kodu. Możemy zdefiniować własne sugestie dot. kodu i dodac własne konfiguracje edytora kodu: Dodatkowo pojawiły się dodatkowe ikony, dzięki którym łatwo się zorientować gdzie kończy się klasa, a gdzie namespace. Wygląda to nieźle. Inne usprawnienia o których mówił Scott Hanselman...

ASP.NET Core MVC - wdrożenie na Linuxie krok po kroku

Dzisiaj skupimy się na wdrożeniu aplikacji ASP.NET Core MVC. Po przeczytaniu tego artykułu będziesz potrafił uruchomić swoją pierwszą aplikację ASP.NET Core na maszynie wirtualnej z systemem Ubuntu 14. Załóżmy, że mamy nasza aplikację gotową i chcemy ją uruchomić. Jak najłatwiej to zrobić? Podczas debugowania możemy roboczo wykorzystać Visual Studio do uruchomienia aplikacji na IIS Express. Jednak w warunkach produkcyjnych kiedy chcemy wdrożyć aplikację na systemie Linux, musimy poszukać innego rozwiązania. Dlaczego? Bo Linux nie będzie obsługiwał ani visual Studio ani IIS Express, ponadto jeśli korzystamy z Continuous Deployment, to chcemy wdrożenie robić z poziomu konsoli. Jak pisałem w poprzednich postach, wraz z nadejściem ASP.NET Core MVC, mamy możliwość wdrażania aplikacji napisanych w C# na platformie Linux. To niezwykle istotne, bo przynosi ogromne korzyści, choćby dlatego, że ceny hostingu są kilka razy niższe dla maszyn z Linuxem niż z Windowsem. 1) Framework-depen...