BETA
Aby się zalogować, najpiew wybierz portal.
Aby się zarejestrować, najpiew wybierz portal.
Podaj słowa kluczowe
Słowa kluczowe muszą mieć co najmniej 3 sąsiadujące znaki alfanumeryczne
Pole zawiera niedozwolone znaki

Baza wiedzy











Tęcza nad sklepem dla szpiegów

10-08-2004 17:56 | sophros
czyli tworzenie własnych modułów dla Systemu Zarządzania Treścią Rainbow zbudowany na podstawie przykładowej aplikacji ASP.NET – IBuySpy Portal

Twórcy technologii ASP.NET zamierzali w nowym rozwiązaniu wyeliminować bolączki trapiące programistów ASP i wprowadzić szereg innowacji zgodnych z bieżącymi trendami w sztuce programowania. Do najważniejszych zmian należą:

  • aplikacja ASP.NET jest kompilowana do kodu natywnego zamiast interpretowania znanego z ASP przez co jest znacząco szybsza

  • kompilacja następuje przy pierwszym użyciu danej części aplikacji, czyli przy pierwszym odwołaniu się do kodu powiązanego z daną stroną (ang. Just-In-Time compilation)

  • aplikacja ASP.NET jest zgodna z modelem MVC (ang. Model – View – Controler), co zdecydowanie ułatwia rozdział pracy pomiędzy różne role w projekcie ułatwiając zarządzanie projektem i utrzymanie kodu w dużych aplikacjach

  • jest silnie powiązana z platformą .NET, dzięki czemu programista ma do dyspozycji bogatą bibliotekę klas przyspieszającą tworzenie aplikacji oraz może korzystać ze wszystkich zalet platformy (np. modelu zdarzeń, automatycznego odśmiecania)

  • aplikacje ASP.NET są skalowalne i przystosowane do pracy w środowisku wieloprocesorowym, co daje pewność, że rozwiązanie przetestowane na jednoprocesorowym komputerze będzie działało równie dobrze w środowisku klastra wieloprocesorowych maszyn

  • uproszczone zostało zarządzanie parametrami aplikacji oraz jej rozmieszczanie na serwerze webowym, który samoczynnie wykrywa umieszczenie nowej wersji aplikacji ASP.NET i zajmuje się jej udostępnieniem w sieci (np. kompilacją)

Podobnie jak programowanie na platformę .NET, tworzenie aplikacji ASP.NET wiąże się z koniecznością poznania szeregu nowych rozwiązań. W celu ułatwienia nauki ASP.NET udostępniono szereg podręczników i dokładnie opisanych aplikacji przykładowych. Jedną z nich jest przykładowa implementacja sklepu internetowego IBuySpy Store oraz jej bardziej zaawansowana wersja – IBuySpy Portal.

Dobrze opisana aplikacja dostępna wraz z kodem źródłowym licencjonowanym na przyjaznych warunkach podobnych do licencji BSD (Shaun Walker, DotNetNuke Manifest, 2003.07.22, URL) spowodowało wysyp różnego rodzaju bazujących na niej systemów zarządzania treścią (ang. CMS – Content Management Systems). Wśród nich wyróżnia się DotNetNuke (Dostępny na stronie http://www.dotnetnuke.com), który w zamierzeniu ma powielać i rozszerzać funkcjonalność PHPNuke, a także Rainbow – bardzo interesujące, darmowe rozwiązanie posiadające następujące możliwości:

  • scentralizowane zarządzanie wieloma różnie wyglądającymi portalami korzystające z jednej bazy danych i jednej instancji kodu wykonywalnego

  • na portal składają się strony, z których każda składa się z kolei z modułów odpowiadających za treść i logikę biznesową

  • administrator może przydzielać indywidualne każdemu użytkownikowi uprawnienia do dodawania/usuwania/modyfikacji treści (poprzez role)

  • możliwe jest opcjonalne włączenie przepływu dokumentów (ang. workflow) polegającego na zatwierdzaniu zmian przez użytkownika w roli redaktora (ang. approve role) przed publikacją zmian poczynionych przez użytkownika w roli pisarza (ang. publish role)

  • każdy z modułów może być dostosowywany do użytkownika i/lub jego roli

  • 15 wersji językowych (wraz z narzędziem do dodawania kolejnych)

  • dostosowanie prezentacji zarówno do tradycyjnych przeglądarek (IE, Netscape), jak i przeglądarek WAP (zasługa ASP.NET)

  • Ponadto Rainbow w obecnej wersji posiada 45 modułów standardowych, wśród których są:

  • publikacja artykułów i ogłoszeń

  • wyszukiwanie (w tym Google™)

  • edycja stron w trybie WYSIWYG

  • katalog produktów

  • zarządzanie dokumentami

  • mapa witryny

  • FAQ

  • lista zadań

  • kontakty

  • lista dystrybucyjna

  • forum dyskusyjne

  • przekształcenia na plikach graficznych

  • transformacje XSL i wsparcie dla XML

  • kanały RSS

  • oraz

  • webowy interfejs do bazy danych

  • rozbudowany panel administracyjny

  • Instalacja

    Instalacja Rainbow, mimo wielu wysiłków położonych na łatwość instalacji wszelkich aplikacji ASP.NET, nie zawsze przebiega bez problemów. Z tego względu zdecydowałem się na opisanie tego procesu tak, aby zapobiec frustracji czytelników.

    Instalacja składa się z kilku głównych kroków:

    1. Ściągnięcie źródeł Rainbow (źródła oraz narzędzia i dodatkowe moduły dostępne są na stronie http://www.rainbowportal.net) oraz MSDE (MSDE można ściągnąć ze strony http://www.microsoft.com/sql/msde/downloads/download.asp) lub MS SQL

    2. Instalacja bazy danych

    3. Instalacja Rainbow

    4. Instalacja ASP.NET 1.1*

    5. Konfiguracja Rainbow

    Krok 1.

    Przy pisaniu artykułu wykorzystałem wersję Rainbow Portal RC3. Nie poleca się używania bardzo niestabilnej wersji deweloperskiej (dostępnej jako yesterday`s lub today`s version). Do zastosowań produkcyjnych lepiej jest stosować wersję z 1.2.8.1733 (wersja 1.2.8.1738 zawiera błędy w obsłudze zatwierdzania dokumentów (ang. workflow)).

    Jeżeli na komputerze, na którym pragniemy testować Rainbow dostępna jest baza danych MS SQL lub MSDE, to należy pominąć drugi krok instalacji.

    Przy pisaniu artykułu wykorzystałem wersję MSDE 2000 Release A. Wersje wcześniejsze zawierają istotne błędy i nie są odporne m. in. na wirusa Win32.Slammer.

    Krok 2.     Instalacja bazy danych

    Dla osoby, która nie korzystała z MS SQL, ani jego darmowej odmiany MSDE, instalacja serwera baz danych wiąże się z szeregiem pułapek, zwłaszcza, że swoje ograniczenia nakłada też Rainbow. Poniżej przedstawię istotne czynności instalacyjne dla MSDE, w przypadku MS SQL sposób postępowania jest podobny.

    Po rozpakowaniu instalacji MSDE do katalogu tymczasowego trzeba wpisać ustawienia konfiguracyjne do pliku setup.ini. Ze względu na wymagania Rainbow należy użyć metod logowania udostępnianych przez SQL:

    SECURITYMODE=SQL

    a także nadać nazwę instancji bazy danych:

    INSTANCENAME="NAZWA"

    i hasło głównego administratora (użytkownik o loginie sa):

    SAPWD="hA$Ł0"

    Przy czym ze względów bezpieczeństwa warto zadbać o to, aby hasło było wystarczająco długie i skomplikowane zwłaszcza, gdy komputer na którym ją instalujemy jest podłączony do Internetu.

    Krok 3.     Instalacja Rainbow

    Zakładając, że na komputerze, na którym instalujemy Rainbow zainstalowano Internetowe Usługi Informacyjne (IIS) należy postępować następująco:

  • za pomocą Enterprise managera lub darmowego MS SQL Server Web Data Administratora (MS SQL Server Web Data Administrator dostępny na stronie http://www.microsoft.com/sql/msde/downloads/default.asp) lub też z lini poleceń bazy danych należy utworzyć pustą bazę danych o nazwie Rainbow, dodać użytkownika systemowego ASPNET z prawami właściciela bazy (db_owner).

  • wpisać do pliku Web.config stosowne ustawienia bazy danych:

  • <add key="ConnectionString" value="server=HOST\NAZWA;database=Rainbow;uid=sa;pwd=h@$l0" />

    gdzie:

    HOST – nazwa komputera

    NAZWA – nazwa instancji bazy danych

    h@$l0 - bezpiecznie hasło użytkownika sa

    oraz ustawić ścieżkę do katalogu, gdzie są źródła Rainbow zamieniając wartości domyślne:

    <add key="KeysStoreParameters" value="AssemblyName=C:\Dev\CVSROOT\Rainbow\bin\Rainbow.dll;KeysSubStore=Rainbow.Resources.Rainbow;Path=C:\Dev\CVSROOT\Rainbow\Resources;FilesPrefix=Rainbow" />

  • zmienić w pliku setup.bat w podkatalogu Setup/Scripts instalacji Rainbow nazwę bazy danych w linijce:

  • @set DBNAME=(local)

    na

    @set DBNAME=HOST\NAZWA

    a następnie go uruchomić

  • ustawić wirtualny katalog rainbow za pomocą Menedżera usług internetowych tak, aby wskazywał na instalację Rainbow oraz dodać do dokumentów domyślnych default.aspx

  • otworzyć stronę http://localhost/rainbow/ postępować zgodnie ze wskazówkami dotyczącymi dalszej instalacji

  • Krok 4.     Instalacja ASP.NET 1.1*

    Jeżeli po wywołaniu powyższego adresu zamiast strony WWW pojawi się jej źródło, to najprawdopodobniej nie zostały zainstalowane biblioteki ASP.NET, można to uczynić wykonując następujące polecenie (dla .NET Framework w wersji 1.1.4322 - Instalacja dla innych wersji jest opisana pod adresem http://www.asp.net/faq/SideBySide.aspx):

    C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i

    W przypadku używania ASP.NET w wersji 1.1 należy odkomentować w pliku Web.config linię:

    <pages validateRequest="false" />

    Krok 5.     Konfiguracja Rainbow

    Po udanej instalacji można zalogować się do portalu podając jako adres poczty elektronicznej admin i hasło admin. Teraz możliwa jest zmiana ustawień portalu. Zaleca się przede wszystkim zmienić hasło administratora.

    Pozostałe ustawienia opisane są w pliku Web.config oraz pliku Rainbow_install.doc.

    Tworzymy własny moduł

    Szczególną uwagę zwrócimy na moduł o nazwie One File Module Kit, który umożliwia stworzenie w godzinę prostego modułu rozszerzającego możliwości Rainbow. Przy tym nasz moduł nie będzie wymagał rekompilacji całego kodu portalu i zmieści się w jednym pliku (brak code behind).

    Moduł One File Module Kit wraz z przykładowymi rozwiązaniami na nim bazującymi mieści się w podkatalogu DesktopModules\OneFileModul\. Pozwala on na utworzenie prostego, własnego modułu rozszerzającego możliwości Rainbow bez zagłębiania się w mniej istotne szczegóły architektury. Przykłady dostępne są wersjach dla języków C# i VB.NET.

    Naszym celem będzie stworzenie modułu do rejestracji e-maili np. osób pragnących subskrybować biuletyn. W ten sposób rozszerzymy możliwości przykładu dostępnego w katalogu Lyris 1 o możliwość zapisu danych do bazy danych.

    Modułem jest parametryzowalna zawartość portalu, która jest widoczna bądź nie. Możliwe jest istnienie wielu instancji modułu w ramach jednego portalu. Moduł pobiera swoje argumenty z bazy danych (można je ustawić w panelu administracyjnym wpisując odpowiedni Settings string) lub z pliku XML (jak w przedstawionym przypadku). Konieczne jest uprzednie zarejestrowanie modułu w bazie danych pozwalające rozpoznać plik, którego kod jest odpowiedzialny za jego wyświetlenie i obsługę.

    Zacznijmy od otwarcia pliku LyrisExample2.ascx. W nagłówku pliku są instrukcje importujące przestrzenie nazw Rainbow:

    <%@ import Namespace="Rainbow.UI" %>
    <%@ import Namespace="Rainbow.UI.WebControls" %>
    <%@ import Namespace="Esperantus" %>
    <%@ import Namespace="Rainbow.Configuration" %>

    Umożliwiają one integrację z systemem Rainbow i dostęp do wielu jego funkcji. Import modułu Esperantus pozwoli na stworzenie zlokalizowanej wersji modułu.

    Zajmijmy się rozbudową ustawień modułu. W metodzie PageLoad odczytywane są poszczególne ustawienia do globalnych zmiennych łańcuchowych (z przedrostkiem lyris). Ze względu na to, że będziemy chcieli użyć bazy danych, potrzebne są dodatkowe parametry w postaci:

  • nazwy bazy danych, użytkownika i hasła

  • nazwy tabeli do przechowywania e-maili.

  • Stworzymy więc odpowiednie zmienne, dodamy odpowiednie wpisy do XMLowego pliku z ustawieniami o nazwie LyrisDBSettings.xml, a następnie odczytamy je i przypiszemy globalnej zmiennej SQLPolaczenie, którą wykorzystamy przy łączeniu się z bazą danych. Ostatecznie otrzymamy następującą metodę PageLoad:

    void Page_Load(Object sender, EventArgs e)
         {
              InitSettings(SettingsType.Xml);
              if (SettingsExists)
              {
              lyrisServerName = GetSetting("LyrisServerName");
              lyrisListName = GetSetting("LyrisListName");
              lyrisDBName = GetSetting("LyrisDBName");
              lyrisDBTable = GetSetting("LyrisDBTable");
              lyrisDBUser = GetSetting("LyrisDBUser");
              lyrisDBPass = GetSetting("LyrisDBPass");
              SQLpolaczenie = "server=´"+lyrisServerName+"´;database=´"+lyrisDBName+"´; uid=´"+lyrisDBUser+"´;pwd=´"+lyrisDBPass+"´";
              if (DebugMode)
              DebugInfo.Text = "server=´"+lyrisServerName+"´; database=´"+lyrisDBName
                   +"´; uid=´"+lyrisDBUser+"´; pwd=´"+lyrisDBPass+"´";
              }
              else
              Message.Text = "Błąd (brak ustawień)!";
              if (IsPostBack == false)
              {//odczyt skrzynki pocztowej z profilu zapisanego w portalu
                   email.Text = PortalSettings.CurrentUser.Identity.Email;
              }
         }

    Metoda InitSettings przygotowuje do odczytu parametrów, w naszym przypadku z pliku XML. Zmienna SettingsExist umożliwia sprawdzenie, czy plik konfiguracyjny istnieje, zaś metoda GetSetting pobierająca nazwę tagu daje możliwość odczytu kolejnych parametrów, przy czym bierze ona pod uwagę najpierw ustawienia przechowywane w bazie danych, a następnie w pliku XML, co pozwala na elastyczne manipulowanie konfiguracją modułu zarówno poprzez edycję jego właściwości z panelu administracyjnego, jak i edycję pliku konfiguracyjnego. Za pomocą metod GetSettingStr i GetSettingXml istnieje możliwość oddzielnego odczytywania parametrów z obu tych źródeł.

    Zmienna DebugMode pozwala sterować wyświetlaniem informacji przydatnych przy odpluskwianiu kodu. Jest ona ustawiana dla każdej instancji modułu oddzielnie w ustawieniach modułu w panelu administracyjnym.

    Dzięki dostępowi do ustawień portalu możemy wykorzystać dane aktualnie zalogowanego użytkownika i pobrać jego e-mail ze zmiennej PortalSettings.CurrentUser.Identity.Email.

    Procedury obsługi naciśnięcia przycisków rejestracji i usunięcia e-maila z bazy danych - SubscribeBtn_Click i LeaveBtn_Click - służą do wywołania odpowiedniej kwerendy i wyświetlenia komunikatu stosownego do jej wyniku.

    Nasz moduł, zanim będzie można go umieścić na którejś ze stron, musi być umieszczony w katalogu, który zapiszemy w bazie danych przy okazji rejestracji modułu. W naszym przypadku jest to katalog DesktopModules\ zaś ustawienia odczytywane są z _Rainbow\LyrisDBSettings.xml. W celu wprowadzenia tych ustawień należy najpierw zmienić nazwę bazy danych w pliku SetupDBPatch.bat a następnie go uruchomić. Skrypt bazodanowy zmodyfikowano w taki sposób, aby także tworzył tabelę do przechowywania e-mail z rejestracji. Po jego uruchomieniu oraz umieszczeniu plików we właściwych katalogach, moduł jest dostępny do umieszczenia w panelu administracyjnym.

    Po zalogowaniu klikamy link admin this, który pojawił się u góry strony. Po prawej stronie widać listę dostępnych modułów. Jest wśród nich moduł o nazwie Lyris DB, który właśnie utworzyliśmy (rys. 1).

    rys. 1 Lista dostępnych modułów

    Następnie dodajemy nową zakładkę (ang. add new tab) i ustawiamy jej parametry – np. na takie, jak na rys. 2.

    rys. 2 Ustawianie parametrów nowej zakładki

    Od tej chwili nasz moduł jest dostępny na zdefiniowanej właśnie zakładce. Możemy zmieniać jego parametry klikając na ikonę ołówka (zaznaczony strzałką na rys. 2). Przede wszystkim trzeba ustawić ścieżkę dostępu do pliku XML zawierającego ustawienia (rys. 3). Warto także wyłączyć tryb odpluskwiania.

    rys. 3 Ustawianie parametrów modułu

    W ten sposób utworzyliśmy nowy moduł i dołączyliśmy go do strony dostępnej poprzez zakładkę MójModuł w Rainbow. Po jej kliknięciu możemy skorzystać z jego możliwości (rys. 4).

    rys. 4 Stworzony moduł w użyciu

    Podsumowanie

    Dzięki wykorzystaniu modułu One File Module Kit możliwe jest stworzenie niewielkich lecz w pełni funkcjonalnych modułów, dzięki którym nasza witryna nabierze indywidualnego charakteru.

    W następnych artykułach opiszę, jak dokonać pełnej lokalizacji modułu, a także jak stworzyć większy moduł bez pośrednictwa One File Module Kit.

    Załączniki:

    Komentarze 4

    User 131335
    User 131335
    0 pkt.
    Nowicjusz
    21-01-2010
    oceń pozytywnie 0
    Ciekawie sie zapowiada... brakuje na codeguru artykulow dla bardziej zaawansowanych developerow, brakuje tez generalnie w polskiej Sieci opisow nowych rozwiazan. Chetnie przeczytam kolejne czesci.
    uzytkownik usuniety
    uzytkownik usuniety
    3556 pkt.
    Guru
    21-01-2010
    oceń pozytywnie 0
    Artykuł jest całkiem ciekawy. Drażni mnie niestety masa wyliczeń i poświęcenie mnóstwo miejsca na opis instalacji... :/ Może jest to gdzieś już opisane? Podać linka i OK. Ale bardzo fajnie, że ASP.net ;) tego brakuje na portalu.
    User 79017
    User 79017
    0 pkt.
    Nowicjusz
    21-01-2010
    oceń pozytywnie 0
    Nareszcie jakiś artykuł o ASP.NET, który nie stara się wszystkiego zbudować od nowa, a bazuje na gotowych i sprawdzonych rozwiązaniach - tak przecież w większości realizuje się projekty komercyjne (zwłaszcza aplikacje WWW). Na sam początek przygody z Rainbow tyle informacji wystarczy - nie trzeba znać wszystkiego żeby przygotować jakieś proste rozszerzenie. Natomiast na przyszłość przydałoby się trochę więcej na temat architektury samego systemu - co, jak i dlaczego należy robić. Ale to już chyba temat na następny artykuł (bądź artykuły). A sam opis instalacji, mimo że trochę długi, może być przydatny - widać że autor trochę "powalczył z oporną materią" i chciał tego zaoszczędzić innym...
    jedrekwie
    jedrekwie
    5 pkt.
    Nowicjusz
    21-01-2010
    oceń pozytywnie 0
    Artukul bardzo interesujacy. Szkoda tylko,ze tyle tu wyliczanki ;) Nie podzielam zdania "przedmowcow" co do przegadania procesu instalacji. Wiem - wydaje sie to nudne i malo potrzebne, ale zastanowmy sie jak czesto mnostwo czasu zajmuje poprawna konfiguracja narzedzi - tutaj dostajemy gotowe rozwiazanie na tacy - nic tylko brac!
    pkt.

    Zaloguj się lub Zarejestruj się aby wykonać tę czynność.