Dlaczego świat .NET nie ma nic takiego jak rails / grails / django / roo? [Zamknięte]

10

Wydaje mi się, że szybko rozwijające się platformy internetowe radykalnie zmienią świat aplikacji internetowych.

Minęło pięć lat od wydania Rails 1.0 dla Ruby i od tego czasu widzieliśmy Grails dla Groovy, Django dla Python i Roo dla Java.

Ale o ile mi wiadomo (co jest prawdopodobnie ograniczone, ponieważ jest programistą Java / Groovy), nie ma podobnego frameworka dla C #.

Czy coś takiego istnieje? Jeśli nie, dlaczego nie?

Edycja: Całkiem możliwe, że nie używam właściwych słów, kiedy mówię „szybki rozwój”, ale mówię o frameworkach, które mogą umożliwić zbudowanie działającego silnika blogów w 30 minut. Nie można tego racjonalnie zrobić, powiedzmy, w Javie, Spring i Hibernacji, biorąc pod uwagę różne konfiguracje potrzebne do znalezienia kontrolerów oraz zarówno konfigurację, jak i kod niezbędne do zachowania i odzyskania twoich encji.

Mówię więc o frameworkach, które obsługują wszystkie CRUD z mentalnością konwencyjną nad konfiguracją. Jeśli ktoś ma właściwe słowa na to, o czym mówię, daj mi znać.

Eric Wilson
źródło

Odpowiedzi:

5

Wydaje mi się, że nie ma jeszcze nazwy dla tego rodzaju frameworka, o którym wszyscy mówicie w tym wątku. Nazywam je teraz po prostu frameworkami podobnymi do RAILS : Frameworki, które zwiększają produktywność, koordynując inne istniejące frameworki w celu zaspokojenia podstawowych potrzeb większości aplikacji internetowych, ale jednocześnie ukrywając wszystkie złożoności przed deweloperem.

Przez podstawowe potrzeby mam na myśli implementację dostawcy trwałości, kontenera do sprawdzania zależności, narzędzia do rejestrowania, platformy MVC, silnika szablonów HTML, zestawu startowego szablonu witryny sieci Web ze wstępnymi ustawieniami CSS, struktury zabezpieczeń i niektórych bibliotek JavaScript dla funkcji AJAX i inne fajne rzeczy. Frameworki podobne do RAILS aranżują wszystkie te frameworki i narzędzia na podstawie modelu domeny (byty twojego systemu wraz z jego atrybutami).

Dzięki zasadzie Konwencja nad konfiguracją frameworki te eliminują potrzebę definiowania wielu plików konfiguracyjnych zwykle wymaganych przez frameworki, które one koordynują (takie jak Spring, Spring MVC, Hibernate, Log4J itp.), Domyślnie przyjmując konfiguracje na podstawie nazewnictwa , struktura i metadane zawarte w tych samych definicjach klas.

Dzięki dynamicznym językom, z których korzystają te frameworki (takie jak Ruby, Groovy, Python, Clojure itp.), Z wyjątkiem SpringRoo, który implementuje dynamiczne zachowanie w Javie za pomocą AspectJ, funkcje należące do poniższych frameworków są rozszerzone i są udostępniane deweloperowi w tak jednolity i elegancki sposób, że jest on świadomy podstawowych technologii.

Wreszcie dzięki technice rusztowania automatycznie generowane są testy jednostkowe, testy integracyjne, kontrolery i widoki dla głównych funkcji (CRUD) dla każdego z obiektów domeny zdefiniowanych przez programistę.

W świecie .NET nic nie zostało jeszcze opracowane, zgodnie ze wszystkimi poprzednimi definicjami. Ale nic nie stoi na przeszkodzie, aby to się wkrótce wydarzyło. Istnieją świetne frameworki, narzędzia i biblioteki już dostępne w świecie .NET, które mogą być koordynowane przez nowy framework podobny do RAILS stworzony dla CLR. Istnieją między innymi Unity, Spring.NET i Castle Windsor dla potrzeb niezależności. Entity Framework 4, NHibernate i iBatis.NET są całkiem dobrymi dostawcami usług .NET Persistence. Program ASP.NET MVC zdecydowanie przybył ze wsparciem dla różnych silników szablonów oprócz tradycyjnego programu ASP.NET.

Nawet jeśli nikt nie zdoła użyć języka DLR do zbudowania tego rodzaju frameworka, każdy, kto ma wystarczającą ilość, będzie mógł podążać ścieżką SpringSource i wdrożyć strukturę podobną do RAILS z jakimś statycznym językiem, takim jak F #, C # lub VB.NET, wykorzystując aspekt -Oriented Container (jak AspectSharp lub Gripper-LOOM.NET), aby uzyskać dynamiczne zachowanie.

Chciałbym wiedzieć o każdej grupie osób, które próbują opracować taki framework w .NET.


źródło
4

Nie wiem, co rozumiesz przez „platformy szybkiego rozwoju”. Definicja „szybkiego rozwoju”, którą znam, nie ma nic wspólnego z językami, paradygmatami lub strukturami, ale raczej z użyciem szybkiego prototypowania i iteracyjnego rozwoju do stworzenia systemu. Z dowolnego języka lub frameworka można korzystać równie dobrze.

Nigdy wcześniej nie korzystałem z Grails ani Roo, ale Django i Rails są platformami MVC, więc ich odpowiednikiem w .NET będzie ASP.NET MVC .

Thomas Owens
źródło
1
Cóż, widziałbym ASP.NET MVC jako odpowiednik Spring MVC. A powiedzenie, że Rails jest strukturą MVC, przypomina powiedzenie, że Stackoverflow jest witryną zapewniania jakości, jak wymiana ekspertów. To prawdziwe stwierdzenie, ale brakuje w nim najważniejszej cechy i przyczyny jej dzikiego sukcesu.
Eric Wilson,
1
Proszę wyjaśnić „najważniejszą funkcję”. Rails to nic innego jak framework MVC dla języka Ruby. To wszystko uchwyciło.
Thomas Owens
2
Cóż, Spring to framework MVC dla Javy, ale nie robi wiele z tego, co czyni Rails i Grails świetnymi. Na przykład w przypadku Grails po utworzeniu obiektu domeny mogę pisać, grails generate-alla Grails produkuje kontrolery, widoki i zarządza trwałością.
Eric Wilson,
3

Możesz przejść do programu Visual Studio i przeciągać i upuszczać elementy sterujące na stronie internetowej oraz łączyć je z bazą danych z niewielkim kodem lub bez kodu. Jedno kliknięcie, aby przetestować / wyświetlić. I jedno kliknięcie, aby przesłać na stronę internetową (ok, wprowadź dane uwierzytelniające).

Nie chodzi o to, że jest to najczęściej używany lub nawet zalecany sposób na zrobienie tego, ale tak naprawdę nie jest to o wiele łatwiejsze.

JeffO
źródło
0

Ponieważ aplikacje internetowe .NET mają cykl kompilacji.

Ruby / Python są bardzo zwinnymi / zwinnymi i dynamicznymi językami.

Tam, gdzie pracuję, mamy ogromną aplikację internetową .NET, a czasy kompilacji są porównywalne z typowym średnim do dużego programem C ++.

W wolnych chwilach tworzę aplikacje internetowe w języku Python, a czas kompilacji wynosi 0. Po prostu nie ma żadnego kroku kompilacji. Działający interpreter ponownie ładuje pliki .py podczas ich zapisywania.

hasen
źródło
1
Cóż, aplikacje Java mają cykl kompilacji, ale Spring Roo nadal działa cuda dla aplikacji Java / Spring. Myślę więc, że są tutaj inne problemy.
Eric Wilson,