Interfejs API sieci Web wykorzystuje natywnie protokół HTTP. Odata jest standardem otwartym przyjętym przez wielu dużych graczy. Mogę mówić tylko z własnego doświadczenia związanego z zabawą z Odatą, a także z odkrywaniem interfejsu API sieci Web i przeprowadzaniem badań.
OData jest fajna, ponieważ jest faktycznym standardem. Możesz łatwo utworzyć bazę danych i udostępnić ją przez HTTP. Oznacza to, że możesz przechodzić przez strukturę tabeli bez żadnej konfiguracji (mówię to luźno). Możesz także uruchamiać zapytania za pośrednictwem adresu URL, które mogą zawierać lekkie LINQ:
/products/orders/[put some linq-ish query here]
To jest prawdopodobnie dobre lub złe. Uwierzytelnianie jest standardem i zostało zbudowane.
Interfejs API sieci Web jest bardziej interesujący z mojej perspektywy. Wykorzystał on funkcjonalność HTTP (komunikaty o błędach itp.) I jest nieco bardziej „natywny” dla prawdziwych żądań RESTful. Naprawdę nie bawiłem się zbytnio… Ale czytałem i słyszałem, że MVC i Web API mogą kiedyś zostać „zamężne”, znowu, może dobre, może złe…
Kiedy bawiłem się OData, utworzyłem Przechowywany Proc, Mapowałem go do powierzchni encji, skonfigurowałem silny typ powrotu, a następnie podłączyłem go do żądania adresu URL i BANG, moje żądanie RESTful jest mapowane na mój zapisany wynik proc. To było dość proste i udało mi się zdobyć dokładnie to, czego potrzebowałem.
Podsumowując
, nie miałem okazji grać z WCF API zbyt szczegółowo, ale powiedziałbym, że jest to droga do rozwoju klienta, ponieważ jest to bardziej purystyczne podejście do REST. Jeśli będziesz wykonywać mniej więcej „proste” połączenia w obie strony i odzyskiwać „Wyświetl modele”, zapewni to bardziej natywną interakcję.
Z drugiej strony. Jeśli będziesz składać złożone (ish) zapytania dotyczące danych na podstawie interakcji klienta i chcesz „zbudować” logikę zapytania i przekazać ją jako parametr, wtedy Odata może działać.
Patrzę na to, jeśli potrzebuję ujawnić moje dane w formacie strukturalnym (co oznacza strukturę tabeli / relacji), a następnie wysłać zapytanie bezpośrednio do klienta, wtedy Odata będzie działać najlepiej. Jest również dobry do umożliwienia „innym” dostępu do danych (z odpowiednim uwierzytelnianiem itp.), Dlatego jest zgodny z protokołem OData
Jeśli chcesz żądań RESTful, w których dyktujesz adres URL (/ produkty / zamówienia / 22, i tworzysz złożone „zestawy wyników” z „ukrytego” zarządzanego kodu i struktury danych ORAZ możesz również skorzystać z komunikatów odpowiedzi HTTP, Interfejs API sieci Web byłby prawdopodobnie najlepszym wyborem.
znowu wszystko to od badań i zabawy. Nie wdrożyłem ani w scenariuszu produkcyjnym / w pełni wydanym. Myślę, że oboje będą mieli swoje mocne i słabe strony, a na pewno pewne nakładanie się