publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
15 skomentuj »

TAGI: scala , ruby , asp.net , python , c#

2009-07-30 11:19:41, dodał Jan Koprowski

Python i Ruby w jednym stali domu ...Python i Ruby w jednym stali domu ...

... o ASP.NET C# nie mówiąc nikomu.

Bolączki początkującego w ASP.NET

Może to bolączki początkującego programisty a może rozpieszczenie. Nie wiem. Wiem jedno - ASP.NET to "pain in the ass". Ale od początku.
Interfejs stworzył kolega. Tyle wiem o tym jak to się robi. Mu się udało. Ja miałem zacząć wypakowywać go treścią z bazy danych. To co oferuje C# w tym zakresie jakoś nie zachwyca. Zacząłem od tworzenia zapytań w "stringu" i podpinania pod kontrolkę. No i działało... Kiedy już byłem zadowolny ... przypomniałem sobie o SQLInjection :/ Oczywiście funkcji do escapowania nie zaświadczysz w tak nowoczesnym języku jak C#.
Zaświtała mi myśl, aby zobaczyć czy może nie warto (póki czas) przerzucić się na MVC. Składnia SQLowata wbudowana w język programowania fajna, ale totalnie biedna. Bez joinów nie pakuję się w tą zabawę.
Wróciłem więc do zwykłego ASP.NET. Skoro już muszę w tym programować to może stworzę sobie fajną abstrakcję dla bazy danych. Zleciała mi na tym większość dnia. Niestety wybrałem ślepą uliczkę. Tylko dlaczego tak cudowne środowisko jak Visual Studio nie powiedziało mi, że wybierając na target SqlDataReader nie uda mi się go podpiąć jako DataSource do GridView z paginowanie. Nie wiem. A może po prostu nie wiedziało. Tak więc w cudowny sposób stanąłem z gotową, ładną acz kompletnie nieużyteczną klasą do obsługi bazy danych i straconymi 10 godzinami roboczo godzin. Dobrze, że chociaż mi za nie zapłacą.

Maszyna czasu - wskazówka cofa się

Mój dzisiejszy dzień i w ogóle całe programowanie w ASP.NET przypominają mi młodość. Czasy, w których nie wiedziałem co to framework. Czas, w którym wymyślało się koło na nowo. Czas, w którym tworzyło się mnóstwo autorskich rozwiązań.
W ASP.NET to nieunikonione. Nie jeżeli choć troszkę próbujemy dorównać wygodzie oferowanej przez takie technologie jak Django, Pylons, Symfony czy "Drupal Framework". A chyba nie umiem już zaakceptować faktu, że "coś jest źle zrobione".
Pomimo braku wygodnych i dobrze przemyślanych mechanizmów nie natrafiłem na jakiś wysyp "gotowców", które ułatwią Ci życie w sieci. A szkoda. Klasa do porządnej obsługi bazy danych by się przydała. Obecnie - wygląda to dziwnie.
Przyglądając się technologiom stosowanym w ASP.NET mam wrażenie, że tym co tam się znalazło rządziła "burza mózgów". 30 pomysłów, które po prostu zaimplementowano a potem zaczęto się zastanawiać jak to ma razem działać. I coś tam "sklecono". Szalenie niewygodne, nieelastyczne i dziwnie niskopoziomowe.

Pokolenie RuPy

Możemy kłócić się całymi latami o wyższość jednej technologii nad drugą. Idealizować Scalę, krytykować Pythona za niekonsekwencję, Rubego za "abstrakcję". Jednak po dzisiejszym dniu mam to po raz kolejny w nosie. W każdym z tych języków tworzenie witryn to bajka. Żal mi całych mas ludzi, którzy myślą, że ASP.NET to szczyt możliwości. Zarazem zaczynam z każdą chwilą doceniać każdy kolejny projekt, który przyjdzie mi tworzyć z użyciem, którejkolwiek z tych technologii.
Wszystkim, którzy cierpią na bezsenność z powodu wymyślania argumentów na korzyść/niekorzyść jakiegoś języka programowania - daję receptę. Zaprojektujcie w ASP.NET system newsów z komentarzami i bazą użytkowników. Spróbujcie zabezpieczyć aplikację przed XSS, CSRF, SQLInjection z użyciem C# i zróbcie to równie ładnie jak w Python'ie czy Ruby'm. Efekt - gwarantowany: "No more tears".

Podsumowanie

Część artykułów robiących wielkie halo wokół Iron Ruby i Iron Python to mydlenie oczu. Odniosłem kiedyś wrażenie, że Microsoft "robi łaskę", że implementuje te dwa świetny języki na swojej platformie. Może być tylko inaczej. MS idzie po najniższej linii oporu. Stara się zapewnić, godne porządnego, szanującego się programisty, (sic!) środowisko. Środowisko, które zacznie zbliżać się możliwościami do obecnych trendów. Jednak moim zdaniem jeszcze daleko do tego. Oczywiście. Elastyczność Ruby'go i Python'a będzie biła na głowę C# w każdym miejscu i usprawni tworzenie witryn o 150%. Jednak dopiero zastosowanie frameworków znanych ze świata CPython'a czy CRube'go sprawi, że będzie to opcja do rozważenia.

Prawda jest taka, że Microsoft ma problem. Ten problem nazywa się IIS. Jak widać doszli do wniosku, że jedynym wyjściem z niego to zrobić działające z nim implementacje tego co dobre. Oby tylko nie "ulepszyli" całości po swojemu robiąc z genialnych technologii kolejną, której nie da się używać.

P.S. Autor podkreśla na koniec, że w ASP.NET programuje bardzo krótko i negatywne zdanie o technologii może wynikać ze słabej znajomości języka.

Strona tego bloga

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
15 skomentuj »

Polecamy

Reklama

Komentarze

  • hmm

    #1 hmm 2009-07-30 11:41:06 0

    treść P.S. właściwie mogłaby zastąpić cały ten artykuł

    IP: 83.16.144.[...] Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00

  • arkadiusz

    #2 arkadiusz 2009-07-30 11:56:52 0

    Być moż. Ale miałem ostatnio okazję przeglądać sporo kodu stworzonego przez podobno dobrych, sprawnych i dobrze znających środowisko programistów ASP.NET - i nie mogłem się oprzeć wrażeniu, że znów mamy rok 1999.

    IP: 79.98.144.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12 FirePHP/0.3

  • Ris

    #3 Ris 2009-07-30 12:01:54 0

    Cała prawda o asp.net...

    IP: 83.8.110.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12

  • Dziki

    #4 Dziki 2009-07-30 12:26:35 0

    mógłbym to samo napisać np. o pythonie django , nie czytając o nim nic wcześniej

    Polecam przeczytać choćby jakis tutorial a później wygłaszać takie sądy , akurat wypakowywanie z bazy danych to kwestia kilku minut w asp (databinding) a w asp.net mvc korzystać z jakiegoś orm'a (nhibernate,linqtosql), a składnia sqlowata(linq ) pozwala na robienie joinow, tylko trzeba trochę poczytać  a nie psioczyć od razu. a co do xss to asp ma wbudowaną ochronę przed tego typu atakami sprawdź sam i funkcje do escapingu tez sie znajdą, ale jak sie

    Najpierw nauczmy sie jak czegoś używać a później używajmy a nie na odwrót

    IP: 83.4.167.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)

  • ymon

    #5 ymon 2009-07-30 15:03:59 0

    ale co to jest 'najniższa linia oporu'?

    IP: 217.113.228.[...] Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:1.9.0.12) Gecko/2009070810 Ubuntu/9.10 (karmic) Firefox/3.0.12

  • ol3j

    #6 ol3j 2009-07-30 15:35:19 0

    Na początku był chaos... Jak nie wiesz jak się za to zabrać to się nie zabieraj. Lepiej poznaj możliwości, przemyśl rozwiąanie i dopiero napisz ciekawy post.  "Zaprojektujcie w ASP.NET system newsów z komentarzami i bazą użytkowników" - proszę bardzo i nie mów mi że  ruby czy php czy pythonie zrobisz to lepiej. Naucz się wykorzystywać technologię i dopiero ją krytykuj.

    IP: 95.48.121.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.37 Safari/530.5

  • mekto

    #7 mekto 2009-07-30 17:57:54 0

    Autor newsa niestety ma rację. ASP jest sto lat przed murzynami i faktycznie tak programowało się kilka lat temu. MVC wnosi dużo pozytywnych zmian, ale w porównaniu do framoworków dla Pythona lub Ruby jeszcze mu troche brakuje. Owszem, język C# jest całkiem przyjemny, ale to nie wysatarczy do wygodnego programowania www.

    ASP jest tak popularny ze względu na marketing Microsoftu, a nie ze względu na jego jakość. Jeżeli ktoś pozna inne technologie, to z własnej woli do ASP nie wróci.

    IP: 83.25.112.[...] Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1) Gecko/20090718 Shiretoko/3.5.1

  • jankoprowski

    #8 Jan Koprowski® 2009-07-30 18:03:15 0

    Jeżeli istnieją jakies ciekawe metody na dostęp do bazy danych z chęcią się czegos nowego nauczę. Na razie znam metodę SqlDataReader i SqlDataAdapter z wykorzystaniem DataSet. Dzis znajomy powiedział, że są jakie frameworki do BD - jakie ? Znacie jakis wart polecenia ?

    IP: 192.198.151.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.37 Safari/530.5

  • jankoprowski

    #9 Jan Koprowski® 2009-07-30 18:35:18 0

    @Dziki

    Sprawdziłem. rzeczywiscie joiny można robić. Chodziło mi o to, że na forach piszą iż relacje M-t-M  sprawiają problemy. Aby nie być gołosłownym: http://www.asp.net/learn/whitepapers/aspnet40/#_Toc223325492

    O to mi chodziło. Dla mnie taki drobiazg to podstawa. Jeżeli nie ma tak prostych operacji wiązania modeli to do rozwiązań opartych o Python'a czy Rubego jeszcze baaaaaardzo daleko.

    @Dziki ponownie

    Nie pisałbym tego wpisu nie czytając nic o ASP.NET.

    IP: 192.198.151.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.37 Safari/530.5

  • piszczyk^3

    #10 piszczyk^3 2009-07-30 20:30:17 0

    Nie znam się na kodowaniu.

    Ostatnio "kodowałem" :d w Borland Turbo Pascal ładne parę lat temu.

    Ale jednego jestem pewien: nigdy nie wejdę w ASP.NET.

    IP: 89.108.221.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.0 (KHTML, like Gecko) Iron/3.0.189.0 Safari/531.0

  • Dziki

    #11 Dziki 2009-07-30 21:14:11 0

    @

    Jan Koprowski®

    Co do relacji M-t-M to rzeczywiście w Linq-to-Sql są z tym problemy. Jednakże istnieje kilkanaście narzędzi do mapowania obiektowo relacyjnego (ORM) dla .NET. (polecam NHibernate ). Szczerze powiem ,że gdybym miał korzystać z SqlDataReader'ów i SqlDataAdapter'ów to też by mnie szlak trafiał. Jednak dlatego wymyślono ORMy. W ASP.NET piszę od roku i powiem szczerze że z początku pisze się w tym bardzo fajnie i można szybko coś napisać (coś w miarę prostego), do apilkacji intranetowych, biznesowych się jak najbardziej nadaje. Do stron dla którym ważna jest wysoka wydajność  i kontrola na html'em nie bardzo. Jeśli masz doświadczenie w Django to polecam ASP.NET MVC ogólnie podobna koncepcja tworzenia stron. Może nie da się od pierwszego dnia pisać stron z szybkością Django ale jeśli już sobie wszystko poustawiamy(wybierzemy Orm, ustanowimy konwencje któych będziemy później się trzymać) to szybkość tworzenia  stron jest porównywalna. Polecam coś takiego jak Input Builders http://www.lostechies.com/blogs/hex/archive/2009/06/17/opinionated-input-builders-part-8-the-auto-form.aspx . Wg mnie to że mamy duży wybór z jakich narzędzi korzystać są siłą asp.net mvc a nie jego słabością . W django mamy ustanowioną jedną poprawną wg twórców konwencję i jej musimy się trzymać , a jeśli nie to czeka nas dużo pracy włącznie z zmienianiem samego frameworka. Jest też pylons ale on już nie jest tak prosty jak Djano. Zawsze jest coś za coś. A i asp.net mvc jest opensourcowym frameworkiem i można go uruchamiać na mono na serwerach apacha jak ktoś chce, więc koszty tworzenia aplikacji są porównywalne do tych dla php czy pythona.

    IP: 89.74.143.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1) Gecko/20090624 Firefox/3.5

  • Dziki

    #12 Dziki 2009-07-30 21:16:10 0

    a co do relacji m-t-m w linq ciagle mówilśmy o linq-to sql a sam linq jest częścią jeżyka i znakomicie usprawnia pisanie kodu (zamiast pisania wielu zagnieżdżonych pętli for piszemy zapytanie do kolekcji obiektów w stylu sql'owym)

    IP: 89.74.143.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1) Gecko/20090624 Firefox/3.5

  • jankoprowski

    #13 Jan Koprowski® 2009-07-31 07:27:03 0

    Dzięki Dziki. Może dziś znajdę czas żeby usiąść nad kodem. Na pewno zobaczę. Na oko (wszedłem na stronke) to jest właśnie to czego szukałem.

    IP: 89.79.153.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.37 Safari/530.5

  • hmm

    #14 hmm 2009-07-31 13:24:18 0

    linq to sql akurat jest słabym ORMem

    dlatego też oficjalnym ORMem MS jest Entity Framework. Wydajnościowo nie powala, ale to wczesna wersja, zaś funkcjonalność jest bardzo duża

    IP: 83.16.144.[...] Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00

  • peperg

    #15 peperg® 2009-08-27 15:48:41 0

    Problem jest tu w różnym rozumieniu technologii. Python+Djanogo lub Ruby on Rails jest gotowym frameworkiem, środowiskiem do tworzenia aplikacji. Natomiast 'goły' ASP.NET daje niewiele. Trzeba sobie dobrać zestaw narzędzi i może coś uda się wyskrobać. Akurat nie jestem zwolennikiem ASP.NET ani nie mam za dużego doświadczenia ale podobny problem tylko na większą skalę mamy w JEE. Jakby ktoś powiedział, że JEE jest lepsze/gorsze od Pythona czy Ruby byłoby podobnie. Tutaj jest znów masa różnych EJB, Spring, Seam, Struts, ADF i pomniejszych OpenJPA, Hibernate, Toplink czy z wierzchu JSF, RichFaces, IceFaces lub jakieś oparte o szablony i MVC. Sam Spring oferuje kilka sposobów budowania aplikacji. Do tego dochodzi Goovy i GRails ...

    IP: 83.142.206.[...] Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka (słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł