15 messaggi dal 15 gennaio 2013
Ciao a tutti, ho una domanda che probabilmente sarà banale...ma questo dubbio mi uccide eheheh
In un webservice asmx, che esegue operazioni su un Database, devo aprire e chiudere ad ogni chiamata la connessione con il DB?

Il dubbio mi sorge perchè in programmazione WPF posso controllare se la connessione è aperta e utilizzare SqlConnection generato in altre parti del programma.

Avrei anche un'altra domanda, ho notato che js è molto potente, quindi se utilizzassi solo pagine html con chiamate ajax(gestendo cosi molto lato client) al ws in asmx sarei un pazzo? il dubbio mi sorge perchè non riesco a capire bene le differenze tra chiamate static webmethod alla pagina aspx e chiamate a asmx. Ci sono differenze in termine di prestazioni?


Grazie
:)
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

Vasa1988 ha scritto:

In un webservice asmx, che esegue operazioni su un Database, devo aprire e chiudere ad ogni chiamata la connessione con il DB?

Sì, perché la connessione va aperta solo quando ne hai bisogno e chiusa il prima possibile.
Questo non ti causerà problemi di prestazioni, perché grazie al connection pooling, che è una funzionalità automatica del provider ADO.NET, aprire una connessione sarà un'operazione molto rapida.

Vasa1988 ha scritto:

in programmazione WPF posso controllare se la connessione è aperta e utilizzare SqlConnection generato in altre parti del programma.

Anche in WPF non dovresti tenere aperta la connessione troppo a lungo, diciamo che dovrebbe essere aperta e chiusa nell'ambito di un form di caricamento dati.
Comunque, la sostanziale differenza è che in un'applicazione web ogni richiesta viene servita su un thread differente. Dato che l'oggetto SqlConnection non è thread-safe, è imperativo che ogni thread usi la propria istanza.

Vasa1988 ha scritto:

se utilizzassi solo pagine html con chiamate ajax(gestendo cosi molto lato client) al ws in asmx sarei un pazzo?

No, assolutamente, quella delle Single page applications è una pratica che sta emergendo. Esistono appositi framework javascript che ti aiutano a realizzarne, come ad esempio AngularJS. Ti consiglio di guardare una recentissima sessione di Stefano Mostarda, la cui registrazione verrà pubblicata domani mattina, qui su ASPItalia.
Lo "svantaggio", se così vogliamo dire, è che un'applicazione del genere non si presta molto bene ad essere indicizzata dai motori di ricerca, quindi fai molta attenzione se vuoi svilupparci un frontend.

Vasa1988 ha scritto:

chiamate static webmethod alla pagina aspx e chiamate a asmx

Sono entrambi obsoleti. Per una single page application dovresti valutare ASP.NET WebAPI. Leggi questa introduzione di Andrea Colaci, in particolare il paragrafo che riguarda la differenza con i servizi SOAP.
http://www.aspitalia.com/articoli/asp.net-mvc/scrivere-servizi-rest-asp.net-web-api.aspx
Qui trovi gli altri contenuti:
http://tags.aspitalia.com/ASP.NET_Web_API/

ciao,
Moreno
Modificato da BrightSoul il 29 ottobre 2014 21.12 -

Enjoy learning and just keep making
15 messaggi dal 15 gennaio 2013
Ciao, Grazie per la risposta mi hai risolto molti dubbi e dato numerosi consigli.
Guarda mi avevano già suggerito di utilizzare le WebApi con MVC 4.0 o Asp.Net 4.5(Tutto trattato nel vostro libro :) ). Il problema che il fornitore di Hosting è Aruba e ha Asp.net 4.0 e non permette MVC 4.0.
Non credo posso fare un upload di un progetto Asp.net 4.5 corretto?
Dalla tua esperienza sai se Aruba può cambiare da 4.0 a 4.5?(oggi chiederò cmq ad aruba).
Nel caso negativo sai consigliarmi qualche fornitore di Hosting che mi permetta di caricare un progetto Asp.net 4.5 con webapi?
Grazie per il tuo tempo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
ASP.NET WebApi (nella sua prima versione) può funzionare anche con il framework 4.0. Io al momento la sto usando anche su un vecchio windows server 2003, quindi è molto probabile che funzioni anche su aruba. Se hai già uno spazio, ti basta fare un semplice test:
Crea un nuovo progetto MVC4 da Visual Studio, avente come target il framework 4.0. Scegli il template "WebAPI" dalla maschera di selezione. Pubblica il progetto così com'è su uno spazio vuoto di Aruba. Dato che nel template di progetto era presente un ValuesController, prova a visitare questo URL:
http://www.tuodominioaruba.com/api/values

Se tutto funziona, la richiesta ti restituirà un elenco contenente i valori value1 e value2.

Vasa1988 ha scritto:

Dalla tua esperienza sai se Aruba può cambiare da 4.0 a 4.5?(oggi chiederò cmq ad aruba).

Non so, meglio chiedere a loro. Magari hanno aggiornato alcune macchine con il framework 4.5, così potresti sfruttare la versione 2 di ASP.NET WebAPI che introduce delle novità che potresti reputare utili.
http://www.dotnetcurry.com/showarticle.aspx?ID=989

ciao,
Moreno

Enjoy learning and just keep making
15 messaggi dal 15 gennaio 2013
Perfetto Grazie per la disponibilità faccio i test oggi o domani e ti dico :)
15 messaggi dal 15 gennaio 2013
Niente ho pubblicato mi da questo errore(ho chiamato Aruba e mi hanno detto che non gestiscono ancora MVC, quindi penso sia dovuto a questo ho anche testato quello che mi hai detto da locale debug visual studio e mi ha scaricato un json con value1 e value2 quindi sul mio pc è corretto)


Server Error in '/' Application.

Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.


<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, questo non ci dice nulla. E' una pagina di errore generica che ASP.NET mostra ai visitatori del sito quando si verifica qualche problema.

A noi interessa vedere l'errore dettagliato, dunque vai ad aprire il web.config, e come suggerito dalla pagina stessa, aggiungi un elemento <customErrors mode="Off" /> dentro system.web

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>


Aggiorna la pagina e a questo punto dovresti vedere l'esatto errore restituito dal server. Ci darà delle informazioni in più sulla natura del problema.

ciao,
Moreno

Enjoy learning and just keep making
15 messaggi dal 15 gennaio 2013
eccolo
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
0x80070002

la url del sito è
http://www.madeitalia.com/api/values

Dalla documentazione Microsoft vedo che
Errore server nell'applicazione"ApplicationName"
Errore HTTP 404.0 - non trovato
HResult: 0x80070002
Descrizione di HResult: la risorsa desiderata è stata rimossa, rinominata o temporaneamente non disponibile.

Non è disponibile perchè non lo supporta secondo te?
Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.