úterý 31. prosince 2013

Nový rok 2014

Všechno nejlepší do Nového roku 2014, hodně čistého a znovupoužitého kódu, který přežije nejeden projekt.

A hlavně zdravíčko a dobré přátele.

středa 4. prosince 2013

Immutable collections in .NET



http://blogs.msdn.com/b/dotnet/archive/2013/09/25/immutable-collections-ready-for-prime-time.aspx
http://msdn.microsoft.com/en-us/library/dn467185(v=vs.110).aspx
http://blogs.msdn.com/b/ericlippert/archive/2007/11/13/immutability-in-c-part-one-kinds-of-immutability.aspx

Spojování dvou a více .NET Assembly.

Pokud programujete v C nebo C++, tak jistě víte, že knihovny lze linkovat do výsledné aplikace staticky nebo dynamicky. Pokud linkujete staticky, tak se vám knihovny připojí k výsledné aplikaci a nepotřebujete nic dalšího k aplikaci přidávat. Pokud linkujete dynamicky musíte mít společně s aplikací také dynamické knihovny dll.

V prostředí .NET ale jsou knihovny referencované dynamicky a s aplikací teda potřebujete i .NET dll knihovny.

Tak mě napadlo, jestli by nešlo .NET assembly slinkovat také staticky. Vše nasvědčuje tomu, že žádné statické slinkování nenní možné jak jsme byli zvyklí z céčka.
Googloval jsem na netu a řešením je spojení více assembly do jedné použitím utility ILMerge.exe

ILMerge

čtvrtek 28. listopadu 2013

GIT - aplikace patche

Na správu mého GIT repozitáře, použivam SourceTree od Atlassianu. Aktuální verze 1.3.2 neumí vytvářet patche do souboru a následně je aplikovat v jiné větvi. Přes git konzoli to alr není žádný problém.

$ git format-patch BruceLee --stdout > z:/lib.patch

Git vytvořil z podsledního komitu větve BruceLee rozdílový soubor a uložil ho do z:/lib.patch.

Nyní se můžete přepnout do větve, kde chcete patch aplikovat.
Aplikaci patche můžete otestovat.

$git apply --check z:/lib.patch

A pokud je vše v pořádku, můžeme patch aplikovat.

git am --signoff < z:/lib.patch

čtvrtek 7. listopadu 2013

What is SignalR?

http://signalr.net/

ASP .NET MVC - hostování webové aplikace v konzolové aplikaci

Pojďme se podívat zase na jeden problém z vývojářského života. Máme svůj vlastní klient - server systém a server nám běží jako služba ve windows nebo jako konzolová aplikace. Jedná se o náš vlastní server. Tento server má přístup do SQL a data zpřístupňuje pro klienty pomocí webových služeb. Protože dotazy na některá data jsou časově náročné, server si udržuje vlastní cache.

Já bych potřeboval do tohoto serveru přidat další modul (dll), který se při startu zavede pomocí MEF. Já bych potřeboval, aby tento modul poskytoval webovou aplikaci ASP .NET MVC - Razor. Myslel jsem si, že to nebude vůbec žádný problém, protože já již umím hostovat MVC Web API. K tomu se používá třída
HttpSelfHostServer
Tutorial o ASP .NET Self hosting WebAPI

Hostování Web API mám vyzkoušené a funguje bez problému, tak jsem zkoušel také nahostovat webovou aplikaci která hostuje MVC stránky s enginem Razor.

Řešení jsem prozatím nenašel, berte to špíše jako položenou otázku a sběr informací.

Jedna možnost je použití knihovny RazorEngine. Pokud se chcete vyhnout neoficiálním knihovnám třetích stran, pojďme ještě hledat dál.

Dále je možné hostovat webovou aplikaci pomocí

IIS 7.0 Hostable Web Core