2010-05-29 13 views
6

Udało mi się uzyskać stronę C# asp działającą pod Ubuntu/Apache/mono, ale nie chcę pisać mojej frameworki na tych stronach ASP, chcę użyć prostego C#, a potem użyję języka szablonowego dla moich poglądów. Ale nie wiem, od czego zacząć?Jak stworzyć framework sieciowy w języku C# bez ASPX?

C# jest językiem kompilowanym, więc ... jak to zrobić? Czy skompilowałbym wszystko, a następnie przystawię apache do (pojedynczego) pliku wykonywalnego i przekażę URL żądania? Czy mogę poprosić o konkretne strony .cs, a następnie poprosić Apache'a, żeby to skompilował, a następnie "wyświetlał" tylko wtedy, gdy został zaktualizowany? Czy pliki "widoków" mogą być kompilowane indywidualnie, aby uniknąć ponownej kompilacji wszystkiego za każdym razem, gdy nastąpi zmiana? Czy jest jakaś "baza", z której mogę pracować, czy też będę musiała ponownie odkryć dostęp do zmiennych GET i POST (czytając informacje o nagłówku) i wszelkiego rodzaju inne rzeczy, które uważamy za oczywiste w językach takich jak PHP?

Odpowiedz

3

AFAIK nie ma powodu nie możesz robić, co chcesz na szczycie Rdzeń ASP.NET, używając takich rzeczy jak HttpApplication, HttpHandler itd. Na przykład możesz przekierować wszystkie adresy URL do pojedynczego HttpHandler i pobrać je ręcznie.

Proponuję przyjrzeć się, jak to robi ASP.MVC - utworzyć nowy projekt ASP.NET MVC w MonoDevelop, spójrz na Global.asax.cs, otwórz plik Web.config i spójrz na niestandardowe procedury obsługi protokołu http i moduły, które rejestruje. ASP.NET MVC to OSS, dzięki czemu możesz w nim także zaglądać.

+0

Ahh ... doskonale. Próbowałem dowiedzieć się, jakie są potrzebne kości do aplikacji ASP.net. Myślę, że to zadziała. – mpen

1

Jeśli w ogóle nie podoba Ci się korzystanie z ASP, możesz spróbować odczytać kod źródłowy ASP i zobaczyć, w jaki sposób implementują one potrzebne funkcje, takie jak dostęp do informacji POST i GET, routing, zarządzanie sesją itp.

To jednak będzie tona pracy. Jedyne, co możesz zrobić, to zaimplementować zdecydowaną większość logiki w bibliotekach klasy C# i po prostu użyć ASP do "hostowania" aplikacji i przekazywania wymaganych danych.

+0

To naprawdę nie jest "silnik" ASP, z którym jestem przeciwny, w większości nie lubię składni. Jeśli mógłbym używać ASP, ale unikałem stron .asp, jest to możliwe. – mpen

+0

AFAIK, uzyskanie klasycznej ASP do uruchamiania poza środowiskiem IIS jest o wiele wyższym rzędem niż ASP.NET. –

+0

Przepraszam, że uznałem za oczywiste, że dyskusja była w odniesieniu do asp.net –

1

Nikt nie prosi o umieszczenie ciężkiego kodu na stronach ASPX. (Proszę nie używać ASP, co jest kolejną rzeczą).

W modelu ASP.NET WebForms można użyć trybu Code Behind.

W modelu ASP.NET MVC masz znacznie większą kontrolę nad prawie wszystkimi aspektami.

Dlatego oszczędź trochę czasu i zanurz się w istniejących modelach. Próba wprowadzenia własnego może być stratą czasu.

Mono obsługuje oba modele.

Poza ASP.NET został zaprojektowany w sposób odmienny do PHP, a trzeba wiedzieć, że wprowadza różnic, które nie zawsze mogą spełnić wymagania powyżej.

+0

Dążę do skrzyżowania Django i RoR. Będę musiał zagłębić się w te rzeczy, aby sprawdzić, czy naprawdę mogę je zgiąć, aby spełnić moje potrzeby. Myślałem, że ASP.NET MVC był już frameworkem? Ja * nie chcę * być zmuszonym do używania * jakichkolwiek * ich paradygmatów. Chcę mieć pełną kontrolę nad tym, jak i kiedy wywoływana jest funkcja/działanie każdego widoku, co zostanie mu przekazane, co powinno zostać zwrócone, który szablon powinien zostać załadowany ... Chcę napisać własny router URL itp. I ' Wcześniej zrobiłem to w PHP, ale w PHP wciąż otrzymujesz wszystkie magiczne zmienne globalne. W porządku, przechodzę wokół jakiegoś obiektu "request" ... – mpen

+0

... jeśli to konieczne, tak jak robi to Python/Django (mod_wsgi ??). Po prostu próbuję dowiedzieć się, od czego zacząć/co zbudować. – mpen

+0

Pod wrażeniem. Cóż, prawdopodobnie powinieneś wykorzystać Apache i część Mono do zbudowania własnego modelu ASP.NET. :) –

1
  1. Mówiłeś ASP. Czy to jest strona ASP lub ASP.NET, z której korzystasz? Duża różnica.
  2. Czy możesz uzyskać dostęp do żądania/odpowiedzi na stronach ASP.NET, jeśli tak, powinieneś być w stanie uzyskać dostęp do GET/POST.
  3. Czy wiesz, jak zbudować to, co próbujesz w normalnym IIS/ASP.NET? Jeśli nie, uratuj sobie trochę rozsądku i najpierw zacznij działać z grubsza. To ogólna rada, aby zmniejszyć liczbę zmiennych/niewiadomych, z którymi pracujesz naraz.
  4. Ostatecznie budujesz własne programy obsługi. Wyobrażam sobie, że będziesz musiał mieć trochę biblioteki dll, która zobaczy żądanie dla strony xxx, odczyta tę stronę i utworzy instancję klasy backing. Spojrzenie na źródło asp.net mvc może pomóc partii (w ramach dodatkowych pobrań).
+0

1. Uh .. Nie wiem. Jaka jest różnica? Mam jedną stronę 'index.aspx', którą mogę wyświetlić pod localhost ... 2. Err .. Powinienem być w stanie. 3. Nie, nie mam pojęcia :) Użyłem zwykłego starego PHP, PHP z ciastem i Python/Django. Zakładam, że koncepcje powinny być przenoszalne na język C#. Dlaczego powinienem go również zbudować w ASP.NET? – mpen

1

Istnieje wiele alternatywnych języków szablonowych dostępny dla ASP.NET MVC, patrz na to pytanie znajduje się lista loooong: ASP.NET MVC View Engine Comparison

+0

Cóż, to nie * tylko * język szablonów. Zauważyłem, że przy każdej strukturze, z której korzystałem, wszystkie mają plusy i minusy, ale wszystkie robią coś w sposób, którego naprawdę nienawidzę. Chciałbym zbudować jeden * mój * sposób, nawet jeśli nikt go nie używa. – mpen

+0

Cóż, biorąc pod uwagę, że pracujesz w C#, zacznij od ASP .NET MVC, który jest zarówno miły, jak i open-source, z jednym z tych silników szablonów i zacznij ewoluować w kierunku, w którym chcesz iść. W ten sposób zaczniesz od czegoś, co działa i możesz odpowiedzieć na problemy, które napotkasz, tworząc coś pożytecznego. –

+0

Powinienem dodać, jeśli chcesz coś takiego jak Django lub RoR, ASP .NET MVC plus Fluent NHibernate plus lepszy silnik szablonowy to prawie wszystko. już tam. Nie zmusza cię to do niczego, i jak powiedziałem, jest to open-source, więc jeśli czegoś nie lubisz, możesz to zmienić. –

Powiązane problemy