Chciałbym lepiej zrozumieć przyczyny modelu serwera aplikacji .NET w porównaniu do przyczyn używanych przez większość serwerów aplikacji Java.Różnice między serwerami aplikacji .NET a serwerami aplikacji Java
W większości przypadków, które widziałem w aplikacjach internetowych ASP.NET, logika biznesowa jest hostowana w procesach hosta asp.net serwera WWW. Innym powszechnym podejściem jest posiadanie fizycznie lub logicznie innego poziomu, który obsługuje obiekty biznesowe, a następnie są one prezentowane jako usługi sieciowe lub dostępne za pośrednictwem mechanizmów takich jak WCF. To ostatnie podejście zazwyczaj, ale nie zawsze, wydaje się być stosowane, gdy wymagana jest wyższa skala. W czasach obiektów COM widziałem Microsoft Transaction Server (MTS) i późniejszy hosting COM + używany do hostowania obiektów COM zawierających logikę biznesową, z MTS (teoretycznie) zarządzającym czasem życia obiektu, transakcjami, współbieżnością yada yada. Wydaje się, że model ten w zasadzie zniknął na ziemi ASP.NET.
W świecie Java możesz mieć Apache z Tomcat jako kontener serwletu i obiekty biznesowe hostowane w Tomcat. W tym przypadku Tomcat zapewnia podobną funkcjonalność do tego, co zapewnia MTS w świecie .NET.
Kilka pytań:
- Dlaczego zasadnicza różnica w porównaniu Java Microsoft podchodzi do serwerów aplikacyjnych? Musiał to być wybór architektury/projektu, gdy stworzono te ramy.
- Jakie są plusy i minusy każdego podejścia?
- Dlaczego firma Microsoft odstąpiła od modelu hostingu MTS (który jest podobny do modelu hostowania serwletów Tomcast) do bardziej powszechnego obecnego podejścia, które polega tylko na tym, aby obiekty biznesowe były częścią procesu ASP.NET serwera WWW?
- Jeśli chciałbyś zaimplementować podejście typu MTS lub podejście typu Tomcat w aplikacjach ASP.NET dzisiaj, zakładam, że powszechnym wzorcem byłoby hostowanie obiektów biznesowych w pewnym procesie IIS (prawdopodobnie na innej warstwie fizycznej lub logicznej) i dostęp za pośrednictwem WCF (lub standardowych usług sieciowych ASMX, cokolwiek). Czy to jest prawidłowe założenie?
Mam podzielić moją odpowiedź na 3 komentarze ze względu na długość. Całkowicie rozumiem twój punkt widzenia na temat otwierania/wprowadzania własnego podejścia x w stosunku do podejścia zintegrowanego, ale pytam, dlaczego nie ze względu na różnice w podejściu filozoficznym, ale raczej na poziomie technicznym i architektonicznym. Nie rozumiem, dlaczego model Microsoftu spełnia wymagania aplikacji Microsoftu i dlaczego model serwera aplikacji Java jest taki sam dla aplikacji Java. – Howiecamp
(Część 2) - Pod względem architektonicznym (z punktu widzenia ogólnych wymagań aplikacji) w obu przypadkach powinny być obecne te same problemy/problemy. Jeśli chodzi o WCF, po prostu użyłem go jako przykładu, jak aplikacja internetowa .net może mówić do innego logicznego lub fizycznie innego procesu. To może być łańcuch i sznur. To nie jest kluczowe dla mojego pytania. – Howiecamp
(Część 3) - Oczywiście hostowanie obiektów w procesie asp.net serwera WWW działa, jeśli nie potrzebujesz rozproszonej architektury. Mówię tylko, że w krajach Microsoft podejście to jest bardziej powszechne. Chcesz system rozproszony, jeśli chcesz na przykład rozprowadzić obciążenie procesowe. Zastanawiam się, czy gdyby oryginalne podejście Microsoftu z MTS dało wam tę umiejętność, to dlaczego w zasadzie skupili się na MTS i skupili się bardziej na podejściu ogólnopaństwowym? – Howiecamp