Artykuły dla tagu C#

freeimages.com
maj 26 2016
0

Swashbuckle - bardzo dobra dokumentacja dla Web API

Wiecie jaki problem jest z dokumentacją? Wszyscy chcieliby ją mieć, ale mało osób lubi ją tworzyć. Ten problem nie omija również deweloperów, którzy pisanie dokumentacji (obojętnie czy to w postaci do kodu, czy niezależnych dokumentów) traktują jako swego rodzaju karę.

Na szczęście są obszary IT, gdzie dokumentacja może się generować sama.. No dobra prawie sama, ale w pewnym sensie jej tworzenie możemy oprogramować. Takim obszarem jest np. popularne Web API, które posiada kilka rozwiązań softwarowych, pozwalających na generowanie dokumentacji.

Jakiś czas temu poszukiwałem optymalnego rozwiązania, które będzie w stanie dać konsumentom API maksimum informacji i wszystko na to wskazuje, że znalazłem to jedyne. Moi mili - chciałbym Wam przedstawić Swashbuckle, czyli implementację popularnego Swaggera przystosowaną do naszego ulubionego Web API:-)

freeimages.com
maj 04 2016
0

Najciekawsze funkcje C# 6.0, które warto znać

Czołowi blogerzy .Netowi zajmują się obecnie nowościami, które można będzie spotkać w stabilnej wersji 7.0 języka C#. W praktyce jednak, nie każdy może tak łatwo brnąć do przodu i podejrzewam, że jest sporo deweloperów, którzy wciąż nawet nie spróbowali szóstki.

Przyczyną tego stanu rzeczy najczęściej jest praca w firmie, która już jakiś czas funkcjonuje na rynku. W takiej sytuacji duży nacisk stawiamy na stabilność kodu, a każda nowa wersja czegokolwiek, stwarza potencjalne ryzyko błędu. Kompatybilny wstecz C# nie jest w tym miejscu wyjątkiem.

Dziś chciałbym Wam przedstawić kilka opcji z tej wersji języka, które rzeczywiście mogą uprzyjemnić Waszą codzienną pracę z tą technologią i które być może zachęcą Was (lub Waszych pracodawców), do ryzyka związanego z przejściem na nowszą wersję frameworka i tym samym języka C#.

freeimages.com
lut 04 2016
0

Nuget - budowanie paczek dla różnych konfiguracji i architektur

Gdy tworzymy kod jakiejś własnej paczki nugetowej, bardzo często wykorzystujemy kompilację w wariancie Any CPU. Dzięki temu docelowa DLLka zadziała zarówno na x86 jak i x64, ale również i na ARM w sytuacji gdy mamy do czynienia z systemami mobilnymi. Niestety nie zawsze jest tak kolorowo i prosto, i czasem Any CPU po prostu nie zadziała - np. w sytuacji gdy mamy składowe DLLki przygotowane pod określone platformy/architektury...

W takim przypadku musimy skompilować osobne DLLki pod każdą architekturę. Wszystko byłoby proste, gdyby nie trzeba było ich umieścić wspólnie w jednej paczce Nugeta, która standardowo zakłada jedną DLLkę o określonej nazwie. Czy można sobie zatem z tym jakoś poradzić i serwować różne biblioteki w zależności od systemu i architektury? Okazuje się, że tak - wystarczy tylko posiadać odpowiedniego nowego Nugeta i w prawidłowy sposób spreparować plik nuspec:)

freeimages.com
gru 03 2015
0

Templated control - gdy ważna jest wydajność

Ostatnio przy jednym z projektów służbowych, musiałem zrobić layout, który obejmowałby zagnieżdżanie kontrolek ListView. Poziomy scroll przesuwał elementy głównej listy, natomiast w każdym takim obiekcie, znajdował się panel zawierający pewne określone dane + kolejny ListView przesuwany już wertykalnie. Nie byłoby w tym nic nadzwyczajnego, gdyby nie fakt, że wewnętrzne kontrolki ListView, zawierały w sobie listę elementów na których znaleźć można było kontrolki użytkownika. Szybko okazało się, że to był błąd, bo w praktyce takie kontrolki w dużej ilości są strasznie nie wydajne, nawet przy zastosowanej wirtualizacji.

Na szczęście w porę przypomniałem sobie o innym rodzaju kontrolek, który pozwolił mi zaoszczędzić nawet kilkadziesiąt megabajtów pamięci i znacznie przyspieszył ładowanie widoku:-)

freeimages.com
lis 25 2015
0

ListView w poziomie w Windows Phone

Niektóre kontrolki z których korzystamy w Windows Phone, przygotowane są do pracy w różnych orientacjach. Możemy je używać zarówno w pionie jak i w poziomie. W niektórych przypadkach, wystarczy przestawić jedną właściwość. Z taką sytuacją mamy do czynienia np. w StackPanelu. Inne są nieco bardziej złożone, co nie oznacza, że ich konfiguracja jest jakoś wielce karkołomna. Taką właśnie sytuację mamy w przypadku kontrolki ListView, która domyślnie działa również wertykalnie.

freeimages.com
lis 15 2015
0

Obsługa notyfikacji push w Universal Apps

Dwa tygodnie temu popełniłem wpis na temat lokalnych notyfikacji, które z powodzeniem bez większych przeszkód można użyć w każdej aplikacji uniwersalnej. Dziś chciałbym pozostać w temacie notyfikacji, aczkolwiek tym razem podejdziemy do sprawy trochę bardziej globalnie - zajmiemy się tzw. notyfikacjami push.

Idea tego rodzaju notyfikacji jest prostsza niż się to powszechnie zdaje, a kluczem do sukcesu w naszym przypadku będzie usługa WNS oraz testowy serwis do wysyłania pushy. Oczywiście wysyłka notyfikacji docelowo powinna zostać zrealizowana w jakiejś usłudze backendowej, ale to już temat na inny wpis;-)

freeimages.com
paź 28 2015
0

Obsługa lokalnych notyfikacji w Universal Apps

Notyfikacje są obecnie czymś powszechnym w każdym liczącym się mobilnym systemie. Dzięki nim, jesteśmy na bieżąco z mailami, powiadomieniami z Facebooka, czy choćby z wynikiem wyczekiwanego meczu. Windows Phone nie odstaje niczym w tym obszarze od swojej konkurencji, a nawet oferuje kilka dodatkowych, ciekawych opcji.

W dzisiejszym tekście przedstawię przykładowe użycie lokalnych notyfikacji typu toast - zarówno w wersji harmonogramowanej (scheduled) jak i normalnej. Notyfikacje innego typu wysyła się w zbliżony sposób - zmieniamy rodzaj używanych klas oraz XMLa.

freeimages.com
paź 22 2015
0

Biblioteki warte poznania w C# - Conditional XAML

W swojej stosunkowo krótkiej karierze programistycznej, zdążyłem już pracować z różnymi technologiami. Naturalnym tego następstwem są oczywiście wszelkiej maści porównania. Czasem np. porównuje Razora z MVC do XAMLa. I choć w teorii bardziej rozbudowana jest ta druga z obu tych technologii, to w praktyce Razor ma kilka konstrukcji, do których tęsknym okiem wyglądają designerzy XAMLa. Jedną z nich jest IF. I choć w teorii można ją częściowo zastąpić choćby za pomocą VisualStates, to w praktyce okazuje się, że istniejące rozwiązania, nie zawsze są do końca optymalne, ale od czego są dodatkowe biblioteki;-) Powitajcie Conditional XAML - prostą bibliotekę, która skrywa olbrzymie możliwości.

freeimages.com
paź 15 2015
0

MVVM Light - wykorzystanie messengera w komunikacji

Czasem tworząc aplikację wykorzystującą XAML, chcielibyśmy przekazywać dane pomiędzy poszczególnymi stronami. Niestety technologie Microsoftu nie są do tego dobrze przygotowane. Co prawda możemy zawsze wykorzystać jakiś globalny obiekt kontekstu, ale w praktyce jest to rozwiązanie nieefektywne. Możemy również wykorzystać foldery lokalne/roaming, który opisywałem tutaj, ale w pewnym sensie strzelamy tutaj do muchy z armaty. Czy można to zrobić jakoś prosto i elegancko? Okazuje się, że tak - choć po części zależy to od używanych przez Was bibliotek.

Jakiś czas temu opisywałem na łamach tego blogu MVVM Light, która upraszcza wdrożenie modelu MVVM w wielu technologiach Microsoftu, a oprócz tego skrywa w sobie kilka fajnych funkcji. Dziś chciałbym opisać jedną z nich - Messengera, który może być swego rodzaju mostkiem informacyjnymi pomiędzy ViewModelami umieszczonymi w naszej aplikacji.

freeimages.com
paź 10 2015
0

Implementacja komendy Tap dla TextBlocka

Domyślnie tworząc aplikacje uniwersalne, możemy korzystać z rozbudowanego modelu zdarzeń. Każde ze zdarzeń, może zostać zaimplementowane w tzw. części code-behind wybranej strony/kontrolki. Nie wszystkim do końca odpowiada jednak ten model. Spore grono programistów jest zwolennikiem architektury MVVM, która promuje wydzielone konstrukcje zwane ViewModelami. Ważnym elementem ViewModel są komendy, które pozwalają na realizację określonych zadań. Niestety nie wszystkie kontrolki Microsoftu są do tego dobrze przygotowane. Czy można sobie z tym jakoś poradzić?

Częściowo tak. Po pierwsze, można wykorzystać Behaviors SDK (więcej na ten temat pisałem tutaj). Jeśli to rozwiązanie nie zadziała, można skorzystać z innych metod alternatywnych - np. z Attached properties. I to właśnie ten sposób mam zamiar Wam dzisiaj zaprezentować.