# Wat ik heb gedaan om ... het verzenden van Bulk E-mail van ASP.NET / Command line / Schema

<datetime class="hidden">2004-03-12T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, ASP.NET, Performance -->
Een beetje stil van de laatste tijd, goed in principe ben ik begonnen met een nieuw project op het werk - dus ik heb vrij veel 24/7 in de planning en het bouwen van die app. Het is een vrij coole kleine Bulk E-mail app (geen zorgen, voor strikt opt-in mails:-)). Een paar van de bits die ik heb gebruikt in deze app zijn echt nuttig in het algemeen, [Mike Woodring's aangepaste ThreadPool](http://staff.develop.com/woodring/dotnet/#threadpool), dit is gewoon een opmerkelijk nuttige kleine klasse wanneer u wilt doen Asynchrone operaties van binnen ASP.NET (zie [dit](http://msdn.microsoft.com/msdnmag/issues/03/06/Threading/default.aspx) voor meer informatie over sommige plaatsen die u misschien wilt doen).
Essntially in the application, Ik accepteer een groot(ish) XML-bestand dat details bevat voor gebruikers (met behulp van ~18000 in mijn testbestand), parse het; met behulp van [XmlTextReader](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmltextreaderclasstopic.asp), de prestaties en het geheugen gebruik van deze klasse is gewoon verbluffend, het kan werken door middel van deze 200000+ lijn bestand in minder dan een seconde (niet te precies, hebben geen timing op daar nog niet) en een object dat een arraylist van meerdere DataTables. Ik heb enorm ondergebruikt DataTables in het verleden, maar ze zijn gewoon ongelooflijk nuttig voor het vasthouden van willekeurige gegevens, en echt gemakkelijk dynamisch te bouwen. Dit object kan dan ofwel worden geserialiseerd naar schijf (toestaan voor planning voor een later verzenden) of ontslagen op mijn mail controller onmiddellijk, dit draait in wezen n threads om de mail verzenden operaties te behandelen (toegewezen uit een statische draad pool). [AspNetEmail](http://www.aspnetemail.com/) formulier [GeavanceerdIntellect](http://www.advancedintellect.com) , nu kan ik niet genoeg zeggen over dit product (ik vond wat lijkt op een zeer kleine bug met de 'verzendstatus' maar nog te bevestigen dit ...). Wat ik kan doen met dit is, een DataTable passeren (u kunt ook passeren een DataSet of SqlDataReader), in te vullen sommige velden en laat het werken door de tabel het verzenden van e-mails, met de klasse terug te bellen in mijn code om details te geven op elke verzenden - zeer mooi!
Hoe dan ook, ik ben nu bezig met het rapporteren van functionaliteit voor deze app en 'tweaking' (momenteel hits 200 e-mails/seconde beperkt door het bestand-systeem, kan doen .1100 mails/sec als het bestandssysteem wordt verwijderd uit de vergelijking) - moeten zeggen dat het is veel plezier, de multi-threading mogelijkheden van .NET hebben echt indruk op me gemaakt de laatste tijd - mijn nieuwe favoriete functie:-)

Ook geweest op een [MSDN roadshow](http://www.microsoft.com/uk/msdn/roadshow/) vandaag hmm...kan niet zeggen dat het was het beste gebruik van mijn tijd, HEAVY op de marketing spiel, zeer lage technische inhoud, in principe waren ze pronken met .NET technologie op een 'managers' niveau - zeer vervelend ... de Smart Client spullen met behulp van Office 2003 was vrij interessant hoewel ... kreeg een nieuw respect voor InfoPath ...