2012-03-20 15 views
21

Próbuję wykonać usługę WWW JSON Restful w języku C/C++. Próbowałem Axis2/C i Staff, które działają doskonale do serializacji/deserializacji XML, ale nie dla JSON.Sposoby wdrożenia usługi JEST RESTful w języku C/C++

+6

Przyjemne pytanie, ale skorzystaj z mojej rady: jeśli możesz zrobić tę usługę internetową w Javie (lub innym przyjaznym dla systemu zorientowanym na usługi sieciowe) - zrób to. Przesyłanie wiadomości za pomocą materiałów o niskim poziomie, które oferuje C++, jest świetne do nauki, ale spowolni to w większości przypadków. – Poni

+0

Poni ma rację. Nawet jeśli "wykonasz własną" usługę Java, (używając, powiedzmy, Jetty i Gson), możesz znaleźć coś prostego w kilka godzin, znalazłem. Mogą istnieć struktury, które wykonują wszystkie czynności serwletu dla ciebie, ale nic od razu nie przychodzi ci do głowy. – Tom

+1

@poni i Tom. A co z szybkością, co jeśli chciałbym napisać framework json i chciałem, żeby był cholernie szybki? Czy c \ C++ nie byłby dobrym pomysłem? – gideon

Odpowiedz

3

Można spojrzeć na ffead-cpp. Oprócz zapewnienia wsparcia dla json i restfull serwisów internetowych, zawiera również więcej funkcji. Ta struktura może być jednak zbyt duża dla twojej sytuacji.

1

Istnieje JIRA project rozwiązano obsługę JSON w AXIS2/C.
Zaimplementowałem w moim projekcie i udało mi się z pisarzem (konwencja Badgerfish), ale nadal staram się zarządzać z czytelnikiem.
Wydaje się bardziej skomplikowane zarządzanie ze stosu w pamięci.

+0

Naprawdę nie został rozwiązany. Rozdzielczość "Nie naprawi". Dzieje się tak dlatego, że łatka: 1) dla starych Axis2/C-1.3, 2) jest bardzo niestabilna i nie działa w ogóle, 3) Tylko dla okien. – loentar

3

Wypróbuj . Jest to prosta, ale prosta struktura usług WWW JSON RESTful fast. Może być zainstalowany na serwerze Apache2, Nginx lub własnym prostym serwerze http.


W odniesieniu do osi 2/C z JSON. Wygląda na to, że oficjalny Axis2/C nie jest już konserwowany. Tak więc Axis2/C staje się przestarzały (ale wciąż działa).

Obsługa JSON dla Axis2/C jest dostępna w projekcie axis2c-unofficial.

Istnieją instrukcje instalacji dotyczące instalacji Axis2/C z obsługą JSON pod Linux, Windows using binary package, Windows from source code.

Możesz wypróbować go przy pomocy personelu WSF przy użyciu przykładu Klienci (REST) ​​w trybie JSON (dostępnym z katalogu kodu kadrowego staff/samples/rest/webclient).

1

JSON i JSONPath są obsługiwane dla C i C++ w gsoap z nowym code generator and a new JSON API, aby szybko zacząć.

Dołączono kilka JSON, JSON-RPC and REST examples. Zarządzanie pamięcią jest automatyczne.

Generator kodu może być przydatny. Weźmy na przykład json.org menu.json fragment:

{ "menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
     "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
     ] 
    } 
    } 
} 

Komenda gsoap jsoncpp -M menu.json generuje ten kod, aby zapełnić wartość JSON:

value x(ctx); 
x["menu"]["id"] = "file"; 
x["menu"]["value"] = "File"; 
x["menu"]["popup"]["menuitem"][0]["value"] = "New"; 
x["menu"]["popup"]["menuitem"][0]["onclick"] = "CreateNewDoc()"; 
x["menu"]["popup"]["menuitem"][1]["value"] = "Open"; 
x["menu"]["popup"]["menuitem"][1]["onclick"] = "OpenDoc()"; 
x["menu"]["popup"]["menuitem"][2]["value"] = "Close"; 
x["menu"]["popup"]["menuitem"][2]["onclick"] = "CloseDoc()"; 

czytanie również analizowany wartości JSON i kod JSONPath mogą być generowane przez to narzędzie.

EDIT

celu wyjaśnienia, wiersza polecenia generator kodu jsoncpp pokazuje kod API do odczytu i zapisu danych w formacie JSON za pomocą pliku .json jako szablon, który uważam, że jest przydatna, aby zapisać czas na napisanie kodu API, aby wypełnić i wyodrębnić dane JSON. Kod zapytania JSONPath można również wygenerować za pomocą tego narzędzia.

Powiązane problemy