Quale modello di programmazione ASP.Net è più vicino a PHP? [chiuso]

1

Ho utilizzato Web Form di ASP.Net per l'ultimo anno o due al lavoro per lo sviluppo, ma ho usato PHP per progetti personali per 10 anni. Quindi, sono molto più esperto nello sviluppo con PHP.

Quando si tratta di ASP.Net MVC, non ho esperienza con esso perché l'ho evitato perché pensavo che sarebbe stata solo una forma più complicata di WebForms. Recentemente, ho fatto più ricerche e sembra che MVC potrebbe essere più vicino a ciò che voglio. Ma qualcosa su cui non sono ancora chiaro è quale modello di programmazione ASP.Net è più vicino allo sviluppo con PHP.

  • La mia più grande lamentela su ASP.Net WebForms è la "scatola magica". Vale a dire lo stato di visualizzazione e ScriptManager.
  • Non mi piace che WebForms abbia problemi con il mio lato client HTML / JavaScript / CSS. WebForms fa molto questo incluso, ma non limitato a:
    • Inserimento di JavaScript che non posso modificare e devo fare affidamento su Microsoft per garantire la compatibilità cross-browser.
    • Modifica forzata degli attributi name dei tag che utilizzano runat="server" .
    • Racchiudere il contenuto di <form> con un tag <div> .
    • Forzare il wrapping di tutto all'interno di un grosso tag <form> .
  • Tutto in WebForm sembra che sia adatto a sviluppatori Web con esperienza che sanno solo come scrivere applicazioni Windows con .Net.
    • I nomi standard per tag e attributi vengono modificati quando si utilizzano i tag <asp:xxx> . Ad esempio, invece di un tag di ancoraggio ( <a> ), è un "collegamento ipertestuale" (cioè <asp:HyperLink> ). Invece di href= è NavigationUrl= .
    • Il modello guidato dagli eventi.
  • Inoltre non mi piace la completa separazione del codice lato server dal codice lato client. Mi manca essere in grado di fare cose come questa ...

     <table>
         <tr>
             <td>Name</td>
             <td>Age</td>
         </tr>
         <? foreach( $people as $person ) { ?>
         <tr>
             <td><?= $person->name ?></td>
             <td><?= $person->age ?></td>
         </tr>
         <? } ?>
     </table>
    

Quindi, tenendo a mente questi punti, quale modello di programmazione è più vicino allo sviluppo con PHP (cioè, i fastidi dei WebForms che ho elencato qui esistono in MVC)?

Nota: ho trovato il modo di aggirare molti, se non tutti questi fastidi, ma non ho ritenuto che le soluzioni che uso siano rivelatrici della domanda in questione.

    
posta Drew Chapin 19.09.2013 - 03:28
fonte

4 risposte

4

In ASP.NET MVC (3 e versioni successive) usando il rasoio, l'esempio sarebbe

<table>
  <tr>
    <td>Name</td>
    <td>Age</td>
  </tr>
@foreach(var person in people) 
{
  <tr>
    <td>@person.Name</td>
    <td>@person.Age</td>
  </tr>
}
</table>

La stessa sintassi può essere utilizzata nelle Pagine Web ASP.NET . Ci sono differenze in là due tecnologie.

In MVC ci sono classi separate per controller e modelli. Il progetto ha una struttura più specifica. Il progetto è costruito prima della distribuzione.

Il progetto Pagine Web è compilato al volo, quindi puoi semplicemente cambiare un file e le modifiche appaiono. Non ha lo stesso tipo di "pipeline" di MVC.

Suggerirei MVC, ma le pagine Web sono più simili a PHP.

    
risposta data 19.09.2013 - 11:12
fonte
2

MVC è probabilmente un po 'più vicino a PHP e quindi a Web Form. I "fastidi" che fai espressamente in riferimento ai Web Forms non esistono per lo più in MVC. Tuttavia, è importante notare che, sebbene MVC sia più vicino a PHP rispetto a Web Form, è ancora significativamente diverso rispetto alla creazione di una pagina Web in PHP.

Esistono convenzioni specifiche che segui in ASP.NET MVC. Implica ancora il lato server separato e il codice "lato client" mentre lo chiami. Tuttavia, incoraggia a mantenere la logica di presentazione fuori dal controller e nella vista mantenendo tutte le logiche di non presentazione fuori dalla vista e in altri luoghi (controller, modello, livello di servizio, ecc ...).

Le pagine in ASP.NET MVC sono basate su route anziché su file. Questa è una grande differenza tra PHP base e ASP.NET MVC.

A meno che tu non abbia programmato un sito Web strutturato MVC in PHP, è comunque probabile che tu possa trovare molti concetti in ASP.NET MVC estraneo, anche se alcuni dei fastidi cui fai riferimento non sono presenti. Vanilla PHP (senza alcun framework aggiuntivo) è molto più comparabile nel modello di programmazione al classico ASP. ASP.NET MVC è più paragonabile a Ruby on Rails di qualsiasi altra cosa. Non sono sicuro che i Web Form di ASP.NET siano davvero paragonabili a qualsiasi cosa.

    
risposta data 19.09.2013 - 17:17
fonte
1

MVC ti avvicina ma è ancora molto più formale di quanto PHP voglia davvero essere, a meno che tu non stia utilizzando un framework MVC. Ciò che è più equivalente a una tipica app PHP grezza sarebbe Pagine Web ASP.NET . Ciò supporterà il codice inline come mostrato sopra senza il framework e la certezza che MVC richiede - in basso per non aver bisogno di un file controller separato. Microsoft offre anche molte librerie helper in modo da poter integrare elementi come Facebook o Twitter facendo poco più della scrittura di @Facebook.Like() nel codice.

    
risposta data 19.09.2013 - 21:14
fonte
0

Recentemente ho letto pro_asp.net_mvc_4_4th_edition e ha analizzato molti dei tuoi punti. Direi che MVC è stato specificamente progettato per EVITARE i problemi che hai menzionato. se vuoi una presentazione piacevole e completa, darei una prova al libro, è molto ben scritto.

    
risposta data 19.09.2013 - 13:40
fonte

Leggi altre domande sui tag