Friday, July 08, 2005

More Irritations

People eating boiled sweets behind you during a session and making it sound as if they had a mouth full of gravel !!!

People getting a T-Shirt and seconds later, its on their back -creases and all!!

After-Party

Well, what about the party?

What was bad!!

- Food was rubbush (crap burgers/hot dogs/fish burgers and that's it)
- Cinema screenings were i) the Incredibles (ok but a bit old) and The Simpsons !!
- Too busy
- Bands were OK

What was good?
- free beer!

IIS 7.0

A terrible presentation, both because of the presenter (the Product Manager for IIS) and because some of the demo's didn't work - and that was just before the slide with the message "Everything will just work" was shown ;-) how funny!!

They are aiming at a unified core for IIS/ASP.NET and Indigo

IIS7.0 looks good though

Configuration via XML files, similar to .NET
Auto updates as soon as the file is committed
new UI for managing your sites, either locally or remote (looked good)
Modular - you can include/exclude modules (which map on to features) and so you can reduce the 'attack surface' and 'footprint' size. very cool
Modules can be written in native or managed code
A whole load are provided out of the box. i.e. StaticContentModule, DirectoryBrowsing etc
Allows tighter integration with ASP.NET i.e. Authorisation using ASP.NET Forms Authentication

Improved Diagnostic support via
- API for real-time server state
- API to allow you to modify the server state, no-reboots

IIS7 security improved via
- reduced attack surface
- rich delegation features
- request filtering built-in

Compatibility - should be compatible with
- ISAPI files and extensions
- ADSI/WMI config scripts
- ASP.NET 1.1 & 2.0

Programming System.NET in v2.0

Key points for System.Net in 2.0 are
- Network Awareness
- Enhanced Protocol Support
- Security

Network Awareness
==============

Supports through API the ability to detect a network, be informed of a network change etc. The API consists of the areas:
- NetworkInterface
- IPGlobalProperties
- Ping
- NetworkChange

The NetworkChange allows your app to 'adapt' to the fact that a network may or may not be available, or that you've changed from Corporate to Broadband to Wireless to Dial-up to nothing

Ping allows simple ping requests to be sent, checking server availability and roundtrip times

Cacheing is provided via policies, either i) Globally, ii) at a individual Request
And both programmatically or via Config

v2.0 shares the cache with IE via WinINet

v2.0 of the framework is now 'aware' of automatically detected settings and so can handle AutoProxy requests.

EnhancedProtocolSupport
==================

FTP support now through FTPRequest & FtpResponse
WebClient allows abstraction of protocols, api detected via URL

Demo's included Web Sever, Mail Client - all pretty straightforward but cool

He also showed the support for additional support such as NegotiateStream (authentication via SSL) and SSL Streams over a socket connection

Thursday, July 07, 2005

Exception handling

Finally, before the party and adding these blogs, I went to a session on Exception handling by David Platt, an author and tutor at Harvard. Brilliant!! very very good presenter!

Basically, Exception handling is expensive, partly based on the fact it has to walk the stack TWICE for every exception.

1. Looking for a handler
2. Looking for a finally block

So...........

A. Repurpose by using cheap methods. Int32.TryParse instead of Int32.Parse or use File.Exists() instead of looking for the FileNotFound exception

B. Avoid overthrowing - that is catching an exception and then throwing it again. It loses information and you should only catch exceptions you can handle. Options include

i) Put a finally block in
ii) Retrhow and exception using throw;
iii) wrap using an inner exception - throw new Exception("Something", e)

C. Avoid overcatching - only catch those exceptions you can do something about. Otherwise your just hiding exceptions.

You want to know about bugs, so does your user, so DON'T HIDE THEM

D. use windows winqual.microsoft.com feature to send and have the ability to report on unhandled exceptions, thrown by your app.

E. NOTE: If you impersonate a user for some code and you run some code that you dont trust that has setup a Filtered Exception, a FINALLY block you have defined will not be called until the exception filter has been called. The Exception Filter is running within the context of your impersonated user and so can be malicious and have unwanted rights! bewarned!

Good presentation, nice topic.

My tip - an Exception by its very meaning is something that doesn't happen often, so treat it as such. Use cheaper methods for those errors that are more likely to occur, for example, return a boolean value

.NET Performance and Scalability

Another good presentation by Indgo Rammer, this focussed on some key tips for Performance and Capacity planning your .NET based application. To summarise:

#1 Use Tracing, the 'Wire doesn't lie' which is very true. Etherreal or something similar is invaluable. Tune for Latency and Bandwidth, if your unsure, go with Bandwidth. His reasons, if we still had 1200 Baud modems, it would be faster to walk to Redmond and Collect a CD than it would be for it to download!!

#2 Trace and Optimise your SQL. Once example using DataSets shown how expensive they were with tables that had relationships as the DataSet doesn't know about FK's. For example, an example with a small dataset shows 500 SQL statements as opposed to an optimised 12!!

#3 Memory profiling

Use the Release not Debug Build for memory profiling, they have different meory models.
Datasets are rubbish at memory handling, the same example used (10 items with 14 rows) showed a used of 4MB - this will NOT scale in 32-Bit windows!!

Example In-Process profilers include Compuware's DevPartner and Redgates ANT

#4 HTTP

it was never meant to be used how we are using it today, it was based on lots of clients few servers - nowadays we can have lots of clients AND lots of servers

In HTTP 1.1, it has a default value of 2 synchronous connections per address, use the to increase the max number of connections per address from 2 to something like 99. This is found in web.config under System.Net or something

Good session!

Other Sessions

I've been to a couple of other sessions, not going to report the whole lots as they were specific to some projects were running and the slides were self explanatory - which I'll be providing when I get back.

However,

There's some good onces coming up

- VS2005 support for DSL
- Performance and Optimising the .NET Framework (probably go to this)

and more, I'll report back what I think are useful!

Party

I didn't manage to get to the UK Country party last night, too busy working after the conference (till 11pm pretty much every night!) but I don't want you to feel sorry for me.

However, I AM going to go to the TechED party, if only for a while. How can I miss the tribute bands

- Skizzor sister
- NU2 (pronounced new-u-two)

No guessing for who they are copying.

There's also foor, beer and a movie - last year it was Matrix, very predicatable and not surprisingly for a load of geeks, packed out !

Indigo - Under the Hood

I was pretty interested by Indigo even before I arrived at TechED, Enterprise Services (COM+ by any other names) is a tried and tested technology but its not user-friendly or flexible and in the SOA of today (and the future), it just won't cut the mustard.

Therefore a lot rests on Indigo in the Microsoft world and this was confirmed when Steve Swartz, the architect of Indigo @ Microsoft said that all "future products" that interacted using messages (as most will in the future) will use Indigo - Biztalk, ADO.NET, Business Server etc

Its go to be right!!

Therefore I decided to go to an "Internals" session, with the Architect of Indigo and Clemens Vasters, a regular presenter at TechED and Indigo expert.

To summarise, it looks good - very good, the Model is extensible and both Declarative and Programmatic. You can get to its workings if you want, if you don't, you use "descriptions" to declaratively use built in configurations that do the work for you.

Basically it consists of
- Messaging Layer
- Service Model Layer
- Descriptions

The Message layer is a CLR representation of the CLR Infoset, although it doesn't have to be, you can write your own encoder/decoder and represent the message however you want. Binary for speed - no problem.

Its based on a "stacked" architecture, where "Channels" can be stacked upon one-another, passing the data to the next one in line for processing until ultimately it reaches a "Transport" Channel that can pass or receive data across the wire. Out of the box components are provided (SOAP Channels, HTTP Channels for example), but you can write your own as well

Transport out of the box is for HTTP, TCP, NamedPipes and MSMQ but again you can write youir own

A "Dual Channel" provider is available that supports Full-Duplex transmission on a single-threaded protocol - neat!

Protocol Channels
=============

You can have a channel for both HTTP and Reliable Messaging (WS-*), where the channel implementation provides session information and guarentees the delivery of the message using its own messages that your app never sees!

IIS and its WAS (Activation Service) is being extended to cope with not only HTTP services but Indigo based services, and wake on activation. This will be extended for IIS in Longhorn

Type Proxy Channels provide the Service Model Layer, with a dispatcher at the server
Descriptions provide an out of the box description that unify the different service model elements such as code, config, metadata etc

Its pretty in-depth but very exciting. Somethign we should be getting ready for!

Wednesday, July 06, 2005

Irritations

I'm not saying that I'm perfect BUT......

1. I hate it when people are fighting to get to a stand to collect a T-Shirt, rather than discuss the product. Its like a cattle marketing, fighting / pushing etc.

2. People who attend sessions but spend most of the time on their PC or TALKING! why bother going!!!!

3. There are some very stange people here, I know we all have our own attributes but there are limits!!!

4. Rubbish presentations (and there have been some, I can tell you!)

Indigo - Secure, Reliable, Transactional messaging

Very good presentation from one of the Indigo team and a guy from Thintecture.
Indigo is definately what we've been waiting for, the abstraction of the underlying communication mechanisms with a declarative (or programmatic) interface.

Its secure by default, handling credentials (a claim, an issuer, and proof). It handles security in both TRANSPORT (i.e. HTTPS) and MESSAGE (Signing and Encryption).

It supports MSMQ, WS-* etc, all without you needing to know the nuts and bolts.

It provides the concept of SECURITY GATES for securing access to resource, these can be permission based, credential based or programmatic based (imperative code)

Impersonation is handled out of the box with the "using" command, or a declarative tag. In addition, to can check for "roles" such as 'Administrators' group.

The reliable messaging was very neat, consisting of
- Reliable sessions
- Transactions
- Queues

Relaible sessions allow the declarative indicating of message delivery and order of delivery. Queues are supported via MSMQ (and others) and transactions too are supported with AutoEnlist, AutoComplete etc

The demo showed a Sender and Receiver with a simulated route in between that could be adjusted to losing packets. A picture was sent from A to B, losing square sectons in between and we saw how chaning the configuraiton (the behaviour, contracts and bindings) affected the messages being sent without having to code this for yourself (idenpotency)

Very coool stuff. Might have to start playing now!

Microsoft and Open Source

I attend this session to see if Microsoft had changed its view on Open Source, unfortunately they hadn't. I tried to pre-empt the usual answer that as far as .NET is concerned, they've submitted C# and the CLI to EMEA as a standard and that Immitation is the best form of flattery but they didn't come back with much else.

The view seemed to be that they are happy to have these things go on, providing its not affecting their IPR but they won't be looking at .NET CLR implementations on anything other than Windows. The view was it devalued the framework, allowing "rogue" features to be included and it no longer became a dependable runtime - which I can understand - but as I said, surely if its running across multiple platforms and a 'core' functionality is ensured, then thats a good thing.

There are a few initialised going on and www.microsoft.com/sharedsource is one link, as is the other - Sourceforge.

Tuesday, July 05, 2005

Software Factories

The Perscriptive Architecture Group publish Design Patterns and Code through Application Blocks

The Guidance Automation Toolkit (GAT) provides you with the ability to programmatically defined a "wizard" that offers guidance within context into VS 2005

DSL to provide a context specific language for a problem, this generates code that can then be used

Demo given showed:

GAT generated Wizards to defined
a) UI linked with UI Processes
b) Business Process hooks with links to things like Service Agents for Cacheing

The demo was pretty poor, lots of code, lots of cutting and pasting. I was hoping more on the theory of Software Factories, the use of DSL's, and the support for SOA and MDA architectures.

Never mind, some stuff to look into. Jason Smallman has started some work on a "helper" then defined the framework for projects, linking in code for design patterns that have previously been developed. As I see it, the GAT and some development work would replace this bespoke tool with something that would hook into VS 2005 . It woud offer the same features, "I want to build an n-Tier app that does x" and it presents a project, structured as we would want it, with accompanied DSL languages to help us defined UI flow and Business Layer hooks. Interesting

Keynote

Andrew Lees, Corporate VP for Server and Tools gave the Keynote. Its a shame that they can't roll out the likes of Steve Ballmer or Bill for the European Keynotes, however, Andrew did a good job.

Announcements
===========
- Virtual Server 2005 SP1 - end of 2005 with increased Performance and support for Non-Windows O/S's
- Windows Hypervisor - Launch with Longhorn in 2007
- Compute Cluster Edition in 2006/2007
- SQL Server 2005/Visual Studio 2005/SQL Server 2005 - all to be launched 7/11/2005

O/S
========
64-it offers far larger addressable memory space = larger solutions
Trustworthy has improved security
: 1 High Path in W23K this year, as opposed to more is Suse and RedHat
: 0 High patches in SQL Server 2000 as opposed to more in Oracle


SQL Server 2005
=============
Data Mirror Support
Increased in Performance
CLR built into the engine (.NET Language can be used for Stored Procedures)
Service Broker feature for dependable asynchronous messaging

Holds a 41% market share in SME & 39% in the Enterprise, beats IBM and Oracle. This is NOT based on revenue, which is there IBM and Oracle beat microsoft due to the increased cost of their products.

A fully loaded Oracle 10g costs around $232K, with SQL Server 2005 being $25K


SQL Server 2005 is also 7% faster than Oracle on same kit, see TPC benchmarks
64-Bit gives far greater access to memory

E-Learning
========

Free e-Learning until 7/11 at www.microsoft.com/learning for SQL Server 2005 and VS 2005

Case Studies
=========
Paris Firefighters = using SQL Server 2005 and App written in VS 2005

Dynamic Systems Initiative
====================
includes: Microsoft Operations Manager 2005, Systems Management Server 2005 = Systems Centre
Heteregenous support via adoption of WS-Management
Support for complete stack : H/W -> O/S -> Application

Policy led, not Topology
================
Federated Identity = Active Directory
Authentication and Authorisation = Identity Management Server & A/D
Federated Data = SQL Server
Universally Addressable = ipv6
Define Boundaries = "Network Access Protection" in Longhorn, i.e. Is It Patched/Has it Anti-Virus
Secure Boundaries = ISA Server

Windows costs 13/14% less in cost to patch than Linux

Exchange
=======
Exchange SP 2 & Mobile 5.0 = Push of email

Other
====
Windows Server Update Services = unified patch catalogue for all Windows Products
IE 7.0 (linked with Anti-Virus (Sybari) and Anti-Spyware (Giant)
Windows OneCar (No idea what this is)
Common Engineering Criteria = the grouping of infrastructure elements within context

Day 1, Pre-Conference

Well actually its Day 2 as its Tuesday and the Conference was open on Monday - but that's splitting hairs.

I arrived at 8.30am with very little trouble, the queues were non-existent and registration was fast and efficient. Once registered I duly received my Bag of goodies and for the first time since I've been its not a horrible Orange or Blue colour and resembles something that you could use on a day-to-day basis - without ridicule.

The Wireless Network is available, although I've not tried it yet and ALL the bags are fitted with RFID tags - something for everyone this year ;-)

Anyway, I'm looking to keep this blog updated with the sessions I visit and the adventures (if only) I have. It'll also help me remember for when I get back!

Talk soon.