Nov 122014
 

In case you missed it, Microsoft created a free version of Visual Studio 2013, named the community edition. You can create free or paid apps (and more), with restrictions when you use this version within a company. No such restrictions for the individual!

Download Visual Studio 2013 Community Edition

Thank you, Microsoft.

BTW I like this checkmark:

Visual Experience options

Visual Experience options

May 162014
 

I created the dynamic webservice. So far so good. Solved some hard to find problems (at least, Microsoft doesn’t tell you that these problems will arise). Now for the big finale. WCF in all its wisdom caches WSDL requests. Let us repeat that all together now: WCF caches WSDL requests. And there is no way to tell WCF to not do that, or for that matter to empty the cache. The only way to do that, is to recycle the application pool the service is running in, or (of course) to recycle IIS. It’s that bad.

I tried several methods: messageinterceptors, creating extra instances of the service, etc etc but there’s no way to work around the cache. Once requested, the WSDL is written in stone.

We serve web services that have a customerbased configuration. A customer gives us a data file, which will be the source for their endpoint. In our application is defined which columns are served to the respective methods. But all clients have the same set of methods (web operations). So the wsdl generator looks at the user that is logged in (custom servicebehavior), fetches the relevant column names from the database, and modifies the wsdl accordingly. Every customer is served its own data with its own choice of columns. Works perfectly. Until you change the set of columns and don’t restart the service. No problem on my development laptop or on the test machine, but a big problem if we want this in live in production.

At a dead end with this now. Looking for an alternative. But so far, none of what I find actually works.

Apr 042014
 

First things first: my trial period is over, so since this month I’m a “real” employee of Olbico ;-)

I’ve created dynamic web services. Turned out to be a bit more difficult then I expected, since the requirements were quite strict: secure communication, but no client-installs, and the response had to be dynamic, specific for the user that logged in.

First problem was that the default serializing of dynamic objects in WCF doesn’t quite work like you would expect (you can’t deserialize the XML to a proper object anymore), so a custom serializer for the dynamic objects (to be used in the response).

To further complicate things, the WSDL needed to be user-specific. A users logs in and request his/her WSDL. This turned out to be not too difficult, except for the “logs in” part. We didn’t want to work with client certificates, but we had decided to create some security by communicating over HTTPS. To do that with WCF, I needed to create a custom user-authenticator that supports a username/password digest in the request-headers. Google is your friend!

So customers now have (well: will have, it’s not in production yet) their own WSDL, and they can create strong-typed clients on their side, and all data is transferred over in an encrypted way. YEAH!

From our point of view, we only have to maintain one web service/endpoint. All configuration is done in the database. So a new customer gets a login, we define what can be requested (that’s a subscription/payment thing), and the web service now does the rest. No reconfiguration needed. Double YEAH!!

Mar 072014
 

The new job is very nice. I’ve been put in charge of a part of their (I should say “our” now) software, and the task is to renew it. It’s a web services based piece of software, and the services need rewriting. They must be dynamic, and so does the contract (WSDL). That was more of a challenge than I anticipated, but today I got it both to work. Serializing dynamic objects in a proper way (not string arrays of keys combined with string arrays of values), and when the WSDL is requested the same dynamic magic takes place to give each user a customized contract.

All done in C# (WCF) running in IIS.

This week I installed the trial version of ReSharper in Visual Studio. That’s a big enhancement, and speed increaser. Some things are possible in vanilla Visual Studio as well, but not as well thought out and automatic. So maybe I’ll ask for it to be bought. Another 3+ weeks to try it out more.

Friday is hamburger day at work. One of my colleagues took on the task to bake burgers on our toaster/grill. Every Friday. So that’s a treat every week, since he’s very good at it. It was a quiet Friday, but productive. Must be because of the burgers ;-)

Aug 062011
 

Too bad my comment on the original post was deleted. Perhaps they don’t want to know what I had to say, or they don’t like C#? From the top of my head I wrote something like:
The original post.

I created a very simple C# implementation, a console application with hardcoded username/password and select-statement. It roughly has the same speed as the Pro*C (C routine) version, about 1.7 million ALL_SOURCE records in about 57 seconds. C# is a little more appreciated amongst managers, since C# developers are a lot easier to hire than Pro*C developers. Why on earth you want to fiddle around with Java when something needs to be done fast, puzzles me. Even Java 6 (don’t know about 7 yet) does not come close to the performance of .NET, let alone natively compiling languages.

May 122011
 

I have been struggling with a databinding problem in WPF/XAML. To have some screen fields automatically update a class, I bound them to instantiated class (let’s call that myEmpData). In the XAML file I defined the path and source for each component to point to the class and a property in that class. The pitfall is that this creates a scoping problem. I could see the validation rules do their work, since my textboxes turned red whenever I entered incorrect values. But the underlying class was never changed. Or so it seemed.
I found out that you have to define your binding source as high as possible, I did it within the PAGE definition. Binding textboxes (or other components) to this source only requires you to specify the path. Now it works!

Mar 062007
 

Today I updated my Outlook Unsafe Attachment Unlocker utility. For some reason I noticed the select-all checkmark did not toggle. It only did a Select-All, but not an Unselect-All. Now it does. And the context-menu now points to the correct address of this weblog. Get it here.

Click to enlarge

When I get my hands on an Office 2007, I’ll see whether the utility can be made Office 2007 compatible.

Apr 122005
 

I still get a lot of search hits from people looking for a way to change the extensions that cannot be viewed in Outlook, because Microsoft decided in all her wisdom to mark a lot of extensions as “unsafe”. In Outlook Express there is a nice dialog to change this behaviour, in Outlook there is not. You can do it by editing the registry by hand, but a lot of people are afraid to do so.

For that reason, I created ouau.exe, or “Outlook Unsafe Attachments Unblocker”. It detects your Office version (which you can override) and lists the extension so you can block/unblock them. There’s a handy “select all” radiobutton that will save you some clicking.

Here is a screenshot.

Click here to download the program. It’s in WinRAR format, so you need to extract it first.