Essentials of RUP

This week I took a two-day class in "Essentials of RUP" at the LogicaCMG academy. The course was given by Peter van de Heijde from IBM  Peter gave a theoretical introduction and showed us the RUP-database. LogicaCMG collegeas can download this tool from the intranet.

I was surpised that very few attendees worked in their every day practice with some kind of development methodology (most only knew something about DSDM or process management ideas from Prince2)  The projects in our Microsoft competence might be relatively small, but even this kind of projects can profit from the best-practices tought by RUP. You can for example use the templates, guidelines and checklists. The course definitely made us more aware of this.

Posted by Arno Beljaars | with no comments

MCAD

Last week I passed for my third (and final) exam for the MCAD.Net (VS 2003) certification. I already had a couple of years of experience with developing in .Net, but still learned quite a lot by studying for the exams. What I did for passing:

- read the Microsoft Press books and did some of the labs. The labs are especially valuable when you have no experience. I found the books were easy to read, but was not impressed by the content. They were good for an Introduction, but just reading the books is not enough when you want to take the exams.
- read parts of books written by Amit Kalami (Que Press). Those books are very well written and more comprehensive than the Microsoft books.
- did some tests with Tanscender. Different questions than on the exams, but it gives you an idea of the areas you're lacking.
and finally:
- testking, testking, testking... Some say it's cheating, I just think it helped me a lot.

Lately, I travel by train almost every day. During the trips I fight boredom by reading e-books on my PDA. The RepliGo software was very handy for this.

On to the MCSD and 2005 upgrades...

Posted by Arno Beljaars | with no comments

How smart is your client?

Friday I joined a training course about Smart Clients by Erno de Weerd from Info Suppport. VS2005 offers a new toolset for better smart client development. Something developers should know at least something about.

Before the training I didn't really had a clue about what makes a client smart. Erno explained that according to Microsoft it's a Windows forms application that functions online as well as offline and that uses webservices for the connectivity. MS Outlook is an excellent example of a smart client. It offers a rich GUI, you can get your mail online and read it offline. Another example is road navigation sofware on mobile devices.

The toolset VS 2005 offers a lot of new tools that makes the user experience in smart clients better. New layout controls (FlowLayout, SplitContainer, TableLayout), enhanced data controls (DataContainer, GridView, DataConnector, DataNavigator), and UI toys (WinBar, ContextMenuStrip). Nice, you can now easy make apps with a Windows theme, but not really shocking.
Another nice one, is the possibility of asynchronous data access. In VS2003 it's not possible to change a windows control from the active thread. This still won't work in VS2005, but now a nice exception will be generated, instead of blocking the userinterface.
More interesting, seems to be "Click-Once" deployment. Well, of course it's not really one click, but it's a type of deployment on-demand and over a network connection. Using ClickOnce, you'll be able to dynamically download a client application to a user's desktop and ensure automatic updating when new versions of the application files become available at the originating site. Erno told us that some customers are willing to buy VS2005, just because of ClickOnce!

With the rapidly increasing sales of PDA's, the compact framework will become very important. Version 2.0 includes features you would already have expected in CE1.0, like a DateTimePicker, a LinkLabel amd WebBrowser control. Now it's here, compatible with CF1.0 and with enhanced performance: ao XML Processing through XPath, XMLSerialization (from object to XML and back), support for Message Queuing and SQL Server 2005 Mobile Edition.

The last topic was about the new Visto (Visual Studio Tools for Office). I already heared a lot about this Office integration with Visual Studio 2005, at the combined LogicaCMG and Microsoft MIND meeting.

Microsoft has devoted a part of the MSDN website to smart clients: http://msdn.microsoft.com/smartclient/

My first few steps with... MyGeneration

Attracted by the enthousiastic demo and blogs of Patrick, I decided to give MyGeneration a try myself.

I started by downloading the zip file with the MyGeneration tool from download.com and installed the tool on my PC. This  file also includes C# helper projects and a lot of scripts (or templates). Then I opened the quick reference guide from the MyGeneration homepage. This guide proved very useful. It includes a step-by-step installation guide and examples of the most important features.

I'd already created tables in a MS SQL Server database. Within the MyGeneration tool, I opened a template (/script) for creating stored procedures. This script is included in the Microsoft_SQL_Server folder of the downloaded zip file. Then I searched for the necessary settings. You have to make a reference within the MyGeneration tool to your database. After that, you can just run the template and a T-SQL script is generated that you can cut and paste into the Query Analyzer for creating all your CRUD-procedures. Almost the same trick I repeated for the data- and businesslayer (in the templates\C# folder). I also found some templates for generating aspx pages in the Template Library. The aspx pages needed editing, because they looked  plain ugly, but it all worked without problems. You can even generate views, when you want to combine data from different tables in your classes (and e.g. set the defaultview of these classes to the databinding property of a datagrid). It's very nice that you don't need to configure a lot. Everything is generated from the datamodel.

With the help from the reference guide and some website articles, I created a complete datalayer (with stored procedures), a simple business layer in C# (yes, you could also use VB.Net, but why should you ;) and some basic ASP.Net screens for editing data within a day. Now that was fast (for me)! And I must confess, the code looked better than when I'd written all classes myself.

So Patrick is right. It really is this simple.
Even I could make it work ;)!

Next month I will start a project with LogicaCMG's I-Framework, also a code-generation tool. It will be very interesting to be able to compare the merits of both tools.

Tech-Ed Europe 2005: The Zen of ASP.Net 2.0

Today I was lucky to attend the Tech-Ed pre-conference in Amsterdam about ASP.Net 2.0 by Jeff Prosise from KnoxVille, Tennessee (USA). Jeff is the cofounder of Wintellect and seems to know almost everything there is to know about ASP.Net.  The seminar was pretty long, from 10 to 18 o'clock. In those hours Jeff told us about the many new features of ASP.Net 2.0 compared to the 1.1 version. ASP.Net 2.0 is as different from 1.1 as ASP.Net is from classical ASP, although it is not a shift in paradigm. These changes should result in less code (so less mistakes) and higher productivity. In fact, Jeff adviced us to start working with ASP.Net 2.0 now instead of 1.1, even so there's no final release of 2.0 yet.

Most notable talked about new features were:

  • Master pages, so you can inherit content from different pages;
  • New compilation (auto-compile, compilation of partial classes, precompilation without source);
  • Data source controls with declarative (no-code) data-binding, like the SqlDataSource and ObjectDataSource and new data controls as the new GridView (DataGrid replacement) and DetailsView;
  • Membership and Role Management service for managing users and credentials;
  • Profile service for storing per-user data persistently;
  • Localization or culture handling;
  • New controls for navigation handling, like the TreeView and Menu with the use of a SiteMapDataSource and SiteMapPath.
  • Configuration management with the help of new administrative tools. The possibility to read and write application settings. Also the not very well known possibility of encrypting parts of the config file was mentioned.
  • Monitoring of web events, so you could for example write failed login attempts to the events log with almost no performance loss.
  • Web parts for a richer UI. You can drag-and-drop parts of a page while editing.
  • Asynchronous pages and Client callback management with XML-HTTP Callbacks. These concepts seemed pretty complicated to me.
    With asynchronous pages a request (to for example a webservice) is done in a thread from the thread pool and the thread is returned to the pool immediately. When the request is answered a new thread is started, so in the mean time (between the request and the answer) the number of threads is kept to a minimum which improves scalability.
    Client Callbacks can update data without postbacks to the server. This improves the user experience as no “ flashing“ of the screen occurs.

For me it was the first time at a Tech-Ed conference. The seminar was entertaining and interesting and I found the whole atmosphere of the big conference - with it's thousands of developers - quite impressive.

The presentation sheets of Jeff and almost all of his source code examples will be available from the Wintellect website within two weeks.

Posted by Arno Beljaars | with no comments