Przejrzałem kilka pytań, technologii budowy dobrej warstwy usług, ale mam kilka pytań na ten temat, z którymi potrzebuję pomocy.
Najpierw trochę informacji o tym, co mam do wymagań. Obecnie mamy wiele aplikacji internetowych, które komunikują się ze sobą w sposób przypominający pajęczynę (wszystkie rozmawiają ze sobą w mylący sposób za pośrednictwem usług internetowych i danych w bazie danych).
- Chcemy to zmienić, tak aby wszystkie aplikacje przechodziły przez warstwę usług, w której możemy więcej pracować z pamięcią podręczną i hermetyzować wspólne funkcje i nie tylko.
- Chcemy, aby ta warstwa miała również interfejs API sieci Web, aby klienci zewnętrzni mogli pobierać informacje z usługi.
Problem, jaki widzę, polega na tym, że jeśli budujemy warstwę usługi z powiedzmy MVC4 Web API, nie musimy komunikować się między aplikacją za pomocą webAPI, co oznacza, że musimy budować adresy URL i pobierać JSON / Xml. To nie brzmi zbyt skutecznie. Zakładam, że lepszym sposobem byłaby praca z jednostkami i WCF do komunikacji między aplikacją, ale wtedy moglibyśmy utracić magię Web API?
Pytanie brzmi zatem, czy istnieje sposób na wykorzystanie warstwy usługi jako interfejsu API sieci Web (JSON / XML) i jako warstwy usługi zaplecza z jednostkami. Jeśli jesteśmy zmuszeni do korzystania z 2 różnych warstw usług, będziemy musieli powielić niektóre funkcje i inne złe rzeczy.
Mam nadzieję, że pytanie jest wystarczająco jasne i zapytaj, czy potrzebujesz więcej informacji.
Odpowiedzi:
W przypadku zestawu aplikacji hostowanych w intranecie i ewentualnie w jednej sieci LAN najlepszym rozwiązaniem może być połączenie TCP dla usług.
W tym sensie zasugeruję, tworząc aplikację usługi, która ujawnia zestaw punktów końcowych i interfejsów usług, które mogą działać w TCP. Mogą z nich korzystać domowe aplikacje lub zaufane aplikacje.
Aplikacja usługi mogłaby mieć inny zestaw punktów końcowych i interfejsów usług, które są udostępniane do konsumpcji przez Internet (web API).
Tak więc aplikacja usługi może być hostowana za pomocą WCF, a punkty końcowe / interfejsy należy dodać zgodnie z potrzebą.
źródło