Archives

Archives / 2008
  • Using XAML serialization in WCF 4.0

    Declarative Services is one of the exciting new features of Windows Communication Foundation (WCF) 4.0. By declarative, we are referring to services that are completely modeled by using the Extensible Application Markup Language (XAML). As you might think, this capability will open to door for a whole new set of scenarios in Service Oriented systems which are really hard to implement with the current technologies. The specific capabilities of declarative services will be the subject of a future post. Today, I would like to explore one of the features that enable the implementation of declarative services: XAML serialization.

  • Implementing content based routing using the Windows Application Server (Dublin) forwarding service

    Dublin’s application server incorporates a series of runtimes services that complement the runtime behavior of a WCF service host on areas such as lifecycle, persistence, message routing, etc. Among those services, the forwarding services provides high performance message routing across different services. By providing a robust foundation for messaging routing, Dublin’s forwarding service can address really complex service composition and endpoint virtualization scenarios which are traditionally very hard to implement in real world SOA applications. Capabilities such as service aggregation, content-based routing, protocol translation or data partitioning are notorious for requiring a lot of infrastructure logic in order to work properly and consequently can be drastically simplified by the use of a technology like the forwarding service.

  • Extending RESTful services with a custom Request Interceptor

    There are a lot of aspects that needs to be combined in order to architect robust RESTful services to go beyond the typical HTTP verb and URI modeling. Capabilities such as Low-Hi REST, Error Handling or Caching are fundamental elements of real world RESTful solutions. On windows Communication Foundation (WCF) developers typically implement those capabilities by leveraging elements of the dispatcher runtime extensibility programming model like message inspectors, message filters or error handlers. The recently announced REST Starter Kit introduces another extensibility point in the form of request interceptors that tremendously simplifies the experience for enhancing RESTful services with extra capabilities that are not included in the default programming model.

  • Speaking at SOAWorld 2008

    In a few hours I will be speaking at SOAWorld about REST and WS-* in the enterprise. The session provide a pragmatic view of the best practices customers are following in order to adopt the REST model in the enterprise and its coexistence with WS-* services.  If you are attending to SOAWorld and you are interested in Service Orientation make sure to swing by and say hi ;).

  • Speaking about REST at IASA RC

    I just finished my session about RESTful Services patterns at the Dallas IASA Regional Conference. I would like to thanks Paul Preiss and the IASA folks for extending me this invitation and particularly to all the folks who attended the session. The slide deck can be downloaded here and I think the video recording is going to be available at the IASA site really soon.

  • Adding caching to WCF RESTful services using the REST Starter Kit

    As promised, this is the first of a series of posts that intend to cover the new capabilities implemented in the WCF REST Starter Kit to enhance the development of RESTful services using WCF. Specifically, this post is focus on how to enable caching on RESTFul services by using the REST Starter Kit . Undoubtedly, caching is one of the greatest benefits of the Web programming model and one of the main attractive of REST  over alternatives such as SOAP/WS-*. Throughout the evolution of the web, the industry has developed very innovative techniques for optimizing content retrieval by the use of caching. These techniques have been reflected in technologies such as MemCache, Oracle Coherence and more recently Microsoft's Velocity that specialized in distributed caching. Additionally, web technologies like ASP.NET provides generic programming models that address some of the most common caching scenarios. All this infrastructure and technologies can be naturally leveraged by RESTful services without the need of creating new caching mechanisms.  Precisely, the REST Starter Kit leverages ASP.NET extending WCF RESTful services with caching capabilities.

  • Microsoft gives you more REST

    Today Microsoft announced the first CTP of the WCF REST Starter Kit and the REST developer center. This technology package includes a set of guidances, project templates and extensibility components that complement the existing features of WCF 3.5 in terms of RESTful services. Essentially, this packages addresses important aspects of real world RESTful scenarions such as caching, exception handling or security. I have been playing with this technology for a few weeks now and I am really excited about it. I will be blogging some of my thoughts and examples in the upcoming days.

  • Configuring the BAM WCF interceptor programmatically

    Although adding the BAM WCF-WF interceptors via .config files works for most of the scenarios, there are some cases on which you need to add these interceptors programmatically. Dealing with multiple BAM databases, dynamically enabling and disabling tracking and dynamically adjusting the polling intervals are some of the most common reasons for not relying 100% on the app.config configuration.

  • New REST "must read" papers

      Two interesting REST-related documents have kept my attention this week.

  • Speaking at Oracle Open World

    This weekend I am heading to San Francisco to speak at Oracle Open World(OOW). The topic ( take a guess :) )Web Services interoperability between WCF and Oracle WebLogic. This time, I have the pleasure of sharing stage with Pyounguk Cho, Product Manager of the Oracle SOA Suite. We plan to show a real application that highlights some interesting WS-* WLS-WCF inteperability scenarios in terms of security, trust, reliable messaging, mtom and... JMS!!!  Also, this is not the only WCF session at OOW!!!!!, my good buddy Kent Brown (WCF Product Manager) will be  presenting a session about WS-AtomicTransaction interoperability...yeap it works ;).

  • Two new RDF specifications

    If you are a regular reader of this weblog you know I've been a big fan of the Resource Description Framework (RDF) for the last few years. One of my interests on RDF is its potential use on RESTful services. Unfortunately, from a practical standpoint, RDF hasn't caught up to alternative standards like the Atom Publishing Protocol (APP).  However the W3C folks keep doing a phenomenal job evolving RDF.

  • My latest article: Web Services federated identity patterns on the Architecture Journal

     As my buddy Vittorio already announced, the latest issue of the Microsoft Architecture Journal is now available. This edition includes an article about Web Services Identity Federation Patterns that I had the pleasure to coauthor with my friend Joe Klug. We've really tried to summarize some of the most common techniques and patterns for addressing the challenges of identity federation in Service Oriented environments.

  • WCF XAML injection

    During the last years there have been a lot of talks about the influence of dynamic and functional languages on techniques like dependency injection, aspect oriented programming etc.  Both paradigms are having a deep impact in the way we architect applications nowadays. Specifically, the world of Service Orientation has been a champion and early adopter of those techniques. On this post I would like to explore how to complement those techniques on WCF services with declarative mechanisms of expressing logic such as XAML.

  • Oracle WebLogic Server

      Oracle has taken the first step to consolidate the vision behind the BEA acquisition. The new version of Oracle WebLogic Server (10.3) is now available for download. I gotta admit that the name sounds a little weird ;)

  • Joe does SOA

    Tomorrow Joe Klug will be presenting a session about Microsoft’s Real World SOA vision at the Microsoft’s offices in Downers Grove, IL. As part of the session Joe will present a version of a demo we built last year as an example of how to use Microsoft Office SharePoint Server and windows Communication Foudantion to build composite applications on the Microsoft platform. If you are in the Chicago area and you are interested on how to combine Microsoft technologies to achieve Service Orientation you should swing by Joe’s session.

  • Combining durable messaging and workflow services: Building a custom context channel

    On my previous MSDN WebCast I showed a demo of how to use a custom WCF protocol channel to combine Workflow Services and durable messaging transports channels like MSMQ. If you watch the recording of the WebCast you can see the entire demo, but there are some things that I would like to highlight about the structure of the channel.

  • Upcoming MSDN WebCast: WCF-WF integration in depth

    This Wednesday (25th) I will be presenting a MSDN WebCast about deep WCF-WF integration techniques. The session is rated 400 which means that I don't intend to spend too much time on PowerPoint :). Instead, I am planning to cover in depth (meaning code...) some of the WCF-WF extensibility mechanisms that facilitate the integration of those two technologies in real world scenarios beyond just Workflow Services. In terms of features, I plan to talk about Workflow Services (of course), Durable Services, Security (lots of things here), Dependency Injection, Durable Messaging, Routing, Filtering and more depending on the timing.

  • Describing RESTful services using WSDL 2.0

    I've spent a few minutes last night reading this "how to" guideline from IBM, I have to admit that for a while I was affraid that somebody was going to come up with this idea but I really thought that we, as a community, were pass this stage of understanding the fundamental concepts of REST. This is REALLY REALLY bad. In my opinion, the first assumption that is wrong is to assume that RESTful services can be described using the same artifacts that we use to describe traditional Services. I agree that WSDL 2.0 is a HUGE improvement over WSDL 1.1 but it is still a RPC (in the broad sense of the term) type language with constructs like interfaces and operations which makes it less than ideal for modeling RESTful services which are based on a completely different domain with artifacts like resources, relationships, URI templates, etc.

  • Speaking at Teched US

    Teched US is here!!!, this year I am presenting two sessions in the SOA track and I have the honor of co-presenting with my good friend Joe Klug who used to be a Product Manager on the BizTalk Server team. On Tuesday 3rd I will be presenting a session about Real World Business Activity Monitoring (BAM) scenarios. I am building a cool set of demos that shows some of the non-documented aspects of BAM as well as how to combine BizTalk BAM applications with other technologies such as WCF, MOSS, BI technique on SQL Server Analysis Services, etc.  THIS IS NOT ANOTHER BAM SESSION!!!, my goal is to demonstrate some of the internal components of the BAM engine as well as it interaction with other technologies and we have a little surprise for the last demo :)

  • Web Services Security Summit

    Thanks to all the people who attended my presentation about claims based security patterns and the services scalability panel during the web Services Security Summit. I had a great time during both talks and particularly enjoyed the interesting debates during the panel with Paul Lipton (CA) and Andrew Brown (Amberpoint). The slide deck can be downloaded here.

  • Claims based security at the Web Services Security Summit

    This Wednesday I will be speaking at the Web Services Security Summit in Baltimore, MD. My session is about web Services security patterns and I will be specifically exploring how the principles of claim based security can be applied in trust, federation and other complex security scenarios. Also I plan to cover some of the most common patterns in claims based security. Finally, I will also be participating in a panel about Web Services scalability and manageability moderated by Computer Associates SOA guru Paul Lipton.

  • Consuming RESTful services from BizTalk Server using AtomPub

    In a previous post I explained the importance for traditional integration servers and ESBs to embrace REST as one of the architecture styles used to interact and expose resources. For the simplicity of this post (and to avoid starting a religious war J) I am going to use the term ESB as the generic name to refer to integration and mediation technologies that can interact with RESTful services. So yes, BizTalk Server is going to be an ESB for the next few paragraphs J

  • REST and ESBs

    The evolution of Representational State Transfer (REST) as an Architecture style is having a strong influence in the way developers think about to accessing and exposing data. This influence is especially notable in Service Oriented (SOA) technologies such as Service Repositories, SOA Governance Servers, Enterprise Service Buses (ESB) and Integration Servers.  Particularly, Integration servers and ESBs are a natural fit for RESTful services given its applicability of data exchange scenarios. In my opinion Integration servers and ESBs will embrace REST in two fundamental ways:

  • MVP award 2008

    A few days ago I've received the Microsoft BizTalk Server MVP award for fourth consecutive year. Once again I am grateful to the people involved in the evaluation process. For the last twelve months I've been involved in several projects with the Connected Systems community and product teams as well as a lot of speaking engagements. I am looking forward to continue that collaborating throughout this year.

  • BizTalk Server R2 at the Orlando Code Camp

    More exciting news from the Orlando Code Camp. My good friend (drum roll... the one, the only J) Danny del Rio is going to be presenting a session about Enterprise Integration (EAI) Patterns using BizTalk Server R2. Danny has put together a series of cool samples that explore some of the most important EAI design patterns that developers can leverage on BizTalk solutions. If you are a developer looking into enterprise integration scenarios with Microsoft technologies you must attend Danny’s session.

  • Speaking at New York CSD User Group

    Next Monday (17th) I will be speaking at the Microsoft's Connected Systems User Group in New York. This time, I am going to be talking about RESTful services best practices.  We are going to cover a broad set of topics ranging from REST fundamental concepts to RESTful services best practices and patterns. Specifically, we will explore how to implement Enterprise services capabilities such as Authentication, Authorization, Transactions, Versioning into RESTful services as well as how to overcome some of the RESTful services traditional challenges such as Low-REST support, service description, multi-format resources, etc. I've put together a bunch of demonstrations fundamentally based on WCF 3.5 but also touching other technologies such as ADO.NET Data Services and LINQ.  Finally, I would like to spend a few minutes talking about how REST is influencing Microsoft's Connected Systems Technology stack and speculate a little bit on what we can expect to see on the near future.

  • RDB2RDF Incubator Group

    I am super excited to see W3C taking this initiative. There are lots of data exchange scenarios that are can be benefited from the use of RDF and undoubtedly designing the mechanisms for representing relational data as RDF graphs is a big step forward. ADO.NET Data Services (Astoria) already did some prototyping of a similar idea.

  • WCF stress testing using BizTalk Server LoadGen

    Stress testing is one of key aspects that developers should take into consideration in order to maximize the performance of Web Service deployments. Windows Communication Foundation (WCF) provides a very extensible framework for monitoring and configuring WCF Services performance profiles. However one key pieces of successful load testing is precisely to execute the correct tests and for that using the correct tools is fundamental. Load tests are typically based on relatively complex algorithms that encompass aspects such as thread management, memory, message throughput, etc. For instance, a typical Web Service test might include sending a thousand messages per second to a Web Service using five threads until the consumed memory hits 1GB. Such algorithms require a detailed knowledge of the Web Service technology as well as the operating system being used.

  • Oracle SOA Suite 11g

    I've playing around with the new preview of Oracle SOA Suite. Among the new features, Business Events is the most attractive to me and it can be considered Oracle's first iteration towards a complete Complex Event Processing platform based on different technologies of the SOA Suite. Additionally, the implementation of Service Component Architecture (SCA) as part of the SOA Composite Editor is definitely interesting although I am still not convinced of its applicability on Enterprise scenarios.

  • RESTful services description languages

    Steve Vinoski posted an interesting reflection about the use of description languages on RESTful services. I have to agree 200% with Steve, WSDL and 1.1 and simply horrendous. Although WSDL 2.0 drastically improves in the modeling aspects of the services it does not solve one of the fundamental problems of its predecessors which tightly couple web Services with RPC and object oriented models. This gets even worse when you are working with ESBs or Integration Servers that are highly dependent on WSDL, sometimes you get the impression you are writing a big object oriented programL.  However, I still think that some sort of description language is really beneficial in a lot of scenarios such as service-endpoint discovery, policy description, service management and versioning. On those scenarios, the use of languages such as RDF, WADL, Atom or even tools such as Power Point or Excel can provide a better and more flexible solution than WSDL.

  • Cleaning up BAM Activity Instances

    One of the main challenges of Business Activity Monitoring(BAM) solutions is the control the lifecycle of the activities. This is especially critical in scenarios that involve activity continuations between different applications. Far too many times activities don't get completed affecting important BAM components such as aggregations, KPIs, etc. More importantly, keeping incomplete activities stored in the "ActivityName"_Active tables in the BAMPrimaryImport database can tremendously affect the performance of BizTalk BAM solutions. As part of the BizTalk server SDK we can find a SQL Server stored procedure that moves the incomplete activities from the Active tables to a new set of tables, the essence of this stored procedure is to add the incomplete state to the BAM Activity lifecycle creating a new table per BAM activity as well as its continuations and relationships. This stored procedure recycles individual activities and keeps the incomplete tables in the BAMPrimaryImport database. Although this approach works great, for a lot of scenarios makes sense to move the incomplete activities directly to the BAMArchive database keeping the BAMPrimaryImport database for storing live data. We can accomplish that with a few slight modifications to the same stored procedure highlighted in the following code. This stored procedure is intended to run in the BAMArchive database but it will poll the data from the BAMPrimaryImport database (notice the database prefix in some of the queries)