In my last post I showed a possible scenario for the use off the authorization manager (AzMan). Last week this scenario was tested in a high load environment and guess what … problems … 

After proximally 5000 calls in 2 minutes sometimes a ComException occurred in the AzRoles.dll. I tried several workarounds to be sure that the problem was no my problem but an AzMan’s.

Fortunately that night I was meeting Deyan Lazarov from Microsoft and explained the problem I did encounter. I seems that AzMan internally caches the calls, so the behavior I described could cause AzMan some headaches reflected by the ComExceptions. Of course this is not correct, but … surprise … there is a work-around ... Just cash the different AzMan instances which by the way also gave me a better architecture, less calls to active directory for authorisation.

Deyan also gave me an interesting link of an Enterprise Development Accelerator For .NET whish has a piece of wrapper code for the AzMan com library.

This article describes a possible implementation scenario with Windows 2003 Authorization Manager (AzMan) in a webservice environment with a load balancer. To create the right context for this article be sure that you are familiar with the following writings: 

This weekend my son told his grandparents that he graduated from kindergarten class. Acting like a normal granddad and granny they went to the local toy store where my son could choose anything of the shelves. As modest as he is he picked a little playmobil box (see picture). Isn’t a little bit odd … why didn’t he pick the tough fireman or the trendy surf rider. My wife has got an explanation … the sex role within our family should be adjusted … I’m not convinced, its just a coincidence that the little figure looks like her

 

Target for today: only visit maximum level sessions. Well I did 5 tracks and with a average off 431 … not bad. Here are the results. 

Session ‘An In-Depth Look at Windows Forms in VS 2005’ by Brian Noyes. A few windows forms 2.0 controls where showed. Much better support for databinding and the datagrid has been replaced by a better datagridview. I hope that this and other changes are good enough to be less dependent on 3-third party tools. You can download the great demo here and the must-have backgroundworker for .NET version 1.1 here.

Next session was ‘VS 2005 Team System  Enterprise-Class Source Control’ by Brian A. Randell and Ashwin Karuhatty. So one session on what the possibilities are and how TS source control is working. Most shocking where the NON-windows support (they actually demonstrated a check-in from Unix machine) and the support for VS 2003, vb6 & vc6 so that you can put all you’re sources into one store. Great demo about creating your own check-in rule . Promising stats about the performance of TS source control in an enterprise deployment.

The session ‘VSTO Programming and deployment’ by BJ Holtgrewe was ended in 45 min by throwing goodies to the audience. A 400 session, not, more like 200, but I don’t care, the only that matters is my daily average. Nice overview on deploying VSTO apps unfortunate to little demo’s.

After lunch I went to the forum for the more comfort chairs ‘Smart Client Offline Data Synchronization and Caching’ by Brian Noyes (again). Different scenarios for creating a offline smart client guided by great examples (download here). Also showed how to deal with the offline application block. Needs lot of config in code, but manages all on- offline issues.

Last session of this Tech-Ed ‘Choose  Your  Approach to Design and Develop Web Services Applications’ by Christian Weyer. Very good story about how you should design you’re webservices guided by great demo’s (watch his blog for the sources). Nutshell: Contract-first bases with a XSD schema, Versioning using the xs:choise, XSD schema validation. The WSCF tool was giving great support on the demo’s and you should consider using them instead of the VS build in generators.

Started this morning in easy mode with a few hand-on labs focused on Visual Studio 2005 TS. Al worked well and fine until Rene Schrieken joined me and we started to do something on our own. We wanted an application design with multiple deployment scenarios, for instance development and test … we got close but failed. Later this day I did also some labs on VSTO (programming forms in Visual Studio for the MS-Office system) … they all worked.

The session ‘Indigo Under the hood’ by Steve Swartz and Clemens Vasters was … interesting … very good concepts … 45 min I’m lost … gladly the smart guys said that normally you don’t have know and do this … I hope so.

‘Web Services Interoperability’ by Simon Guest and Gurpreet S. Pall started with a nice promising play but stopped after showing the top ten 10 tips for web service interoperability. After that ‘what can you do with WS-*’ was the main topic.

‘Optimizing Scalability  Performance and Availability with Systems Built on the  NET Framework’ by Ingo Rammer. Great session with tips and tricks from Ingo on finding performance issues in distributed systems. 1. Trace the Network Interactions (EtherReal, TcpTrace, Fiddler, ProxyTrace), 2. Trace you’re Sql (SQL Profiler), 3. Memory profiling (CLR Profiler 2.0 (free), Compuware DevPartner, Redgate ANTS, AutomatedQA AQTime) … and above all … never assume anything. When using MS-datasets be aware of two things: extreme memory consumption and possible query overkill when using updates in data adapters.

The latest session today ‘What s New in the Visual C# 2005 IDE’ by Juval Lowy. Nice to see the great new support in the 2005 IDE. Some highlights  

  • Setting and Resource editor which take care off the app.config settings and resource file by generating helper classes for you. 
  • Import/Export VS settings and team support for these settings 
  • Back and forward navigation trough source !! 
  • See all references to type or variable 
  • Instant watch and build-in or customizable visualizers 
  • Good support for refactoring (Changing the code structure without affecting what it does)

Tech-Ed party ….

Started the day with a fine 400 serie: 'Server 2005 Table and Index Partitioning'. Although the speaker was hard to hear it was a very interesting feature in SQL 2005. After creating a partition function and add a partition schema to you’re table definition you can use the (large) table as a single object in you’re queries. This table can be partitioned over max. 1000 disks.

Next session: 'Implementing  Indigo  Endpoints   Secure  Reliable  Transacted Messaging' with Steve Swartz and Ingo Rammer. Very nice demo on reliable messaging with images … you must try it.

Some Other Architecture or SOAP without the P or Stupid Overhyped Acronym or Save Our A..es or 'Same Old Architecture', the last option seems the fit best according to Gregor Hohpe.

After lunch I choose a session with comfortable chairs (auditorium or forum), 'Microsoft s Blogging Engine' by Betsy Aoki's ; a very fast session but interesting to hear how Microsoft created and implemented their community blogs with Community Server.

Net Friend demonstrated 'how to develop forms using managed code in InfoPath 2003'. Especially the demo where the content of an InfoPath form was generated into a MS-Word document using a XSLT was great.

The last session for today was about 'What’s New in Biztalk 2006 server runtime'. I did not understand the applause for the a drag and drop column splitter for the text files import or the buttons to select files … or am I just too spoilt or unfamiliar with the previous releases … probably … anyway … the demo’s of importing a very complex never seen before flat file within 15 min into xml and recoverable interchanges where very cool.

First session of TechEd ‘Studio 2005 Team System Managing the Software Lifecycle’ by  Michael Leworthy and Eric Lee was not what I expected. They showed all the tools of VS2005 TS in a nutshell (seen them before) but nothing about the process of managing the lifecycle.

Great session from Scott Woodgate on what technologies could be used in different scenarios to connect systems. During this session he had one Visual Studio solution with a lot of projects (MSMQ, BizTalk, SSIS, Sql service broker and HIS ) to demonstrate the variety of how to connect systems. On one demonstration I did got very emotionally, he showed a piece Cobol code, that was a long time ago …. sniff …. He deployed this code on the mainframe (where it should be) and started a wizard in HIS pointed out the cobol code, selected the interface fields and HIS created a webservice proxy for the cobol code, very nice … more

Next a good session named ‘Implementing  Indigo  Endpoints   Addresses  Bindings and Contracts’ by Steve Swartz and Christian Weyer. Telling and demonstrating the ABC concepts and that the A and B can only be done by setting config files.

The last session ‘VS 2005 Team Foundation Server (TFS) Extensibility’ by Richard Hundhausen. Good session, but it seems that TS can be customized (who: end users, pm) and/or extended (who: Internal IT). That’s great, but I was not interested in the customizing part (50min) so the extended part was to short (25min).

 

 

 The key-note was, from my point of view, not telling something new. To keep me alive the following things worked 
- ‘hammerizing’ a swich to proof the working of failover a mirrored SQL 2005 database … it worked … although I doubt the truth off the whole play … should you take the risk off a short-circuit with 6500 people are watching … anyway,  they used a fancy avalon look for the performance monitoring, very nice.

- Putting a SUN micro on stage and start getting out the cpu fans to show that Microsoft Operations Manager (MOM) will notice this and that MOM can control this machine.

- Showing the prices Oracle and DB2 in comparison with SQL server 2005. By default they differ not too much but when you need extra for you’re database several packages should be added with Oracle and DB2 but not by SQL server 2005. Result: extreme price difference … next topic: announcement of the free SQL Server Migration Assistant for Oracle V1.0 

 

Top ten highlights from the TechEd 2005 pre-conf session SQL 2005 management tool by Kimbery Tripp (originally named Taming the tools … but this was a little bit to aggressive according to Microsoft).

  1. DVD with excellent labs which covers all the topics for today and a VPC (5Gb) with installed versions of SQL 2000, 3 instances off SQL 2005, Visual Studio an Visual Sourcesafe.
  2. SQL Profiler which collects xml query plans. You can examine the plans within the SQL server 2005 management studio later.
  3. SQL Profiler with to ability to map Windows performance counters with the trace file off the profiler based on time (works also for SQL 2000) which gives very nice graphs tot analyze.
  4. Solutions en projects can be created in SQL Server 2005 management studio, typically to create scripts for maintaining the database/server. These projects can be controlled by a source control provider  as long as it uses the Windows Source Control API. These projects are not the same type of projects which can be used in Visual Studio.
  5. Sqlcmd replaces the osql en isql tools. Now Sqlcmd can use parameters which replaces text in the script (USE $(DB) -> USE Nothwind. The parameters can be set in the script, or passed in at the command line or linked with an environment variable. (try hitting F7)
  6. All actions in SQL server 2005 management studio can be saved as a script, copied to clipboard or scheduled to be executed.
  7. Faster file initialization, files are “zero initialized” except when there is a certain set off settings applied to the server.
  8. Upgrading to SQL server 2005 can simply done by attach and de-attach. Be careful !! The upgrade uses the file you select and once updated there is no way back !! Be sure to have good backups.
  9. SQL Server Surface Area Configuration tool (SQLSAC) can be used to configure services and protocols in a disconnected way. Every option is off by default, even the CLR integration checkbox. This must be an admin whish J
  10. Dedicated Administrator connection (DAD). You can always connect with the server through this connection.

 You now already can use the SQL 2005 management tools for you're SQL 2000 database (sp3 and sp4).

After a fine research by Hedde van der Lugt we decided to use the  Mindreef SOAPscope product to monitor and test the web services we developed. This is an absolute must-have tool for everybody who is developing/testing/sniffing/deploying/using or whatever you're doing with web services. Most used  features till now:

  • Network Sniffer for SOAP messages; these messages are stored locally 
  • Message visualization (pseudo code (looks like c#), tree, xml, hex)
  • Modify and Resend SOAP messages from the local store or a WSDL file
  • WS-I compliancy testing
  • Graph View visualizes SOAP messages over time based on message occurrences, response time, or transaction size

[for Dutch people only] Last Wednesday our son (Max, 7 years) did his first training on the local soccer club DHC. As a totally normal kid he ran from one side of the field to the other side for a dozen times without hitting the bal. Which kid is chancing the direction of the bal is not visible through the constant scrum around the bal. Anyway, today at diner Max was talking about giving somebody an ‘eischop’. After scanning the whole soccer dictionary there could only be one explanation. The trainer had said something like ‘Je moet de bal naar hem passen’ in which for a kid sounds the same as ‘Je moet hem een schopei geven’ 

For all the developers who are writing there NUnit (2.2.2) tests remember this rule: 

            Never use the prefix ‘Test’ when creating private methods 

The previous version of NUnit requires that the test class inherit from a TestCase class and that the names of the methods running the tests begin with a "Test" prefix. These are no longer requirements because the NUnit developers have moved on to an attribute-based system. Nunit self however still interprets the test prefix, working fine for public methods, but for private methods (when you’re creating Nunit helpers for instance) you’ll get yellow colours and the following message (see also picture):

[Methodname] signature is not correct: It must be a public method

   

Replace or delete the Test prefix and Nunit will not try to test it again … 

 

Today I was running some performance tests on a brand new blade server. These are singe processor (can be two) 3Ghz Intel Xeon machines with 3Gb of memory running w2k3 sp1. I was wondering if there was a big difference in performance and server behavior when turning hyperthreading on and off. I heard some rumors that hyperthreading and Sql server 2000 (Sp3a) decreases the performance. I a nutshell the program: 

  • Unload data from a 8Gb database (using .Net datareaders, approx 60 million records )
  • Convert the data in memory (using a .Net c# program) 
  • Write the data to a flat file (using .Net StreamWriter) 
  • Load the results into another database (using DTS bulk insert in a separate threat, approx 18 million records) 
  • Creating the indexes on the destination table (using T-SQL) 
  • Because of the huge number of records and memory limitations the program handled ½ million records each time.  

This program ran with the exact environmental conditions twice, once with hyperthreading and once without hyperthreading … and the results are …

  • Hyperthreading off: total run time 65:30 minutes, during step 1-4, approx 45 minutes 100% CPU, during step 5 (last 20 minutes) 30% CPU usage.  
  • Hyperthreading on: total run time 62:30 minutes, during step 1-4, approx 40 minutes 60% CPU usage, during step 5 (last 20 minutes) 30% CPU usage.  

So there is not a big advantage in total run time (5%) but there is in CPU usage -> 40%, building the indexes (1 clustered and 3 normal) there was no difference. For this scenario the hyperthreading mode will stay on in case the server has to do something else ... HL2 

When you are running a pre Win2k3 server see Karen’s blog and this is the Microsoft story about SQL server 2000 and hyperthreading

Following a course about RUP OO design an analysis (March 2004) the mentor told us that you should have running skills when designing systems … just in case things getting really bad … run, Forrest, run … So I started training, training and training. Runned the ‘dam tot dam loop’ and the ‘city pier city loop’ but ended up at position 6963 and 1339. Probably not fast enough to beat the project manager or clients. I will continue running … I will go faster ...  maybe some day I can beat them all (including my wife J). 

 

When you’re creating an application which only contains webservices you’re demo to the client can be little bit disappointing. A lot of XML tags, SOAP headers and WSDL scripts, not a very slicky interface. As long as you’re using simple types in you’re interface the Internet explorer can be used to demonstrate the web service, but when you’re using complex types (as arguments!) the internet explorer only shows the interface specifications and can’t run you’re webservice anymore. 

So you can build an ASP.NET or Winform application to demonstrate the working of the webservice. Create a form, drag and drop a bunch of controls to fill the interface and call the webservice and fill the controls on the form with the information from the webservice. 

You can do this easier since the release of SP1 from InfoPath 2003. InfoPath 2003 can communicate with webservices and can handle complex types. When you create a new InfoPath form you can connect to different datasources, a webservice is one of them. 

I created an example of a webservice which accepts an array (min/max prices of products) and return an array of found products (name, stock, price and startdate). After InfoPath has connected to the webservice it interprets the WSDL file and creates (figure 1) the possibility to drag and drop the arguments en output fields on the form. With the button you can call the webservice and the results are shown on the form (figure 2). 

So after a few clicks you can test (if you don’t like Nunit) or demonstrate the webservice you’ve build with InfoPath 2003.

 

 Figure 1

 Figure 2

 

 

 

More Posts « Previous page - Next page »