Créer des snippets pour augmenter votre productivité sur Visual Studio 2010
Visual Studio 2010 utilise comme beaucoup d’IDE, un système de snippet permettant d’augmenter la vitesse de frappe du code.
Utilisation d’une snippet
Par exemple, si vous entrez propf puis tapez 2 fois sur la touche TAB du clavier, l’IDE va générer pour vous une propriété privée ainsi qu’un get, set :
Les zones oranges sont les zones éditables lors de la création. Il est possible de passer d’un de ces champs à un autre en pressant la touche TAB du clavier.
continuer la lectureVisual Studio 2010 – Développez pour le web
Visual Studio 2010 - Développez pour le web est un livre écrit par Julien Dollon (@juliendollon) et James Ravaille, 2 MVPs, sur le développement complet d’une application web sur Visual Studio 2010 en .NET 4.
Tout le livre est construit sur la création d’une application en suivant les étapes une à une. Le projet final est également disponible en téléchargement sur le site de ENI.
Voici la table des matières :
continuer la lectureSe connecter en remote shell sur Windows Serveur avec WinRM et .NET
Windows Remote Management permet d’ouvrir à distance un shell sur Windows Server 2008 (WinRM existe depuis Windows Vista et Windows Server 2003 R2). Concrétement, il est possible d’exécuter des lignes de commandes sur un serveur à distance.
Pour des raisons évidentes de sécurité, certains pré-requis sont nécessaires. Si l’ordinateur client n’est pas sur le même domaine que le serveur, ou si l’authentification ne se fait pas par Kerberos alors les transmissions doivent être chiffrées. Concernant la ligne de commande, les droits sont respéctés. Un utilisateur qui ne présente pas les droits suffisants pour exécuter une commande sur le serveur se verra refuser l’exécution de la dite commande à distance.
continuer la lectureRequêter Active Directory via .NET
Active Directory, le service d’annuaire de Microsoft se repose sur le protocole LDAP. Pouvoir se connecter à l’Active Directory, y ajouter des utilisateurs, des groupes, etc… est possible avec le framework .NET grâce au namespace System.DirectoryServices.
Avant de commencer le code, il faut ajouter une référence dans votre projet vers System.DirectoryServices.
Se connecter à Active Directory
La connexion se fait en 2 temps. Premièrement, on créé un DirectoryEntry avec le serveur, nom d’utilisateur, mot de passe, etc… Si une correspondance est faite dans l’AD, on continue. Si le couple utilisateur/mot de passe, l’adresse du serveur n’est pas bonne, etc… une exception de type DirectoryServicesCOMException sera levée. Si la connexion est faite, on pourra tester que pour se connecter, l’utilisateur doit être dans le groupe administrateur. Cette recherche se fait à l’aide d’un DirectorySearcher. La syntaxe du filtre est celle propre à LDAP. Le filtre utilisé ci-dessous, vérifie que l’utilisateur a bien pour nom “Aymeric”, qu’il appartient au groupe administrateur et qu’il est bien de type “user”.
continuer la lectureAccélérer le temps de chargement d’Entity Framework 4 avec EFCachingProvider en ASP.NET
Comme vu précédemment dans l’article : Reduire le temps de chargement d’une page ASP.NET avec le SQL Cache Dependency, il est possible de réduire le temps de chargement d’une page en mettant en cache les résultats récupérés dans la base de données.
L’article précédent traité du SQL Cache Dependency avec Linq To SQL. Avec Entity Framework 4, cette méthode n’est pas disponible, il faut donc se rabattre sur un provider personnalisé créé par Jaroslaw Kowalski : EFCachingProvider.
continuer la lectureUtiliser des procédures stockées avec Entity Framework 4
Pour des raisons de sécurité et de performance, il peut être judicieux d’utiliser des procédures stockées pour interagir avec la base de données. Cet article a pour but de démontrer comment utiliser les procédures stockées avec le framework Entity 4.
Le but de l’article est de créer 4 procédures stockées pour ajouter, modifier et récupérer des blogs dans la base de données :
Insert(nvarchar(max) name, nvarchar(max) url)
Pour ajouter un blog dans la base de données. Elle retourne l’ID du blog qui vient dêtre ajouté.
continuer la lectureModifier un contrôle depuis un autre thread en WPF
Dans une application WPF, l’utilisation de plusieurs **threads **pour la modification de contrôles est plus compliquée qu’il n’y parait. Un contrôle ne peut être modifier que par le thread à qui il appartient.
Par exemple :
- MainWindow.xaml
<Window x:Class="Threads.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
<Label Content="Label" Height="28" HorizontalAlignment="Left" Name="label1" />
</Grid>
</Window>- MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;
namespace Threads
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// Create Thread
Thread myThread = new Thread(ModifyLabel);
// Start Thread
myThread.Start();
// Wait for 3sec
Thread.Sleep(3000);
// Stop Thread
myThread.Abort();
}
public void ModifyLabel()
{
label1.Content = "my content";
}
}
}Lorsqu’on lance ce programme l’erreur suivante apparait :
continuer la lectureUpdatePanel en ASP.NET, attention au piège
En ASP.NET, l’UpdatePanel permet d’intéragir avec le serveur sans avoir à recharcher la page (mode asynchrone).
Le code suivant affiche la date courante dans le label lors du click sur le bouton sans avoir à recharger la page :
UpdatePanel.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:scriptmanager id="ScriptManager1" runat="server">
</asp:scriptmanager>
<asp:updatepanel id="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="bt1" runat="server" Text="Button"
onclick="bt1_Click" />
<asp:Label ID="lbl1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:updatepanel>
</div>
</form>
</body>
</html>UpdatePanel.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class UpdatePanel : System.Web.UI.Page
{
protected void bt1_Click(object sender, EventArgs e)
{
lbl1.Text = DateTime.Now.ToString();
}
}Ce qui donne le résultat suivant lors du click sur le bouton, le tout sans rechargement de page :
continuer la lectureRéduire le temps de chargement d’une page ASP.NET avec le SQL Server Cache Dependency
Un système de cache permet de mettre temporairement des données en mémoire sur le serveur permettant un affichage plus rapide des pages du site web.
En ASP.NET, il existe plusieurs solutions pour créer un système de cache :
- Output Caching : Une copie de la page web finale (HTML) est stockée sur le serveur. Lors du prochain appel à la page, la copie stockée sera automatiquement rendue au client n’exécutant ainsi pas les requêtes SQL, traitements côté serveur, etc… La copie expirera automatiquement après un temps préalablement configurée ou si le serveur manque de mémoire.
- Data Caching : Il est possible de stocker en mémoire sur le serveur des données comme un DataSet. Si le DataSet est mis en cache, on évite ainsi un appel à la base de données. Contrairement à l’Output Caching, c’est à vous de définir les objets qui seront mis en cache.
Dans cet article, c’est une partie du Data Caching qui nous intéresse : le SQL Server Cache Dependency. Le principe de cette méthode de caching est de limiter les appels à la base de données en mettant en cache le résultat d’une requête SQL et en l’utilisant tant que la table à qui elle fait appel n’est pas modifiée.
continuer la lectureRécupérer l’UserId de l’utilisateur connecté en C# avec ASP.NET
Avec l’utilisation du système intégré à ASP.NET pour gérer les utilisateurs, il peut être utile de récupérer l’identifiant de l’utilisateur actuellement connecté par exemple pour récupérer des données dans une base qui se rapporte à cet utilisateur.
Voici le code qui permet de récupérer l’UserId :
string userID = Membership.GetUser().ProviderUserKey.ToString();