Visual Basic

Configurarea spațiului meu de nume

Spațiul meu de nume oferă proprietăți și metode care "funcționează doar". Când rezolvăm probleme comune de programare, serviciile sale reduc necesitatea de a stăpâni întregul .NET Framework. Spre deosebire de multe tipuri și metode ale acestei infrastructuri, spațiul de nume My este "ascuțit" prin soluții simple la probleme comune. Cu toate acestea, dacă aveți alte cerințe, nu este nevoie să o abandonați. Aplicând modelul de adaptare al My, puteți schimba comportamentul membrilor săi așa cum aveți nevoie în aplicația dvs.







Configurarea membrilor existenți în Namespace-ul meu

Una dintre cele mai grave probleme cu care se confruntă dezvoltatorii atunci când utilizează infrastructurile universale este sarcina de configurare. Prin urmare, membrii spațiului meu de nume acceptă configurația implicită, care este potrivită în majoritatea cazurilor. Spre exemplu, spațiul de nume System.Security conține o infrastructură puternică și extensibilă pentru construirea protecției bazate pe rol. Cu toate acestea, sarcina obișnuită, de exemplu, crearea de clase necesare pentru a rula în numele utilizatorului curent Windows, poate provoca dificultăți:

My.User încorporează implicit utilizatorul Windows curent și codul de inițializare nu este necesar. Configurația My.User în mod prestabilit, ca și mulți alți membri ai spațiului meu, poate fi schimbată dacă este necesar:

Aplicația My.Application.Log este controlată de fișierul .config și are avantajul suplimentar că poate fi schimbată după implementarea aplicației, deoarece nu este necesară recompilarea.

Configurarea rețelei My.Computer

Rețeaua My.Computer.Network conține metode simple pentru determinarea disponibilității rețelei, precum și pentru încărcarea și descărcarea fișierelor:

Configurarea setărilor mele

Modelul meu de extensie a denumirilor de nume face mai ușor și mai consecvent pentru dezvoltatori să împărtășească soluții.

Fig. 1. Aplicarea RegistrySettingsProvider

Extindeți spațiul de nume My

Spațiul meu de nume oferă o soluție pentru multe sarcini comune de programare, dar atunci când lucrează în anumite domenii, pot apărea probleme care nu pot fi rezolvate de aceștia. Deci, My.Computer sprijină citirea și scrierea pe portul serial, dar nu acceptă porturile USB; Aplicația My.Application conține funcționalitatea urmăririi, dar nu oferă un mijloc de raportare a unui accident; programele care lucrează activ cu datele pot folosi nodul "My.Data" de la nivelul superior pentru a efectua operații de rutină cu date. Folosind modelul de extensie din spațiul de nume My, puteți adăuga noi membri. Trecerea extensiilor din spațiul de nume la ceilalți dezvoltatori ai mei din același domeniu le va permite să utilizeze extensiile la fel de ușor ca restul conținuturilor din spațiul Meu.

Poate că vă întrebați, dar de ce să-l extindeți deloc? Dezvoltatorii din ziua de azi folosesc biblioteci de clasă externă pentru a rezolva probleme specifice, de ce să scriem cod dacă cineva a făcut-o deja? Deseori, dezvoltatorii folosesc biblioteci de clasă terță parte (sau chiar publice), dar necesită un efort în procesul de învățare. Ce probleme rezolvă biblioteca? Cum ar trebui să fie folosit? Și cum o folosesc? Veți avea cu siguranță întrebări de acest fel. Existența diferitelor standarde de dezvoltare complică procesul de învățare. Modelul meu de extensie a denumirilor de nume face mai ușor și mai consecvent pentru dezvoltatori să împărtășească soluții. În conformitate cu regulile sale clare, puteți oferi soluții care să asigure că dezvoltatorul înțelege cum să le folosească și că dezvoltatorii oricărei abilități le pot aplica efectiv în activitățile lor.

Spre deosebire de alte spații de nume .NET Framework bazate pe ansambluri externe (DLL), spațiul meu se află în spațiul de nume rădăcină al proiectului Visual Basic și este localizat într-un fișier din memorie. Lista 2 prezintă o parte din conținutul său.







Listarea 2. Prezentarea generală a domeniului meu

Întrucât membrii de nivel superior predefiniți sunt configurați prin constantele compilatorului, aceste valori trebuie să fie transmise compilatorului în argumentele liniei de comandă. În Visual Studio, constantele compilatorului sunt setate pe pagina Compilează în Project Designer.

Depășiți aplicația My.User

Voi demonstra definiția propriului meu MyType în exemplul My.User, care returnează tipul extins ExtendedUser. Acesta din urmă conține metode auxiliare de conectare și deconectare pentru efectuarea autentificării. Începeți prin a crea o bibliotecă de clasă și adăugați următoarea clasă la ea:

Apoi creați un proiect Windows Forms și adăugați o referință la această bibliotecă de clase. Adăugați o definiție pentru My.User:

Setați _MyType la "Personalizat" și activați membrii de nivel superior predefiniți ai spațiului de nume My, trecând argumentele corespunzătoare către compilator. Următoarele argumente includ toți membrii predefiniți, cu excepția aplicației My.User definite:

Configurarea spațiului meu de nume

Când alegeți strategii pentru dezvoltarea, implementarea și susținerea extensiilor spațiului meu de nume, este mai ușor să împărțiți sarcina în două părți: crearea extensiilor spațiului meu de nume și crearea unei biblioteci de clase. Extensia spațiului meu de nume este codul pentru extinderea bibliotecii de clasă la My, așa cum se arată mai sus, iar biblioteca de clasă este un ansamblu (DLL) care conține tipurile care sunt extinse în extensie.

Când MyType non-standard este trecut la compilatorul Visual Basic, spațiul de nume My Space devine gol și trebuie să adăugați membrii obligați înapoi.

Recomandări pentru dezvoltarea

Următoarele recomandări vă vor ajuta să reduceți la minimum costul suportării componentelor extensiei My-namespace.

Includeți numai logica de expansiune. Logica inclusă în extensia corespunzătoare a spațiului de nume My trebuie să conțină doar "umplutura" necesară pentru a expune funcționalitatea în acest spațiu de nume. Deoarece codul sursă al acestei componente este inclus în proiect, actualizarea extensiei este o procedură foarte costisitoare, care, dacă este posibil, ar trebui evitată.

Încercați să nu faceți nicio ipoteză cu privire la proiecte. În general, nu faceți nicio ipoteză cu privire la proprietățile proiectului, în special în ceea ce privește setul de referință, directivele privind importurile sau parametrii specifici ai compilatorului (de exemplu, parametrul Strict este dezactivat). În schimb, încercați să minimalizați dependențele, utilizați referințe complete la toate tipurile cu cuvântul cheie Global și asigurați-vă că extensia este compilată cu parametrul Strict pentru a detecta erorile din această extensie.

Izolați codul de extensie. Pentru a face mai ușor izolarea extensiilor din spațiul de nume My, puneți întregul cod într-un fișier sau într-un folder separat în proiect.

Dezvoltarea bibliotecilor de clase pentru My

Ca și în majoritatea modelelor obiect, unele șabloane de design lucrează în spațiul de nume My, iar altele nu. La dezvoltarea extensiilor mele, respectați următoarele principii.

API fără state. Metodele din spațiul meu de nume trebuie să furnizeze soluția finală pentru o anumită sarcină. Parametrii de intrare trebuie să ia doar datele necesare pentru a finaliza sarcina. Metodele care se bazează pe starea anterioară din My sunt, de obicei, lipsite de loc. În My.Computer.FileSystem există exemple bune de API fără state care funcționează perfect în contextul My.

Copiile globale. Singurul stat susținut în My este global pentru întregul proiect. Deci, My.Application.Info încapsulează starea comună pentru întreaga aplicație.

Tipuri simple de parametri. Cele mai simple metode, de regulă, nu necesită parametri de tipuri complexe. Trebuie să accepte șiruri de caractere, tipuri elementare și așa mai departe.

Metode de fabrică. Unele tipuri de instanțe nu sunt atât de ușor de creat. Metodele din fabrică din extensiile mele facilitează utilizarea unor astfel de tipuri. Un exemplu de metodă fabrica care funcționează bine este My.Computer.FileSystem.OpenTextFileReader. Deoarece există mai multe tipuri de Stream, această metodă indică în mod clar ce Stream să utilizați și cum.

În aceste recomandări, nu există reguli generale pentru dezvoltarea bibliotecilor de clasă. Acestea sunt recomandări destinate dezvoltatorilor care utilizează Visual Basic și spațiul meu de nume. Reguli de dezvoltare a clasei în .NET Framework.

Ambalarea și implementarea extensiilor

Fișierul de șablon Visual Studio (.vstemplate) încapsulează conținutul care poate fi folosit ca bază pentru proiecte noi (un șablon de proiect) sau adăugat la un proiect existent (șablon de element). Ambalarea extensiilor mele ca fișiere șablon vă permite să le integrați fără probleme în Visual Studio și permite utilizatorilor să adauge extensii la proiect prin casetele de dialog Adăugați un nou element și un nou proiect. Avantajele acestei abordări sunt că șabloanele Visual Studio pot fi instalate la nivel de utilizator sau la nivel de computer. Un exemplu de extindere a spațiului meu de nume, ambalat ca șablon pentru un element Visual Studio, este conținut în codul sursă care poate fi descărcat pentru acest articol.

concluzie

Spațiul meu de nume oferă un set complet de membri și servicii care simplifică rezolvarea multor sarcini de programare. Cu toate acestea, deși acest set este foarte extins, acesta nu este altceva decât un punct de plecare pentru îmbunătățiri ulterioare. Modelul său de extensie vă permite să creați, să partajați și să vă îmbunătățiți spațiul de nume ca cerințele pentru modificarea aplicației.







Articole similare

Trimiteți-le prietenilor: