Pytanie CloudKit - brak logiki po stronie serwera?


Z CloudKit, możesz skupić się na rozwoju aplikacji po stronie klienta i pozwolić iCloud eliminuje potrzebę pisania logiki aplikacji po stronie serwera. CloudKit zapewnia uwierzytelnianie, prywatną i publiczną bazę danych, usługi strukturyzowane i przechowywania zasobów - wszystko za darmo z bardzo wysokimi limitami.

Nie możesz przesłać żadnego kodu do uruchomienia na serwerach Apple?

Słyszałem, że porównywano ją do Google App Engine i innych platform przetwarzania w chmurze, ale bez możliwości uruchomienia własnego kodu, czy nie jest to całkiem ograniczona i nie do końca podobna?

Na przykład, jeśli chcę utworzyć aplikację informacyjną, która okresowo przesyła historie na tematy interesujące użytkownika, nie można tego zrobić za pomocą CloudKit, ponieważ potrzebowałbym zaplanowanych zadań i przetwarzania danych na serwerze.

jakieś pomysły?


21
2018-06-05 20:01


pochodzenie


Spekulacja: Wątpię, by jabłko wydało coś z taką wadą jakiemuś konkurentom. Parse jest bardzo tani, łatwy do zintegrowania i ma kod w chmurze. Jeśli sprawa z jabłkami nie była lepsza, prawdopodobnie by ją wykupili (tak jak zrobili to z Testflight) - Fernando Mazzon
Przechodzę tutaj przez to samo doświadczenie: A) To wygląda na bezpłatną (lub tańszą) wersję GAE. B) Och, czekaj, nie będę mógł dostarczyć mu logiki, zadań crona, a to będzie ograniczone do urządzeń Apple, więc zapomnij o rozszerzeniu aplikacji poza początkowe bazy danych. Wybierając Cloudkit jako platformę, zasadniczo wesprzeć siebie i swoje dane w martwym punkcie. Byłoby interesujące zobaczyć kilka przypadków użycia zestawu Cloud Kit w świecie rzeczywistym. - Jonny
Czy twój serwer może również subskrybować? Lubię otrzymywać powiadomienia, gdy coś w bazie danych się zmienia, aby mógł wysłać powiadomienie push na inne platformy, takie jak Android. - Mark


Odpowiedzi:


Po stronie serwera

Jak powiedziałeś, CloudKit nie pozwala na kod po stronie serwera.

Ale są możliwości.

Crons

Nie chcesz codziennie łączyć się z panelem iCloud, aby wykonać push poprzez dodanie rekordu. Jednym z rozwiązań jest kodowanie aplikacji na serwerze Mac (prawdopodobnie Mac mini jako serwer stanie się bardziej popularny w CloudKit), które dodają nowe Daily  CKRecord codziennie.

Subskrypcje

Koncepcja subskrypcji polega na tym, że klient rejestruje określone aktualizacje. Możesz utworzyć typ rekordu o nazwie Daily na przykład i spraw, aby użytkownicy się do niego rejestrowali. Powinieneś sprawdzić Dokumentacja Apple i filmy WWDC14 (nawet jeśli Subskrypcje nie są szczegółowe, to dobry punkt wyjścia).

Dobrą rzeczą jest to, że powiadomienia push są powiązane z koncepcją subskrypcji. Więc w zasadzie mówisz: Wyślij moje powiadomienie dla każdego nowego CKRecord typu Daily dodany.

Impreza BaaS

Jaki jest sens korzystania z CloudKit (kontra Parse i inne?)

  • Cena: CloudKit ma naprawdę dobrą cenę
  • Gotowy do pracy: 2 kliknięcia w XCode i jesteś gotowy do pracy
  • Spójność użytkownika: otrzymujesz darmowy login dla wszystkich swoich urządzeń za pośrednictwem swojego konta iCloud. Z bardzo dobrym systemem prywatności. I możesz uzyskać relacje z inteligentnym systemem.

Ale:

  • Trzymasz się platformy Apple. Nie wiemy nawet, czy moglibyśmy wyeksportować dane.
  • Na razie tylko centrowanie danych (bez kodu po stronie serwera)
  • Pulpit nawigacyjny CloudKit jest zbyt ograniczony

Przyszłość

CloudKit wciąż jest całkiem nowy. W czasie WWDC niektórzy za mną zrozumieli, że wciąż pracują nad tym. Moje zakłady dotyczą dwóch ważnych punktów:

  • Wykonanie kodu po stronie serwera poprzez zdalne zaplanowane zadania
  • CloudKit for Analytics (strona wizualizacyjna)

Edycja: Apple faceci są w pełni świadomi i zaniepokojeni brakiem dostępu do Internetu dla danych. To znaczy, że pewnego dnia to może być dostępne z innych platform. Czytałem w komentarzu, że Apple prawdopodobnie kupiłoby Parse, gdyby CloudKit nie był lepszy, AFAIK, który próbowali kupić Parse (umiejętności kupują to powiedziane, ale tak naprawdę nie wiemy).

Zaktualizuj WWDC15

CloudKit jest teraz dostępny w JS, a niektóre panele są już dostępne. Poczekaj i zobacz.

Zaktualizuj luty 2016

CloudKit teraz obsługuje Żądania usługi sieci Web serwer-serwer

Odnośniki do usług internetowych


22
2017-07-13 09:10





W niektóre przypadki, nie potrzebujemy logiki po stronie serwera, a samo przechowywanie danych statycznych może obejmować cały scenariusz użycia.

W takim przypadku bardzo pomocne byłoby udostępnienie wolnej dostępnej pamięci, w której można coś przechowywać. CloudKit zapewnia takie produkty, a nie pełną platformę usług.

Tak, jest ograniczony. W każdym razie może być przydatna dla niektórych osób. Na przykład Twoja sprawa może być obsługiwana przez CloudKit. Chociaż CloudKit to tylko pamięć statyczna, obsługuje subskrypcję. Który monitoruje zestaw warunków i przekazuje powiadomienie o zdarzeniu do klienta. To szczęście, że jedyną funkcją działającą w tle obsługiwaną przez CloudKit jest to, czego potrzebujesz.

W każdym razie, jeśli potrzebujesz więcej, możesz potrzebować rozważyć pełnoprawne serwery. Zazwyczaj prosty usługi sieciowe z prostą obsługą kodu po stronie serwera są również ograniczone.


2
2018-06-06 04:20



Tak, subskrypcje brzmią ładnie, ale w jaki sposób baza danych CloudKit otrzymywałaby artykuły informacyjne bez kodu po stronie serwera? Wciąż potrzebujesz coś aby uzyskać gdzieś wiadomość i umieścić ją w bazie danych. - alan0xd7
@ alanp21 Pobieranie danych wiadomości nie musi być wykonywane na serwerze. Nic nie stoi na przeszkodzie, aby publikować nowe dane od niektórych klientów, a serwer po prostu udostępnia dane. Jeśli chcesz zaindeksować wiadomości, nadal możesz uruchomić przeszukiwacz na komputerze klienta i możesz opublikować tylko wynik na serwerze. - Eonil


Nie możesz przesłać żadnego kodu do uruchomienia na serwerach Apple?

Możesz i nie możesz. Nie możesz przesyłać do serwera usług opartych na kodach / SOAP, zamiast tego możesz przesyłać / przechowywać obserwatorów na serwerze, zwanych subskrypcją.

całość jest dość ograniczona i nie do końca porównywalna?

Powiedziałbym w CloudKit i w MBaas klient komunikuje się z serwerem chociaż węższy i bardziej odporny interfejs: nie można przesłać egzotycznej usługi sieciowej do parsowania XML, manipulacji bazami danych i na tej podstawie uruchamiać powiadomienia push, ale RestFull architektura umożliwia wykonanie 4 podstawowych operacji w magazynie danych, a dzięki klientowi subskrypcji można uzyskać powiadomienia o operacjach INSERT / UPDATE / DELETE wykonywanych na tabelach.

Myślę MBaas to kolejny krok w ewolucji architektury serwer - klient. Po pierwsze wydaje się, że jest to ograniczenie, ale możesz robić wszystko, jak w świecie usług internetowych opartych na protokole SOAP. Rozwój jest niezwykle szybki / skalowalny / wygodny w użyciu i łatwiej kontrolować takie rzeczy jak uprawnienia / konfiguracja, utrzymanie serwera, bezpieczeństwo prawie nie wymaga wysiłku.


2
2018-03-24 10:56





Wierzcie lub nie, naprawdę można uzyskać NAPRAWDĘ daleko z tym podejściem.

Nie korzystałem z CloudKit, ale mogę opisać dla ciebie mój stos aplikacji:

AngularJS (lub ulubiony framework do renderowania HTML po stronie klienta): pojedyncza strona zawiera serię szablonów / kontrolerów wybranych przez router i sterowanych przez użytkowników zmieniających kotwicę w celu wybrania strony, na której się znajdują.

Firebase.io (lub ulubiony magazyn w chmurze): wszelkie dynamiczne dane trafiają do magazynu dokumentów w chmurze. Kontroler musi załadować dane i wyrenderować szablon na kliencie, a gdy dane się zmienią, odesłać dane. Zapewnia to również uwierzytelnianie i autoryzację, ponieważ można ograniczyć dostęp do danych.

Teraz potrzebujesz miejsca na serwery HTML / CSS / JS / images ... które nie wymaga "wykonania kodu po stronie serwera", wystarczy serwer WWW, na którym możesz umieścić zasoby.

Za pomocą tej techniki można przechowywać wszystkie tematy użytkownika w bazie danych dla tego użytkownika, a kiedy ładuje się strona, idź i zsumuj wszystkie źródła tych tematów (również przechowywane w bazie danych) po stronie klienta. W przykładowej aplikacji nie ma niczego, co w rzeczywistości wymaga wykonania po stronie serwera, o ile widzę, o ile masz magazyn chmurowy, który zapewni ci usługi uwierzytelniania i autoryzacji oraz "głupi" serwer WWW służący do udostępniania zasobów statycznych.


1
2018-06-06 00:01



Jest to prawdą w przypadku stosu deweloperów niezwiązanego z serwerem, ale myślę, że nie rozumie, do czego służy CloudKit. - Patrick Gunderson
Możesz umieścić całe przetwarzanie po stronie klienta (w aplikacji, na telefonie), ale nie sądzę, że byłby to bardzo dobry interfejs użytkownika. Korzystajmy z podcastów jako prawdziwego przykładu - Pocket Casts używa własnego serwera do pobierania wszystkich kanałów RSS i agregowania nowych informacji o odcinkach, więc pobieranie aktualizacji odcinków jest bardzo proste i szybkie. Inna aplikacja, Downcast, pobiera i przetwarza kanały RSS w Twoim telefonie lokalnie, a zatem jest znacznie wolniejsza, zwłaszcza gdy masz 10 lub więcej subskrypcji. - alan0xd7
Moim zdaniem, prawdziwa aplikacja "połączona z chmurą" miałaby odpowiednik po stronie serwera, aby poprawić wrażenia użytkownika (do przetwarzania danych, komunikacji itp.). To nie jest to, co Apple zapewnia, ale jest to, czego deweloperzy naprawdę potrzebują. - alan0xd7


CloudKit nie jest pełnowartościową usługą hostingową. Zamiast tego jest to SDK dla iCloud. Nie powinieneś umieszczać tam strony internetowej, tylko przechowywać dane użytkownika, które możesz chcieć wykorzystać w wielu aplikacjach lub platformach.

Interfejsy API iCloud umożliwiają aplikacjom przechowywanie danych aplikacji w iCloud, dzięki czemu aplikacje są automatycznie aktualizowane. Korzystaj z iCloud, aby zapewnić użytkownikom spójne i bezproblemowe korzystanie z urządzeń obsługujących iCloud.


0
2018-06-05 23:28



Cóż, myślę, że moim głównym problemem jest to, jak wszyscy traktują to. Jeśli czytasz wiadomości związane z WWDC od kilku ostatnich dni, wielu sugeruje, że Apple oferuje bezpłatną alternatywę dla usług takich jak Google App Engine lub Amazon Web Services. Ale w rzeczywistości CloudKit naprawdę oferuje tylko przechowywanie danych i autoryzację. - alan0xd7
Tak, ludzie wydają się chwalić rzeczy, których tak naprawdę nie rozumieją. - Patrick Gunderson