iSven

Unwichtiges nach Relevanz sortieren...

Visual Studio 2005 Performance Probleme bei ASP.NET Projekten

Wenn's mal wieder länger dauert beim Build: Prüfen, ob Verweise bzw. eingebundene Assemblies mit einer Refresh Datei (wie Assembly.dll.refresh) versehen sind. Diese Datei sorgt bei jedem Build dafür, dass geprüft wird, ob einen neue Version der Assembly vorliegt und das kann den Buildprozess extrem ausbremsen. In einem Projekt von mir benötigte ein Build mit einer Vielzahl von Refresh Dateien so ca. 2 Minuten, nach dem Löschen der Refresh Dateien waren es nur noch 10 Sekunden.
Das Löschen ist recht gefahrlos. Man muss dann nur selbst dafür sorgen, dass die Assemblies immer aktuell sind.

Windows Vistas neue GUI - wirklich alles neu?

Microsoft ist ziemlich stolz auf sein neues Betriebssystem und bei Präsentationen von Vista fordern die Microsoft Mannen immer recht auffordernd: "ein Boah wäre jetzt angebracht!"
Sieht ja auch nicht schlecht aus, muss man sagen. Allerdings bin ich mal gespannt, wie lange die Enduser die ständigen Popups und Hinweise à la "Möglicherweise gefährdet..." und "Unsichere Inhalte..." ertragen werden.
Das Vista nicht der Stand der Technik ist, was die GUI Oberfläche betrifft, zeigt allerdings XGL. Bei Google findet man hierzu einige recht nette Videos, die die Möglichkeiten von XGL eindrucksvoll demonstrieren. Zu haben ist XGL mit SUSE linux enterprise desktop 10.

Windows Workflow Foundation

Auf der Suche nach Tipps und Tricks zu der Windows Workfow Foundation bin ich auf folgende Blogs gestossen:

Advanced Workflow: Enabling Tricky Scenarios:

blogs.msdn.com/sonalic/

Paul Andrew

Global.asax ohne Code-Behind

Zur Realisierung von ernsthaften Webanwendungen sollte man eigentlich immer das Code-Behind Modell vorziehen, anstatt den Code direkt in eine aspx Seite zu kodieren. Allerdings habe ich nicht schlecht gestaunt, als ich für eine neue Anwendung in Visual Studio eine Global.asax anlegen wollte: Es wird heifür immer Inline-Code verwendet. Auch gibt es keine Option beim Anlegen der Global.asax, um eine Code-Behind zu erzeugen. Abhilfe: manuelles Hinzufügen der entsprechenden Code-Behind Datei:

1.
<%@ Application Language="C#" Inherits="Global" %>
zur Global.asax hinzufügen. Alles andere rauskopieren.

2. Im App_Code Ordner eine Klasse Global.cs anlegen

3. In Global.cs die Klassendefinition ändern:
public partial class Global : System.Web.HttpApplication

4. Die folgenden Methoden zur Global.cs hinzufügen:
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
    }
    void Application_End(object sender, EventArgs e)
    {
        //  Code that runs on application shutdown
    }
    void Application_Error(object sender, EventArgs e)
    {
        // Code that runs when an unhandled error occurs
    }
    void Session_Start(object sender, EventArgs e)
    {
        // Code that runs when a new session is started
    }
    void Session_End(object sender, EventArgs e)
    {
        // Code that runs when a session ends.
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer
        // or SQLServer, the event is not raised.
    }

Siehe auch Ross W Nelson's Blog: Fixing the Global.asax in ASP.NET 2.0

.NET 3.0

Aus WinFX wird .NET 3.0! Nachdem erst im November 2005 .NET 2.0 erschienen ist, wird einem ganz schwindlig, bei dem Gedanken, dass das Framework schon wieder einen Nummer höher dreht. Viele haben doch erst gerade begonnen mit 2.0 zu arbeiten... Allerdings sollte man sich nicht aus der Ruhe bringen lassen, denn in .NET 3.0 enthält nur die ehemaligen WinFX Projekte, als da wären:
  • Windows Communication Foundation
  • Wiindows Presentation Foundation
  • Windows Workflow Foundation
  • Windows Cardspace
Die frischesten Infos und Samples zu .NET 3.0 scheint es übrigens hier zu geben: Microsoft .NET Framework 3.0 Community (NetFx3)

Modales Popup in ASP.NET

Ein modales Popup in ASP.NET zu erzeugen ist nicht schwer, aber umständlich. Leider! Hier eine kleine Anleitung:

Der erste Schritt ist ein Javascript zum Öffnen eines Popups:

function openPopup(url, title) {
  width = 860;
  height = 360;
  posx = window.screenLeft + posx;
  posy = window.screenTop + posy;

  var Fenster;
    
  if (window.showModalDialog){
    var features = "dialogWidth:" + width + "px;dialogHeight:" + height +
      "px;resizable:no;scroll:no;status:no;edge:sunken;help:no;center:yes";
    Fenster = window.showModalDialog(url, title, features);
  } else {
    var features = "locationbar=no, directories=no, status=no, " +
      "menubar=no, scrollbars=no, resizable=no, modal=yes, dependent=yes, width=" +
      width + ",height=" + height + ",left=" + posx + ",top=" + posy;
    Fenster = window.open( url, title, features);
    Fenster.focus();
  }
}

 

Damit die Inhalte des Popups auch korrekt angezeigt werden (werden sonst gecacht), muss das Page_Load des Popups angepasst werden:

protected void Page_Load(object sender, EventArgs e) {
  if (!this.IsPostBack) {
    Response.Expires = 0;
    Response.Cache.SetNoStore();
    Response.AppendHeader("Pragma", "no-cache");
  }
}