poniedziałek, 3 lutego 2014

.NET Framework - z czym to się je

Co to .NET?

Ogólnie rzecz biorąc .NET to framework - ogromna biblioteka wypuszczona przez Microsoft umożliwiająca nam pisanie programów z gotowymi już do tego funkcjami. Za pomocą .NET'u możemy pisać aplikacje typowe dla systemu Windows, aplikacje sieciowe, strony WWW etc. To biblioteka typowo skierowana w OOP (object oriented programming, lista języków znajduje się tutaj). Jako, że dot Net jest tworem Microsoftu to jesteśmy praktycznie zmuszeni do używania Visual Studio, by pisać pod niego efektywne programy.

Wikipedia mówi:
Zadaniem platformy .NET Framework jest zarządzanie różnymi elementami systemu: kodem aplikacji, pamięcią i zabezpieczeniami. W środowisku tym można tworzyć oprogramowanie działające po stronie serwera internetowego (IIS) oraz pracujące na systemach, na które istnieje działająca implementacja tej platformy (czyli nie tylko systemy z rodziny Windows, jednak implementacja .NETu na innych platformach jest dość "na siłę")

Jedne z ważniejszych elementów .NET
CLI - Common Language Infrastructure- struktura Microsoft .NET do obsługi programów wymagających różnych środowisk
CIL - Common Intermediate Language - wspólna platforma językowa .NET
CLR - Common Language Runtime - platforma uruchomieniowa danego programu

Tak więc wg tego obrazka



Kod z języka .NET (np. C# / VB etc.) jest kompilowany do neutralnego kodu jakim jest CIL, następnie owy język jest zamieniany w kod maszynowy przez CLR. Teraz jaki jest sens tego? O ile zadanie CIL jest dość proste, o tyle CLR musi zamienić kod CIL'a pod polecenia procesora i jego architekturę.

Dzięki tej metodzie twórcy języka muszą przeportować go tylko do CIL, reszta należy do CLR. Roboty jest o wiele mniej, wystarczy wyszukać w google ile możliwch architektur aktualnie występuje.

Plusy:
- Obsługa wielu języków
- Języki oferują podobną składnie (VB / C#), lecz może być wykorzystany w inny sposób
- Możliwość tworzenia potęznych stron WWW (ASP.NET, artykuł)
- Garbage Collector (kwestia dyskusyjna, dla lajków bardzo fajna rzeczy anyway)

Minusy:
- Host wymaga zainstalowanej biblioteki do uruchomienia danego programu (napisanie Hello Word w .NET 4.0 wymaga, by ktoś próbujący go otworzyć również go potrzebował, czyt. pobrał te 90+ MB)
- Wersja platformy podlega wersji Visual Studio, czyli na VS2008 nie stworzymy aplikacji w .NET 4.0, gdyż jest ono obsługiwane dopiero w VS2010
- Projektu z VS2010 nie otworzy się w VS2008, niezależnie od jego treści (trzeba tu trochę grzebać w plikach i pozmieniać ustawienia ręcznie)

Jest to telegraficzny skrót, gdyż rozpis wszystkich komponentów mógł bym zamieścić w oddzielnych artykułach. Imo jest to przerost formy nad treścią, ponieważ o dużo większe detale można zapytać
www.google.com

piątek, 31 stycznia 2014

DLL - Dynamic Link Library

Czasami bywa tak, że pisząc jakiś kod myślimy, że jego elementy przydadzą nam się w przyszłości, że jego zastosowanie będzie możliwe nie tylko w aktualnym projekcie, ale np. za miesiąc. Oczywiście można go zapisać na dysku, albo... stworzyć bibliotekę!

Czym jest biblioteka? Biblioteka to plik (skompilowany w formacie .dll) zawierający funkcje z których możemy później korzystać. Cechy takiej biblioteki

  1. Możemy zamienić ją w pojedynczy plik dll, do którego kodu nikt nie będzie miał wglądu
  2. Zagnieżdżanie skompilowanej biblioteki jest dużo bardziej poręczne
  3. Biblioteka przenosi nie tylko kod, ale także, np. grafikę (z czego głownie powstaje dla kodu, grafikę powinien zawierać plik .exe, nt.plik dll powinien ważyć jak najmniej)
  4. Co ciekawe - dzięki plikom dll można użyć funkcji C# w Javie, funkcji z C w C#, etc. Nie jestem pewien limitów tych możliwości, jednak jest to dość istotna możliwość. Na pewno występują problemy z wersjami (używanie DLLek z .NET 4.5 w 4.0 odpada, jednak działa to w przeciwną stronę)
Żeby stworzyć bibliotekę DLL:
1. Tworzymy nowy projekt, typ: Class library, nazywamy go przykładowo SimpleDll
2. Piszemy własny kod, niech to będzie np. funkcja do pisania czegoś na konsoli
3. Wciskamy "Start", w folderze projektu (u mnie):
\Documents\Visual Studio 2013\Projects\SimpleDLL\SimpleDLL\bin\Debug
Utworzył się plik SimpleDll.dll
4. Otwieramy / tworzymy nowy projekt konsolowy do testu
5. Klikamy Project -> Add Reference
6. Wybieramy z zakładki Browse naszą bibliotekę (wyszukamy ją ręcznie na dysku)
7. Teraz, gdy trafiła do drzewka po prawo (gałąź references) możemy używać jej kodu, np.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DllTest
{
    class Program
    {
        static void Main(string[] args)
        {
            SimpleDLL.DLLClass normalClass = new SimpleDLL.DLLClass();

            normalClass.WriteSth();

            SimpleDLL.DLLStaticClass.WriteSthAnother();

            Console.ReadKey();
        }
    }
}
Wynik na konsoli:
sth                   
snother sth      
To wszystko