Pokaż wyniki 1 do 10 z 32

Temat: JSP Servlets vs PHP

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Domyślnie JSP Servlets vs PHP

    Dostalem zadanie przeksztalcic portal zbudowany w php. Kod jest szczerze mowiac niezbyt dobry i czytelny zadnych obiektow kod struktualny. Zaproponowalem JSP Servlets. Kodu bedzie wiecej ale wszystko ladnie rozdzielilem do odpowiednich klas, sa watki wszystko idzie w dobra strone jak narazie. Niedlugo bede przedstawial prototyp menadzerowi i potrzebuje malej pomocy.
    Moglibyscie pomoc mi z argumentacja?

    Jak narazie wymyslilem cos takiego:
    1) Bardziej czytelny kod dzieki programowaniu obiektowemu
    2) Prototyp nie dlawi sie tam gdzie sie dlawil w php
    3) Mozliwosc latwiejszej rozbudowy serwisu
    4) Mozliwosc uzycia GIT
    5) Lepsze mozliwosci budowania statystyki dla serwisu.(Teraz ciezko zbierac mi dane z roznych logow i korelowanie danych

    Prosze tez o opinie czemu nie isc w kierunku JSP Servlets. Jaka inna technologie moglbym wybrac?
    Wszystkie opinie sa dla mnie rownie wazne i wartosciowe.
    Dzieki

  2. #2

    Domyślnie

    Brak klas jeszcze o niczym nie świadczy.
    95% kodu PHP jaki piszę umieszczam w "global-scope"..
    "Glue-code PHP" powinien siedzieć w global-scrope, bo tam można w biegu definiować klasy (np. observers).
    Bez tego definicja klasy ląduje (z grubsza biorąc) w bliżej nieokreślonym miejscu/module/pluginie/helperze/pliku..
    Szukanie błędów i ogólnie maintenance takiego kodu to dla mnie osobiście "pokój 101".
    Cały mój kod PHP siedzi w jednym pliku: "api.php" (przy małym projekcie jakieś 4000 linii).
    Argumentu githuba nie rozumiem. Chyba każdy projekt da się wrzucić na githuba.

    Moim zdaniem powinieneś zacząć od zaprojektowania aplikacji, stosując na przykład podejście "Domain Driven Design".
    Ostatnio edytowane przez lame2 : 06-04-2014 - 14:13
    Głos racjonalny.

  3. #3

    Domyślnie

    w czym moze pomoc mi Glue-code PHP? Czy chodzi Ci o to: GluePHP - about
    Jakie sa zalaty tego ze wszystko wrzucisz do jednego pliku api.php?
    Zaciekawiles mnie podaj jakis przyklad wyjasnij jak Ty tego uzywasz ?
    Jakies pros cons please
    Ostatnio edytowane przez szymkraw : 06-04-2014 - 14:35

  4. #4

    Domyślnie

    Definicja glue code:
    → Glue code

    Zalety 1 pliku z całym glue-code/crud czy jak byś tego nie nazwał, są następujące:
    - mniej przeskakiwania między plikami w edytorze tekstowym (oszczędzasz czas)
    - możliwość zredukowania widocznej części kodu przez użycie "code folding", dięku temu możesz na jednej dwóch stronach miec dosep do piewszego poziomu logiki całej pierdolonej aplikacji

    Szkielet pliku api.php wygląda tak:
    Kod php:
    <?php

    error_reporting
    (0);
    @
    ini_set('display_errors'0);

    // require_once 'config.php';
    // @package: https://docs.google.com/uc?id=0B7KFLJQ_HETDM1lyc2FKb2FiQUE&export=download
    require_once 'database/DB.php';
    if ( ! 
    $db ){
        if ( ! 
    $dbconfig ){
            
    $dbconfig = array(
                
    'hostname' => 'localhost',
                
    'username' => 'root',
                
    'password' => '',
                
    'database' => '',
                
    'dbprefix' => '',
            );
        }
        
    $dbconfig array_merge(array(
            
    'dbdriver' => 'mysql',
            
    'pconnect' => false,
            
    'db_debug' => true,
            
    'cache_on' => false,
            
    'char_set' => 'utf8',
            
    'dbcollat' => 'utf8_general_ci',
        ), 
    $dbconfig);
        try {
            
    $db DB($dbconfig);    
        }
        catch ( 
    Exception $e ){
            die(
    $e->getMessage());
        }
    }
    if ( ! 
    function_exists('action')){
        function 
    action($params){
            
    $old_request $_REQUEST;
            foreach (
    $params as $key => $val){
                
    $_REQUEST[$key] = $val;
            }
            
    ob_start();
            include 
    'api.php';
            
    $content ob_get_contents();
            
    ob_end_clean();
            
    $json json_decode($contenttrue);
            if ( 
    JSON_ERROR_NONE === json_last_error()){
                
    $content $json;
            }
            
    $_REQUEST $old_request;
            return 
    $content;
        }
    }
    if ( 
    $_COOKIE['sess_id'] ){
        
    $result $db
            
    ->where('id'$_COOKIE['sess_id'])
            ->
    limit(1)
            ->
    get('session')
            ->
    row_array();
        if ( 
    $result ){
            
    $user $result['user_id'];
        }
        else {
            
    $user null;
        }
    }
    else {
        
    $user null;
    }
    switch (
    $_REQUEST['action']){
        
    // ADMIN
        // AUTH
        // CRON
        // PUBLIC
        // TESTS
        
    case '':
            break;
        default:
            
    $result = array(
                
    'status' => 'error',
                
    'message' => 'No action name in request',
            );
            break;
    }
    if ( 
    getenv('HTTP_ORIGIN')){
      
    header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
        
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
        
    header('Access-Control-Max-Age: 1000');
        
    // header('Access-Control-Allow-Headers: Content-Type');
        
    header('Access-Control-Allow-Headers: x-requested-with ');
    }
    if ( ! 
    $_no_output ){
        if ( 
    $_REQUEST['callback'] ){
            
    header('Content-type: application/javascript');
            
    // echo 'callback(\''.json_encode($result).'\');';
            
    echo '/**/ callback(\''.json_encode($result).'\');';
        }
        else {
            
    header('Content-type: application/json');
            echo 
    json_encode($result);
        }
    $_REQUEST['callback'] ){
            
    header('Content-type: application/javascript');
            
    // echo 'callback(\''.json_encode($result).'\');';
            
    echo '/**/ callback(\''.json_encode($result).'\');';
        }
        else {
            
    header('Content-type: application/json');
            echo 
    json_encode($result);
        }
    }
    Do tego mam oczywiście masę dodtaków, jedna z najważniejszych to rekurencja:
    Kod php:
    <?php

    $res 
    action(array(
        
    'action' => '',
        
    // '' => $,
    ));
    Ale wracając do dyskusji JSP vs PHP for webapp backend.
    Każdy ninja wie, że PHP nadaje się do tego lepiej.
    Dziękuję
    Ostatnio edytowane przez lame2 : 06-04-2014 - 16:03
    Głos racjonalny.

  5. #5

    Domyślnie

    Ja mam ponad 80 plikow php z czego okolo 10 ma cokolwiek do roboty z wyswietleniem storny uzytkownikowi. Reszta z nich wykonuje oparacje na plikach xml ktore sa generowane po stworzeniu modelu UML. Oprogramowanie ktorego uzywamy robi walidacje tych modeli przy uzyciu dtd i schematron . Nasz tool uzywany jest do backward validation jak i ponownie sprawdza xml uzywajac dtd i schematron. Pozniej kazde entity i property z xml jest sprawdzane jednym z tych pozostalych 70 skryptow ktore maja srednio 1000 lini kodu. Kazdy z tych skryptow ma okolo 20 roznych funkcji ktore odpalane sa jedynie jesli pewne specyficzne warunki zostaly spelnione. Dalej uwazasz ze powinnienem wrzucic wszystko do jednego pliku?
    Pozatym kod ma problem z walidacja modeli powyzej 5kb a takie sie zdazaja tez!!
    Porownujac czas wykonywania kodu php i prototypu mojego wyniki sa zadawalajace ponad 20% zysku w czasie i rosnie proporcjonalnie z wielkoscia modeli.
    Uwazasz ze multi-threading w php jest tak samo przejrzysty jak w Javie?
    W mojej pierdolonej aplikacji trudno powiedziec ze ma tylko kilka poziomow logiki lol.
    Twoj kod ma 4tys lini kodu to dosc latwo ogarnac. Kod php dziala ale coraz gorzej bo coraz wiecej modeli jest coraz wiekszych a znalesc przyczyne gdzie co sie dusi jest bardzo trudne.

  6. #6

    Domyślnie

    Pytasz w zasadzie czy opłaca się przepisywać z php na php.
    To zależy od jakości kodu, podeślij package, a ja w tym czasie napiszę ogólnie...

    Musisz porównac zyski i straty,
    straty to:
    - czas poświęcony na przepisywanie
    - trudne testowanie
    zyski to:
    - potencjalnie najszybszy maintaince
    - przystępność dla modyfikacji (nie zaburzasz struktury bibliotek, bo wszystko jest "glue", a glue ma swój (mój :]) szczegółowo zdefiniowany styl )

    W ogóle, wybór technologii z niektórych punktów widzenia może być nieznaczącym sporem.
    Bo przecież mając doskonały projekt nawet w PDF (pełno dobrych UML'i) to co za różnica w czym to napiszesz?
    Różnicy nie ma, liczy się tylko profesjonalizm developera, bo każdy developer ma w swojej technologii opanowane pisanie stabilnego softu.
    Z drugiej strony często jest tak, że żeby dojść do "kodu dobrej jakości" (cokolwiek to znaczy) musisz najpierw napisać prototyp,
    a potem przepisać go według standardów.
    100% Mojego kodu kończy się na etapie prototypowania, a mimo to wszystko śmiga i wypluwa dolary
    Ostatnio edytowane przez lame2 : 06-05-2014 - 10:35
    Głos racjonalny.

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj