• User

    [ASP.NET] Conversione Libreria ASP in VB.NET

    Un altro quesito mi affligge... (e per questo vi scoccio):D

    Lavoro ormai da tempo con ASP e PHP, ma sono nuovo a .NET
    Per ASP avevo sviluppato delle librerie (meglio dire una serie di funzioni e procedure) che mi accelleravano la scrittura del codice, ad esempio:
    1 funzione per aprire le connessioni
    1 funzione per inviare comandi SQL
    1 funzione per recuperare IDENTITY
    1 funzione di browsing filesystem
    1 funzione di validazione dei form con REGEXP, con recupero dei valori in automatico (come il postback di .net)
    etc etc

    Sono tutte Sub o Function pubbliche che, inserite nella pagina con degli include. Sono fatte benino, molto generali che si adattano praticamente a qualsiasi situazione.

    Domanda:
    Come mi consigliate di riscriverle?
    **Utilizzando una classe, un controllo utente, un controllo personalizzato o cosa? Non avendo esperienza in merito chiedo consiglio.:D **

    La mia necessità sarebbe quella di poter adoperare delle porzioni di codice nelle pagine .net.
    Per adesso ho fatto questo:

    
    PublicClass connected : Inherits Page
    Public conn_string AsString = "Database=xx;Port=xx;Data Source=localhost;User Id=xx ;Password=xx"
    Public conn AsNew MySql.Data.MySqlClient.MySqlConnection(conn_string)
    Public rs As MySqlDataReader
    PublicSub apriRS(ByVal sql AsString)
    Dim comando AsNew MySqlCommand(sql)
    comando.Connection = conn
    conn.Open()
    rs = comando.ExecuteReader
    EndSub
    PublicSub chiudiRS()
    rs.Close()
    rs = Nothing
    conn.Close()
    EndSub
    PublicSub esegui(ByVal sql AsString)
    Dim comando AsNew MySqlCommand(sql, conn)
    comando.Connection.Open()
    comando.ExecuteNonQuery()
    conn.Close()
    EndSub
    
    

    ma già a spanne capisco che "non è bello"; modificherò facendo anche qualche property, ma ora non ho tantissimo tempo...

    Grazie


  • Moderatore

    io personalmente mi sono scritto delle classi che poi ho assemblato in dll e che metto nella cartella bin.

    Molto pratico e ho tutte le funzioni e sub comuni a portata di mano

    :ciauz:


  • User Attivo

    Si, anche io sono per fare la classe.

    P.s. Ma quel codice che hai incollato funziona?


  • User

    si, è una parte di codice, ma funzia...
    perchè?
    Farà schifo (e ne sono consapevole) ma sono i miei primi passaggi al .NET.....
    migliorerò 😄

    Per Legolas:
    anch'io avevo pensato classe -> compilo -> poi adopero dll
    per adesso faccio esperimenti in code-behind così provo tutto.
    Se funzia compilo.
    E' la strada giusta? (sapete nn ci capisco tanto in Oop e mi sto sforzando)


  • User

    ah una cosa... (anzi 3 😉 )
    se faccio una classe devo per forza farla derivare dalla classe page?
    la direttiva Inherits si può specificare anche in fase di Import?
    tutta la nuova classe che scrivo deve essere racchiusa in un namespace?

    (scusate le eventuali cacchiate che scrivo 🙂 )


  • User Attivo

    Mi riferivo alla sintassi

     PublicSub esegui(ByVal sql AsString)
    

    Come fa a funzionare?
    Dovrebbe essere scritto

    Public Sub esegui(ByVal sql As String)
    

  • User

    me l'ha incollato senza spazi... boh :bho:
    nn ci avevo fatto caso.


  • Moderatore

    @hwlab123 said:

    ah una cosa... (anzi 3 😉 )
    se faccio una classe devo per forza farla derivare dalla classe page?

    Assolutamente no ;), dipende da cosa devi fare ...se la tua classe lavora sui controlli della pagina (datagrid, label, ecc...) allora è probabile che deriverà da Page. Se la tua classe serve da interfaccia tra il Db è il mondo esterno (anche detta una Business Class) può o non derivare da nulla (è una classe "padre") o deriverà dalla classe che gli sta più vicina (semanticamente parlando): DataSet, Connection, DataTable ecc...
    Il processo di derivazione si fa se devi utilizzare metodi (funzioni e Sub) ed attributi (Properties) di una classe padre ed in più ci vuoi aggiungere i tuoi metodi ed attributi che specializzano la classe padre. Ottenendo una classe "figlia".

    la direttiva Inherits si può specificare anche in fase di Import?

    ???

    tutta la nuova classe che scrivo deve essere racchiusa in un namespace?

    Se si tratta si classi business allora conviene raggrupparle in NameSpaces per motivi di logistica del codice. Pensa ad esempio al perchè esistono Namespace annidati del tipo:

    System;
    System.Web;
    System.Web.Mail;

    Allo stesso modo protesti definire un tuo namespace annidato del tipo:

    MioProgetto;
    MioProgetto.DBConnections;
    MioProgetto.DBConnections.Backup;
    MioProgetto.DBConnections.Exports;
    MioProgetto.Utility;
    MioProgetto.UserInterface;
    MioProgetto.UserInterface.Print;
    ecc...


  • User

    grazie tantissimo,
    un pò di teoria è quello che mi serve...:D
    sto studiando sui libri, ma a volte sono così astratti che si perde il filo.
    grazie ancora.