June 2007 - Posts
Another publication talking about the Silverlight implementation made by my brother Mathieu!!! Wonderful!
You made an excellent job Mathieu!!!
(side note: Lorenz, it will be live on 1st of July, so I will be able to give you the link ;)
Discovery Channel switches to Silverlight in a flash
David Braue, ZDNet Australia
25 June 2007 07:30 PM
International Web development firm @www has built a new user interface for TV broadcaster the Discovery Channel using Microsoft's Silverlight -- the software giant's challenger to Adobe's Flash.
@www client services director Nicholas Ratsey told Microsoft's ReMix Developers conference attendees in Melbourne today the Discovery Channel wanted to create a rich user experience for viewers. And according to Ratsey, "it has worked well".
The interface for the current text-only Never Miss TV video site -- set to go live on July 1 across southeast Asia -- offers a range of content accessible via a single click.
Additions such as roll-down menus, personalised playlists and smooth scrolling through content were completed just two weeks after @www developers took their first look at Silverlight.
Discovery Channel switches to Silverlight in a flash: News - Software - ZDNet Australia
I started to migrate the Tech Head Brothers authoring tool and portal from Web Service Enhancement 3 (WSE 3) to Windows Communication Foundation (WCF). This is a next step in the integration of .NET Framework 3 in Tech Head Brothers portal.
Till today I was using WSE 3 from the Word VSTO solution to securely publish content to the portal directly out of Word 2003/2007.
The migration went straight due to my initial implementation that was already using interfaces and implementation classes. So basically I had to :
- Remove the reference to WSE 3 and add one to System.ServiceModel
- Change the attributes on the interface to ServiceContract and OperationContract
- Update the web.config to parameterize the new WCF endpoint, binding...
- Regenerate the client proxy and update a bit the client code
This first step took me around 1h30 and was working very good but was still missing all the security of the old version.
Then to implement the security part of the web services:
- I created a new certificate
- Removed the Policy using the self developed aspnetUsernameTokenSecurity that is not needed anymore
- Configured the web.config with a new wcf service behavior using userNameAuthentication and serviceAuthorization linked to ASP.NET providers
- Replaced code checking the role of the user calling the service with an attribute PrincipalPermission
- Regenerated the client proxy and reconfigured it
So now I have security at the level of the message that is encrypted using the certificate and at the web service with role access check.
Currently the solution uses attributes to check the role of the user that access the web service. I don't find the solution flexible enough and the next step will be to have the configuration in a configuration file, that would let me change access rights without changing any line of code.
As always when this will work I will publish the source code of the VSTO client authoring tool (Tech Head Brothers Authoring) on the codeplex project: THBAuthoring.
As stated in the blog of Frank Arrigo (responsible for all Technical Communities in Australia),
One of the things we will be showing at ReMIX is a preview of Discovery Channel Asia's "Never Miss TV" developed by local digital agency @www. It's one of the first commercial applications developed in Australia using Silverlight.
You may have read about this in a recent B & T Article (which also featured me)
I had a sneak preview of the site this week and it looked cool. Can't wait to see the rest of it at ReMIX
The digital agency @www referenced by Frank is the company in which my brother Mathieu is working.
A couple of weeks ago he made a demonstration of Silvelright in @www and now he has implemented a first commercial application using it that will be demonstrated during ReMIX 2007 in Australia and Asia.
I have seen the last bits of it today, and it rocks!!!
Congrats brother, you are really GOOD.
Nice :-) !!! First I was MVP now I am also VIB.
Two weeks ago I got an email from Microsoft to invite me to the Mix in Paris. This email was starting with the following "[Invitation presse/VIB]", I had absolutely no clue what VIB was for, and as I was not someone from the press, I supposed I was a VIB. Unfortunately I couldn't attend the Mix 2007 in Paris.
Today I got the answer from LeMondeInformatique.fr, VIB = Very Important Blogger.
What are the options when you need to integrate Windows legacy code in a heterogeneous Service Oriented Architecture (SOA)?
The proposed problem was to expose a set of Windows C++ DLLs to a global SOA platform written in Java. Those DLLs would be then exposed as backend computation services.
One of the options used in some past projects was to use the Microsoft SOAP Toolkit. But your C++ DLLs needs to be COM Objects for that. I experienced it and still have production code running with it. It works quite well even with surprising complex data structures. But as today it is definitely not the way to go.
The service oriented world has evolved rapidly over the last years and using such an old deprecated technology (Microsoft SOAP Toolkit) is not really efficient for a project.
So at last it was time to check .NET in this entire Java world ;-)
The general idea was to define a layered solution. From bottom up I first defined an interoperability layer using .NET Interop to be able to call the C++ DLLs from .NET. Then on top of this first layer I added another layer exposing the whole as a web service.
Now that I had the backend web service working I had to call it from Java. So are all those promises of web service interoperability just working out of the box?
Yes and No. You need to first have a real look at the different frameworks stack you want to use. For example, when you are working with Java Axis you are tied to SOAP 1.1, so you have to take care that the other side can understand this version of the SOAP standard.
So what do I have? First I have a client that must be written in Java using Axis 1.2-1.4 using SOAP 1.1, then a C++ Windows DLL backend that must be exposed in an interoperable way. By luck I was free to choose the technology used on that backend. Both ASP.NET web services (ASMX) and WCF can interoperate with the SOAP 1.1 standard, so I decided to go on with C# and WCF.
The way I approached the problem was to go on iteratively, making a first proof of concept to integrate the C++ layer with the .NET layer, then to integrate this upper layer with WCF and a .NET client to finally finish with a Java client.
Due to the ease of the interface exposed by the web service I didn’t wrote it using data contract design first. In more complex scenarios I would definitely go on with it because it leads to better success with interoperability.
So I finally adopted the following final solution.
On the backend a Windows Communication Foundation web service written in C# using the .NET Framework 3.0. The web service layer uses .NET interop to make a call to the legacy C++ Dlls.
On the client side; a Java 1.5 proxy/stub class generated using WSDL2Java out of the WSDL exposed by the service.
The last question concerning the web service was to define the way I wanted to host it?
Two possibilities in my case: Windows Service and Internet Information Services (IIS).
After making some load test on the web service I realized that it was leaking memory so I finally went to the IIS solution because it provides you all the services for recycling a buggy process. It was also easier because some part of the deployment process for web services hosted in IIS were already implemented and tested.
The first minor thing I went through was to check which versions of WCF and Axis are compatible.
Then the C++ interop was the main work because it is not such an easy task to marshal between the different worlds in a correct way.
And finally the last one was that the legacy C++ Dlls where using ifstream to load configuration ini files, without a possibility to specify the full path of those files. As the web application was running in the Application Pool process (w3wp.exe), loading the ini file was using the base path of w3wp.exe; C:\WINDWS\System32\inetsrv\. That would force me to deploy the ini files in that folder. What an ugly solution. Adding the bin folder of the application to the PATH was not making the trick too. And as we couldn’t change the C++ Dlls I had to find something else.
The solution I came to, thanks to David Wang (yes you also Richard ;-), was to use this little method before calling into the legacy Dlls, changing the current directory:
/// Sets the current directory.
private static void SetCurrentDirectory()
string binpath = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "bin");
I really like the way WCF is handling the separation between the service description, the implementation and the configuration that will define how you expose the service to the world.
The other thing I still enjoy to see is complex systems using so different technologies talking to each other. Here we had a caller written in Java running on a Linux server calling a web service written in C# calling multiple C++ Dlls running on a Windows server.
I am still amazed about those little things!!!
They did it again!!! The great tool became even better.
Here is the page on which you can read what is new in that release.
ReSharper 3.0 has loads of new goodies for C# users and VB.NET developers alike including XML, XAML, and ASP.NET support.
Ant the press release is here.
If you place on a web page a ModalPopup and a Silverlight control, you might end up with the ModalPopup hided by the Silverlight control.
To avoid this at the time you call Sys.Silverlight.createObjectEx you need to give the following property to true:
isWindowless:'true', // Determines whether to display control in Windowless mode.
And then everything works again and you see your ModalPopup.
A new release (10606) is out, that you might download on CodePlex.
I quickly tried out the script combining stuff and it works really great. I saved 7 round trip to the server and almost 2 seconds in the page load. You might read more about it on Shawn Burke
Script Combining. With the Toolkit, we made the decision to have components be responsible for their own scripts, as opposed to having one mondo-script file with all the script for the whole Toolkit. This was the right call, as it allows adding to the Toolkit without having everyone pay a penalty for the added items. However, for components with deep dependancies, this could add up to a lot of individual script files which caused multiple requests back to the server - a problem on slower connections. We've not got functionality such that all of the scripts needed for all of the Toolkit components on the page will be dynamically combined into just one script file and sent down that way.
and Scott Guthrie blogs.
And this just by doing this:
<%--<asp:ScriptManager ID="scriptManager" runat="server"/>--%>
<ajaxToolkit:ToolkitScriptManager runat="Server" ID="scriptManager" />
I don't get it!!! I thought that pageflow will be soon integrated into ASP.NET directly! When will it be and in which form ?
It turned out that the code we showed at TechEd wasn't going to end up in any of the product releases, so the dev team requested permission to release that code as a sample of how one can implement a generic navigation framework using WF that can support multiple UI technologies (i.e. ASP.NET and WPF).
Matt W's Windows Workflow Place
Great !!! Laurent you are not alone now. So what application do we build with it ?
More Posts Next page »