Archives
-
Service Invocation Framework
My friends Sergio Borromei (Microsoft Consulting) and Rodolfo Finochietti (Lagash) have recently released the first RTM of their Service Invocation Framework.
-
Recommendations to design message contracts
These are some useful practices to design message contracts. They are based on my experience as developer on different software projects.
-
X509 Certificates for WSE and WCF - Part 2
I am writing this post as an extension to the previous one, "Creating X509 Certificates for WSE or WCF"
-
Applying Domain-Driven Design and Patterns book
I have just finished reading the Jimmy Nilsson's book, "Applying Domain-Driven Design and Patterns", what a great book. This book really helps me to clarify a lot of concepts regarding DDD and others buzz-words I had around in my head for a while.
-
Web Services Internationalization (WS-I18N) in WCF
I have recently published an article describing a WS-I18N implementation for WCF in "The Code Project" web site.
-
Parameterized Queries (Oracle, SQLServer, OleDb)
In my opinion, the parameterized queries approach is always better than the traditional approach of joining string to build a dynamic SQL string.
-
WS-Compression for WCF RC1 (September)
I updated the WS-Compression code to make it work with the latest WCF release.
-
SAML - STS implementation for WCF
I finally decided to publish a STS implementation for WCF. (It is based on one of my previous posts, "Implementing a Secure token service with WCF")
-
Securing web services
This post discusses first the most important aspects to consider regarding security, and then, how these aspects are implemented with web services.
-
Creating X509 Certificates for WSE or WCF
What certificate to use or where to get one of these, is perhaps is one the most common question I read often in the MS newsgroups.
Well, for starters, there are many kinds of X509 certificates around, each one for a different purpose. And to make the matters worse, each vendor offers similar certificates with different names.
Verisign, RSA, Thawte and others usually offer certificates for the following purposes: -
Interoperability between WSE 2.0 and WCF
William Tay (Aka Softwaremaker) one of the most knowledgeable WSE guys around has published an excellent article about interoperability between WSE 2.0 and WCF.
I usually find people concerned about topics like this, the different interop issues between WSE 2.0, WSE 3.0 and WCF.
Well, this article really helps clarify the required points to make both products work together. In addition, it includes some code samples. -
Making WSE 3.0 work with WSS4J and X509 certificates
Today I found this interesting blog entry to making WSS4J (Axis) work with WSE 3.0 using a Mutual X509 scenario (There are two certificates, the first one for client authentication and the second one for message protection).
Since WSE 3.0 and WCF are compatible at wire level (I have already developed a sample to show this), this entry is also useful for interop testing between WCF and WSS4J. -
WS-Federation quickstart for WSE 3.0
Microsoft has recently released a WS-Federation sample based on the SAML implementation for WSE 3.0.
This sample adds some new cool features to the SAML implementation and shows a scenario similar to what I described a couple of months ago in this post. -
New work - New Life
A month ago, a person from the Inter-American development bank offered me a job as .NET consultant in that bank.
-
WSE and WCF interop sample
Yes, I know, Mark Fusell has already demonstrated the interoperability between WSE and WCF many times. This is another example that shows a WSE client consuming a WCF service. The client and the service, both use a AnonymousForCertificate turn-key assertion.
-
The "Service Factory" project is out
Are you wondering yourself how to build service oriented applications using the best practices in the market ?. In that case, you should definitively take a look to this new project Web Service Software Factory from the Microsoft P&P team. It was announced last week by Don Smith and Jason Hogg in the Microsoft Canadian Architecture Forum.
-
MVP - Connected System Developer
I just received the confirmation email from the MVP Lead Ben Miller. Thank you Microsoft :-).
I also would like to give special thanks to Julie Lerman and Jason Hogg, who have helped me a lot to obtain this award. -
Service interface factory
Last week I received some feedback from the web services guru Christian Weyer (By the way, a cool guy too) about my post "Proxy Factory", so I decided to develop a complete and usable sample to show that concept.
-
WS-Compression for WCF
I have developed a new WS-Compression implementation for WCF. This code is based on the WSE 3.0 implementation made by my partner Rodolfo Finochieti.
-
Client-side token cache for WCF
WCF by default maintains a cache for security tokens per channel instance (A channel is related to a contract). Therefore, it is not possible to reuse the same token for different channel instances.
-
Remote pair programming
As most of you know, Pair programming is one of practices included in Extreme Programming. It is a programming technique that provides line-of-sight-and-hearing learning.
-
Implementing a Secure token service with WCF
I decided to write this post in order to show some necessary steps to build a Secure Token Service (STS) with the latest WCF CTP.
-
Intellisense support for WCF configuration files - February CTP
Juval Lowy has posted an updated version of the WCF configuration schema here.
-
Improve the performance of your services with Secure conversation
When SC is enabled, the token negotiation and authentication happens once compared to other tokens where that negotiation is done for each request to the service.
-
Jason Hogg is blogging
Jason Hogg is blogging, what good news. I have been working with Jason for almost two years on different projects (Shadowfax, some applications blocks, and other projects for web services).
Jason is program manager on the Patterns & Practices team, a smart guy and guru on web services.
He has been writing excellent articles about WSE, SAML and his work on Microsoft. Check out his blog at http://blogs.msdn.com/thehoggblog/ -
WS-Compression for WSE 3
Roldolfo Finochietti has written a nice implementation of WS-Compression for WSE 3.0.
You can download it here. -
Proxy factory
Last week, Sergio, a friend of mine asked me the following question about WCF "Hey Pablo, do you know how WCF does to create a channel with a specific interface on the fly ?".
-
Implementing a WS-Federation scenario with WSE
Federation is key concept that allows to enable collaboration across multiple security or trust realms.
There are many resources on Internet about this topic so I won't enter in details during this post.
The solution that I will give is based on the second extension of this pattern: -
Routing messages by means of the body element in WCF
Routing messages in this way is useful in some scenarios where the action is not available in the addressing headers or the SoapAction http header.
-
WS-Polling implementation for WSE
I used some of free time last week to write a prototype of WS-Polling for WSE 3.0.
Unfortunately, I couldn't finish the complete specification but it is enough to execute web services asynchronously.
If you haven't read anything about WS-Polling before, it is basically a specification to execute web services asynchronously and poll to the server later in order to get the response.
If you take a look to this specification, you probably will able to see three main parts:
1. A mechanism to execute web services and store the response for later retrieval
2. Some headers to query information about the status of an execution
3. A mailbox implementation
For the moment, I only implemented the first part and I'm trying to finish the second one.
Implementation structure
The diagram below illustrates the classes used by this implementation.
I defined a abstract class PollingService that declares a method to get messages. This class also uses an IMessageStore provider to store and retrieve the request and response messages for the concrete service.
The concrete service is a normal service that implements different business methods and inherits from the base class PollingService. e.g. MyHelloWorldService
The IMessageStore is an interface that declares methods to store and retrieve messages from an specific store such as Database, MSMQ or a file.
PollingClient and ConcreteProxy are both proxies to invoke methods in the Concrete service, but the last one was created by the tool WSEWsdl3.exe and it doesn't know how to invoke the service asynchronously.
I had to develop a custom PollingClient since the proxy created with WSEWsdl3.exe does not offer the following features:
1. Access to the WS-Addressing headers. For this implementation, the client must change the wsa:ReplyTo header and get access to others headers
such as wsa:MessageID and wsa:To.
2. Make a one-way call. The proxy created by the tool waits for an answer from the service in most of the cases.