Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Stáhněte si Texy.net a NForms přes SVN

16.02 - 13. září 2008 | ASP.NET 2.0

Projekty, které se rozhodnu vypustit ven, většinou hostuju na CodePlexu. Jeho UI mi přijde mnohem rychlejší než konkurenční SourceForge a přehlednější než Google Code. Nevadí mi, že za tímto hostingem stojí velký zlý Microsoft, naopak to vítám. Tento projekt byl jedním z prvních krůčků na podporu OpenSource ze strany Microsoftu a navíc je místem, kde samotný Microsoft uveřejňuje spoustu zajímavých projektů. Například budoucí části ASP.NET.

Ale zpět k tématu. Tento hosting je postaven na Team Foundation Serveru (TFS), který je centrem pro týmovou práci, verzovacím systémem a v neposlední řadě i systémem pro vedení požadavků a úkolů. Tím se odlišuje od konkurence, která většinou používá tradiční SVN, což je po léta de-facto standard pro verzování OpenSource projektů. Komunita dlouho volala po tom, že chtějí SVN i CodePlexu. V MS nakonec udělali kompromis.

SVN Bridge

SVN Bridge byl první krok. Je to taková malá utilitka, kterou si spustíte na vašem počítači a ona překládá vaše SVN požadavky do řeči, které rozumí TFS. Můžete s ní pak používat oblíbené nástroje jako TortoiseSVN nebo VisualSVN. Ale pořád je tu nutnost donahrát si utilitu a ani URL repository ve tvaru http://localhost:8081/<tfs.server.name>/<projectname> nejsou nějak úchvatná.

Tento měsíc však došlo k zásadní změně. Na Codeplexu byl nasazen serverový SVN bridge, takže už nemusím pouštět lokální verzi, ale rovnou můžu pro snadný přístup přes SVN nástroje používat adresy následující:

  1. pro NForms https://nforms.svn.codeplex.com/svn
  2. pro Texy.net https://texynet.svn.codeplex.com/svn

No a vy také ;)

NForms na Codeplexu

13.59 - 16. srpna 2008 | ASP.NET 2.0

Na Codeplexu se objevil nový opensource projekt a není to nic menšího než NForms. Zatím jste se o nich mohli jen dočíst u mě na blogu a prakticky vyzkoušet taktéž tady – přidávání komentářů frčí na NForms. Nyní však máte jedinečnou možnost stáhnout si zdrojáky, poučit se z nich, nahlásit chyby nebo diskutovat náměty na vylepšení, zkompilovat, spustit testy a konečně nasadit a používat ve vlastních projektech.

No není to skvělé?

K čemu je to dobré?

NForm jsem napsal jako programátorské cvičení. Líbila se mi Davidova myšlenka, chtěl jsem napsat něco v C# 3.0… Jenže je to taky docela užitečná věc. Daj se pomocí toho snadno vytvářet znovupoužitelné formuláře nezávislé na infrastruktuře. Můžete je používat jak v klasickém ASP.NET modelu (můžete použít více než jeden formulář na stránce), tak v MVC nebo MVP modelu.

Další vývoj

Aktuálně připravuju podrobnější dokumentaci na wiki, ale pro začátek jistě bude stačit pár mých spotíků tady na blogu, příklady užití najdete v Unit Testech, popřípadě další moudra najdete v nedokonalých XML komentářích v samotném kódu.

Při psaní wiki jsem už našel nějaké možnosti pro vylepšení, tak až bude připraveno, hodím je zase na Codeplex. Stay tuned…

Časem bych chtěl přidat podporu validace na straně klienta. Zatím se generují jen některé třídy, na které lze napojit vlastní implementace v JavaScriptu, ale není to nic pro složitější validaci…

Credits

Musím poděkovat Davidovi za inspiraci, NForms jsou značně obšlehnuté od Nette::Forms (dříve známé jako NForms), trochu inspirace jsem pobral i u New Forms z djanga, některé zajímavé nápady, jak využít novinky C# 3.0 pro změnu z ASP.NET MVC. Takže díky!

Redakční systém na ASP.NET MVC

18.56 - 23. prosince 2007 | Webdesign

Rozhodl jsem se, že, jako praktickou ukázku použití TDD a ASP.NET MVC (dále jen MVC), budu psát seriálek, výsledkem něhož bude základ třetí verze redakčního systému Gryphoon.

Upozornění: Je možné, že některým věcem nebudete v průběhu čtení rozumět. Dopuručuji si přečíst související články, na jejichž základě tento seriál staví.

Už z této podstaty vyplívá, že půjde o OSS. Projekt je hostován na Codeplexu pod MS-PL. Dalším důležitým znakem je použití Texy.net jako základního kamene systému, spojení s databází bude zajišťovat Castle ActiveRecord, pro testování použiji xUnit.net a Rhino Mocks. Tím jsou nastíněny základní prvky architektury a můžeme se pomalu dát do práce.

Struktura projektu

Prozatím to vypadá na tři projekty v řešení:

  1. Rarous.Gryphoon – Knihovna, jádro systému, které bude obsahovat objekty doménového modelu, konfiguraci a další potřebné komponenty.
  2. Rarous.Grypho­on.Spec – Knihovna s jednotkovými testy. xUnit.net místo termínu test používá fakt, proto bude brát tento projekt jako specifikaci zbylých částí.
  3. Rarous.Grypho­on.Web – Webová aplikace. Projekt bude obsahovat webovou část tj. Controllery a View (řadiče a pohledy) a Helpery (pomocníky).

První řádky specifikace

Naší jedinou specifikací bude projekt Rarous.Grypho­on.Spec. Tím co je v něm dáno, by se měly řídit oba zbylé projekty. Dobrým zvykem v TDD je navrhovat systém od shora dolů. První věc, se kterou přijdete do styku, je URL. Zatím nebudu výchozí schéma URL měnit, proto ani nebudu psát testy na Routování (zatím). Defaultní schéma URL by mělo být už milionkrát otestované v rámci MVC projektu.

Takže budeme pokračovat dál a to k řadiči článku (ArticleController). Ten by měl být zodpovědný za vytváření článků nových, jejich následnou editaci, zobrazování a v poslední řadě i mazání.

V prvním CTP, zatím nejsou předdefinované Mock Objekty pro controllery, proto použijeme Test subclass pattern, pro ověření činnosti controlleru. Controller bude mít následující rozhranní:

Diagram IArticleController

A třída pro testování vypadá následovně:

public class TestArticleController : ArticleController {
  public string ActualViewName { get; set; }
  public string RedirectViewName { get; set; }
  public string ActualMasterName { get; set; }
  public object ActualViewData { get; set; }

  protected override void RenderView(string viewName, string masterName,
                                     object viewData) {
    ActualViewName = viewName;
    ActualMasterName = masterName;
    ActualViewData = viewData;
  }

  protected override void RedirectToAction(object values) {
    RedirectViewName = values.ToDictionary()["Action"];
  }
}

Teď můžeme napsat první test, který ověří, že pokud přijdeme na adresu /article/ otevře se nám editor nového článku. Pozn. Využívám výchozího schématu routeru [controller]/[action]/[id] -Pokud není action definovaná vybere se Index. V budoucnu ho změním na lepší, ale pro začátek stačí.

[Fact]
public void ArticleController_DefaultActionShouldShowEditor() {
  TestArticleController controller = new TestArticleController();

  controller.Index();

  Assert.Equal("Editor", controller.ActualViewName);
}

Spustíme test – neprojde. Aby test prošel, musíme doimplementovat metodu ArticleController.Index.

[ControllerAction]
public void Index() {
  RenderView("Editor");
}

Teď už by měl test projít. Jenže aby to fungovalo i na webu, musíme ještě dopsat View /Views/Article/Editor.aspx… Do příště za domácí úkol.

Závěrem

Aktuální stav je na codeplexu ke stažení, ale zdaleka není funkční. :) Průběžně ho budu s dalšími díly doplňovat. Příště tedy uděláme ukládání nových příspěvků a editaci. Když se pozorně podíváte na zdrojáky, zjistíte, že tak trochu cheatuju :)

Jo abych nezapoměl, pokud jste sem přišli přes RSS a ještě jste si nezměnili adresu feedu, učiňte tak zavčasu. Děkuji

Související

Tagy: ,

Texy.net na CodePlexu

21.11 - 24. května 2007 | ASP.NET 2.0

Dneska jsem vypustil Texy.net na CodePlex. Vypublikoval jsem první Wiki stránky uploadoval RC1 a RC2 verzi a experimentální PhalangerProvi­der. Vloženy jsou i zdrojáky. K RTM verzi zbývá již jen dopsat dokumentaci, najít a opravit bugy.

Pokud mátě někdo zájem se do projektu zapojit, dveře jsou otevřené.

Co je v plánu po 1.0 RTM

PhalangerProvider nebo IronPythonProvider nebo IronRubyProvider, který bude plně použitelný se současným API Texy.net. Nejde o nic jiného než využít kompilátorů pro dynamické jazyky do kterých už byla nebo bude Texy! portována. Zajímavé je, že byl uvolněn Texier což je Texy na Ruby, ale IronRuby je ještě neuvolněná. Naproti tomu je venku IronPython skoro ve verzi 2.0, ale žirafka jeste svoji PyTexy neuvolnila (: No a nakonec Phalanger. Vněm se Texy zkompilovat podařilo, ale furt se mi to nějak nezdá. Tomášova verze mi neumožňuje konfigurovat moduly, což je dost zásadní věc…

No a pak, nebo mezi tím, konečně něco jako to, čemu předběžně říkám Texy# :)