0% ont trouvé ce document utile (0 vote)
9 vues2 pages

Resume Net

Le document présente le code d'un contrôleur ASP.NET pour gérer des tâches (ToDo) avec des méthodes pour afficher et ajouter des tâches. Il inclut également des modèles de données, des services de gestion de session, et des énumérations pour les états des tâches. Enfin, il aborde des concepts liés à la gestion des sessions, à la sérialisation, et à l'injection de dépendances dans le cadre d'une application web.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues2 pages

Resume Net

Le document présente le code d'un contrôleur ASP.NET pour gérer des tâches (ToDo) avec des méthodes pour afficher et ajouter des tâches. Il inclut également des modèles de données, des services de gestion de session, et des énumérations pour les états des tâches. Enfin, il aborde des concepts liés à la gestion des sessions, à la sérialisation, et à l'injection de dépendances dans le cadre d'une application web.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Controller/[Link] ViewModels/ToDoAddVM.

cs
public class TodosController : Controller{ public class ToDoAddVM{
ISessionManagerService session; [Required(ErrorMessage = "Le libelle est obligatoire")]
public TodosController(ISessionManagerService session){ public string Libelle { get; set; }
[Link] = session;} [Required]
public IActionResult Index(){ public string Description { get; set; }
List<Todo> list = [Link]<List<Todo>>("todos",HttpContext); [DataType([Link])]
[Link] = [Link]; public DateTime DateLimite { get; set; }
return View();} [Required]
public IActionResult Add(){ public State Statut { get; set; }
return View();} }
[HttpPost] [Link]
public IActionResult Add(ToDoAddVM vm){ //Add services to the container.
if(![Link]){ [Link]();
return View(); //si le nom de la fct a ete confirm [Link]();
nous ajoutant le nom de la view return View("Add")} [Link]<ISessionManagerService,
List<Todo> list; SessionManagerService>();
if([Link]("todos") == null){ [Link](
list = new List<Todo>();} name: "default",
else{ pattern: "{controller=Todos}/{action=Index}/{id?}");
list = [Link]<List<Todo>>("todos", HttpContext);}
=> .Net Framework/ .Net code/ .Net
Todo todo = [Link](vm);
→ Net Framework
[Link](todo);
Derniere version: 4.8
[Link]("todos", list, HttpContext);
openSource
return RedirectToAction(nameof(Index));}
MONO est la version qui peut etre installee sur Linux
}
Enums/[Link] → Net core
namespace [Link]{ Microsoft offre Multi-platform / cross-platform
public enum State{ Derniere version: 3.1 en decembre 2020
TODO = 0, DOING = 1, DONE = 2} → Net
} Merge le s2 frameworks framework et core
Mappers/[Link] nouvelle version publiee chaque Novembre
public class TodoMapper{ Derniere version: .NET 10.0 en decembre 2025
public static Todo GetTodoFromTodoAddVM(ToDoAddVM vm){ .Net Standard: Tableau de compatbilite pour une bonne
return new Todo{ communication entre les fournisseurs les bibliotheques et les
Libelle = [Link], developpeurs.
Description = [Link], CLR: common language runtime, environnement d’execution de
DateLimite = [Link], code.
Statut = [Link]}; =>[Link] Core MVC: framework OpenSource pour gerer le
} sapplications web et des API avec MVC.
} → Un Model gere la logic metier et l’acces a la base de donnees.
Models/[Link] → Un Controller recoit les requetes HTTP, traite les actions CRUD, et
public class Todo{ envoie les donnees du model vers la view.
public string Libelle { get; set; } → Razor: Moteur d’affichage = Moteur de template plus simple pour
public string Description { get; set; } programmer en front.
public DateTime DateLimite { get; set; } → Routage: Mecanisme qui permet de a un URL de dessiner une
public State Statut { get; set; } route, il peut etre soit Automatique soit Personalise.
} → Middleware: Logicciel assenble dans un pipeline d’application
Enums/[Link] pour la gestion des requetes et des repenses.
namespace [Link]{
public class ErrorViewModel{ => Vue generale d’un projet:
public string? RequestId { get; set; } → wwwroot: contient des fichiers images, videos, js et css.
public bool ShowRequestId =>![Link] ->[Link]: contient la fonction Main().
(RequestId);} → ASP: verifie l’environnement s’il est en developpement pour
} changer la faocn d’affichage de messages d’erreurs, et il cree les
Services/[Link]
environnements (Developpement, Production, Staging).
namespace [Link]{
[Link](): redirige la requete HTTP vers HTTPS.
public interface ISessionManagerService{
[Link](): divise l’url, et determine la cible de l’utilisateur.
public void Add(string key, object list, HttpContext context);
[Link](): verification des droits d’acces d’user.
public T Get<T>(string key, HttpContext context);}
[Link](): responsable du contenue statique.
}
[Link](
Services/[Link]
name : “default”,
public class SessionManagerService : ISessionManagerService{
pattern :”{controller=Home}/{action=Index}/{id?})
public void Add(string key, object list, HttpContext context){
.withStaticAssets().
String chaine = [Link](list);
[Link](): bloque l’execution de l’app jusqu’a la reponse.
[Link](key, chaine);}
=> Moyen de communications:
public T Get<T>(string key, HttpContext context){
@ViewData[“Name”] ViewData[“Name”]=”Bill”
return [Link]<T>([Link]
@[Link] [Link]=”Bill”
(key) ?? "[]");}
→ Message d’erreur [Required] manuellement:
}
[Required (ErrorMessage = “le nom est obligatoire”)]
=> State Management: Maintenence d’une app des informtions => Execution:
relatives a travers le temps et les diff interactions, il est important → ExecuteNonQuery: utilisee avec Insert, update, Delete.
car (maintenir la coherence de l’interface user, preservation des → ExecuteReader: pour les requetes select non-scalaires (requetes
donnees utilisateurs) avec plus d’une valeur)
=>Sessions: → ExecuteScalar: pour les requetes scalaire (requetes avec 1 seul
→ Aventages: 1. Majorite de travail automatque, 2. 4. infos → 1 val)
cookie, 3. taille illimtee => Open Close: objet instancie est compose de 2 fonctions:
→ Inconvenients: 1. Surcharge la machine server, 2. vol de session → open(): ouvre la connection a un server sql. ([Link]())
=> Cookies: → close(): fermeture de la conection une foi la requete envoyee.
→ Aventages: 1. Majorite de travail automatique, 2. soulage le server. ([Link]()).
→ Inconvenients: 1. 1 info par cookie, 2. taille limitee (4KO), 3.
repositories/[Link]
Surchare la machine client, 4. vol de cookie.
public class CategoriesRepository : ICategoriesRepository{
=> JWT:
IConfiguration conf;
→ Aventages: 1. maintenabilite, 2. tolerence aux pannes.
public CategoriesRepository(IConfiguration conf){
→ Inconvenients: 1. majorite de travail manuelle, 2. vol de token.
addSession(): ajoute les services de sessions a l’app via l’injection [Link] = conf; }
de dependance. public void Add(Category c) {
useSessionn(): ajoute le middleware de session dans le pipeline de SqlConnection cn = new SqlConnection(conf.
requete HTTP. GetConnectionString("ehei"));
→ Ajouter: [Link](“cle”,”valeur”); [Link]();
→ Modfier: [Link](“cle”,”valeur”); SqlCommand cmd = new SqlCommand("Insert into categories
→ Supprimer: [Link](“cle”); values('" + [Link] + "')", cn);
→ Vider: [Link](); [Link]();
→ Recuperer: string value = [Link](“cle”)?””; [Link](); }
=> Serialisation et deserialisation: public List<Category> GetAll(){
→ serialisation: objet/liste → chaine de caracteres. List<Category> list = new List<Category>();
→ deserialisation: chaine de caracteres → objet/liste SqlConnection cn = new SqlConnection
=> JsonSerialiser: ([Link]("ehei"));
→ serialiser: string jsonResult=[Link](s) [Link]();
→ deserialisation: Student student = [Link] SqlCommand cmd = new SqlCommand("select * from
<Student>(jsonString)?? new student(); categories", cn);
=> Cookies: SqlDataReader rd = [Link]();
→ Ajouter: [Link](“cle”,”val”); while ([Link]())
→ Modfier: [Link](“cle”,”val”); Category c = new Category();
→ Supprimer: [Link](“cle”); [Link] = rd["libelle"].ToString();
→ Recuperer: string value = [Link][“cle”]?””; [Link] = [Link](rd["id"].ToString());
=> Les filtres sous ASP Core: s’utilisent si le code se repete au debut [Link](c);
et a la fin d’une action, pour centraliser le code, et gerer les }
problemes transversaux. [Link]();
Public void IActionResult Index(){ [Link]();
[Link](); return list;
[Link](); }
//Mon Code }
[Link]();
[Link](); => Injection de dependances: la possibilite de travailler avec un
=> ADO .Net: Ancienne biblio utilisee pour la gestion de SGBDR. objet sans instancier entre classe x et classe y.
→ SGBDR et ADO .Net: → les etapes pour injecter:
SQL Connection: permet d’instancier un objet pourla 1. Creation d’interface Iservice avec le prototype des actions.
communication avec la BD et qui a besoin de: 1. Adresse IP du 2. implementer l’interface service:Iservice
serveur, 2. Nom de BD, 3. Login et pass/ auth windows, 4. 3. Enregistre dans DI [Link]
Presence d’encryptage [Link]<IService, service>();
→ SQLConnection avec auth windows: 4. Injecter via le constructeur
SQLConnection conn = new SQLConnection(“Data source = 5. utilisation
.\\SQLExpress; “ + “Initial catalog = db;” + “Integrated security=true”
+ “Encript = false”); AddSingleton: 1. instenciation couteuse, 2. objet de vie iliimite, 3.
→ SQLConnection avec login et password: une seule instentiation.
SQLConnection conn = new SQLConnection(“Data source = AddSingleton<ICategoryRepository, CategoryRepository()>
.\\SQLExpress; “ + “Initial catalog = db;” + “User Id = myUsername; AddScoped: 1. instruction puis destruction, 2. duree de vie plus
Password = myPassword” + “Encript = false”); cours, 3. nombre d’instenciation = nbr de requetes.
SQLCommand: instancie un objet qui execute une requete sous AddTransiet: 1. deconseille, 2. requete peut avoir plusieurs
serveur de BD. nstenciations et destructions, 3. nombre insentiations = nombre
→ declaration d’un obj avec construct d’initialisation: d’injections.
SQLCommand cmd = new SQLCommande(“insert into villes values pooling: 1. instentiation plusieurs objets, 2. between addSingleton
(‘oujda’), conn); et addScoped.
→ Declaration d’un obj avec construct d’initialisation:
SQLCommand cmd = new SQLCommande();
[Link] = “insert into villes values(‘oujda’)”;
[Link] = conn;
SQLDataReader.

Vous aimerez peut-être aussi