Countdown to Oslo: Introducing "M" and "Quadrant"

Robert Wahbe and I were out on the road this week meeting with press and members of the dev community to talk more about Oslo. For those of you who have been following Oslo, the timing won’t come as a surprise: almost exactly one year ago, we announced it at the SOA BP Conference. Our goal? To make it easier to build apps using models and to break down silos of application development.  That means that whether you write the user specification, write the code, or have to manage the application, the model for what the app should do is shared.  Any of us that have written or managed apps know that getting everyone to think about requirements in the same way can be a huge challenge. Ultimately, for developers and others in the application lifecycle, this will mean more productivity, transparency and flexibility. For partners, it will mean more opportunities to design domain-specific apps (e.g., through the creation of DSLs, etc.).


 


One of the things we promised when we made that first announcement was to deliver a CTP of Oslo at the PDC – a commitment I’m very proud to say we’ll keep.  In less than three weeks, the those attending the PDC will get a first-hand look at the three technologies that make up Oslo:


 



  • A language – codenamed “M” – that helps people create and use textual domain-specific languages (DSLs) and data models

  • A relational repository – that makes models available to both tools and platform components

  • A tool – codenamed “Quadrant” – that helps people define and interact with models in a rich and visual manner

Now, in case those two codenames sound new; they are.  While we’ve talked about both the tool and the language before, today is the first time we’ve publicly referred to them by their codenames: “Quadrant” and “M” which you’ll see reflected in the CTP packaging.


 


The upcoming CTP was a pretty hot topic during a conversation Robert and I had with a group of developers during dinner a few nights ago. Readers probably know some of these folks already: Shashi Raina, Don Demsak, Marc Adler, Nick Landry, Ambrose Little and Bill Zack. Across the board, these guys seem eager to get their hands on the bits to see for themselves what Oslo is all about (obviously pretty encouraging for me and the rest of the team). The language(“M”) in particular seems to be of interest, which is consistent with what we’ve been hearing over the past year. Here’s why when we talk to developers about “Modeling” many have the same immediate reaction.  They say something like “modeling isn’t for me, I’ll leave the pretty pictures to the business folks and architects.  I write code and live in a text editor.”  


 


Which is where “M” comes in.  We respond by saying that modeling and writing code are not mutually exclusive, in fact, they are intertwined. “M” gives developers the ability to model applications in text rather than graphics.  Nothing against graphics, we have a great tool for that too – Quadrant.  “M,” will add the text component that has been missing in the industry so far.


 


The dinner conversation did get very engaged in a few spots, especially when we started discussing the idea of bringing business analysts and other users closer to the application via the more visual part of the equation, a.k.a. Quadrant. For instance, most people only think about having business analysts interacting in application design. Oslo will allow folks to go well beyond that – if a developer delivers a set of DSLs, an end user could potentially compose the application they need in real time. Most at the table saw the value (and business opportunities) in this, but a couple expressed some distaste at the idea of analysts and others directly interacting with an app. Makes me wonder if everyone else is as passionate about this? 


 


XAML was another big topic of discussion, with some lively debate over its full potential and role in the Microsoft platform as well as the ability to target other non-MSFT runtimes.


 


I’ll be talking about all of these areas in more detail over the next couple of weeks. In the meantime, only about 17 days to go until that Oslo CTP is available

October 10th Links: ASP.NET, ASP.NET AJAX, jQuery, IIS

Here is the latest in my link-listing series.  Also check out my ASP.NET Tips, Tricks and Tutorials page and Silverlight Tutorials page for links to popular articles I’ve done myself in the past.

ASP.NET

  • Best Practices for Creating ASP.NET websites with IIS 6.0: Omar Al Zabir, author of the excellent Building a Web 2.0 Portal with ASP.NET 3.5 book, has a great article that details best practices to follow when setting up a site on IIS 6.0.  Definitely worth reading and book-marking.

  • ASP.NET Dynamic Data Videos using VB: Bill Burrows has put together an awesome series of videos that show off how to use the new ASP.NET Dynamic Data support provided in .NET 3.5 SP1.  You can find more links to ASP.NET Dynamic Data tutorials in my last link post here.

  • Routing with WebForms: Wally McClure has a nice podcast that describes how to use the new ASP.NET routing infrastructure in .NET 3.5 SP1 with Web Forms based pages.  A lot of people mistakenly think this feature only works with ASP.NET MVC applications – when in reality it also works with web forms pages (in fact all ASP.NET Dynamic Data sites use it).

  • ASP.NET Continuous Integration and Deployment using CruiseControl.NET, Subversion, MSBuild and Robocopy: Omar Al Zabir has another great article – this time on implementing continuous integration with ASP.NET.

ASP.NET AJAX and jQuery

  • An Introduction to jQuery (Part 1): Rick Strahl has posted an excellent article that introduces jQuery, and walks-through how to take advantage of it within ASP.NET pages.

  • New AJAX Support for Data-Driven Web Apps: Bertrand Le Roy has written a great MSDN article that describes some of the new ASP.NET AJAX features available in preview form today.  Also check out his blog posts here and here to learn more about how the new client-side data templating feature support.

  • Using jQuery to enhance ASP.NET AJAX progress indication: Dave Ward has a cool article that describes how to integrate jQuery functionality with the ASP.NET AJAX UpdatePanel control to enable better progress indication status.

  • ASP.NET AJAX: Enabling Bookmarking and the Browser’s Back Button: Scott Mitchell continues his excellent series on ASP.NET AJAX and discusses how to add history points to an AJAX-enabled web page so that visitors can bookmark it, as well as to enable back/forward browser navigation.  This is a new feature added to ASP.NET in .NET 3.5 SP1.

Microsoft Web Platform

Hope this helps,

Scott

Enabling .NET 3.5 in SharePoint 2007 Sites, the Lazy Way

You probably know that if you want to make use of the fancy new .NET stuff, like ASP.NET AJAX in SharePoint 2007 sites, you have to make a bunch of modifications in the web.config of that site. You can do that the manual way, for example Mike Ammerlaan has described how you can enable ASP.NET AJAX 1.0 in SharePoint sites already a long time ago. Recently .NET 3.5 (including a new version of ASP.NET AJAX) became available, including the steps that you needed to go through to be able to enable it in SharePoint sites. You can check out Tobias Zimmergren’s post for example to get an idea.

Of course the manual approaches work, but it’s quite a lot of XML that you have to copy-and-past into the SharePoint web.config files. If you prefer an automated way to apply those changes, you can check out the SharePoint 2007 Features project on CodePlex. Over there you can find some feature that will apply the changes for you. But before you get too excited; make sure you test those features in your farms, because I’ve had some nasty experiences deploying them in SharePoint farms with multiple front-end web servers.

Today I’d like to introduce you the lazy way to apply the necessary changes for enabling .NET 3.5 (including the corresponding version of ASP.NET AJAX) in SharePoint 2007 sites. Actually it’s my lazy U2U colleague Lieven Iliano who thought me the trick, and I’ve been using it ever since in my classes and demos. The trick is to slightly abuse Visual Studio 2008 (just a little bit) here are the steps:

  • Start Visual Studio 2008.
  • Create a new dummy ASP.NET Web Application Project, and make sure you target the .NET Framework 2.0 (upper right dropdown of the New Project dialog). The name of this project is not important; you won’t need it anymore when we’re done.
  • Copy the web.config of your SharePoint 2007 site, into the dummy Web Application project in Visual Studio.
  • Open the Project Properties in Visual Studio (right click on the Project node in the Solution Explorer, and choose Properties; or in the Project menu, select WebApplicationX Properties).
  • Select .NET Framework 3.5 in the Target Framework dropdown (select Yes in the confirmation dialog).
  • Copy the web.config from the Web Application Project back to SharePoint.

That’s it; you now have copied the upgraded web.config to the SharePoint site! At this moment you’re ready to make use of all the fancy new .NET 3.5 stuff in your SharePoint 2007 site.

Adding Breadcrumb Navigation to Application Pages in SharePoint Central Administration

Normal
0

false
false
false

MicrosoftInternetExplorer4


/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:”Times New Roman”;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}

It is great to find out people like the articles you write on your blog, and it’s even more fun when people actually contribute to your blog as well. That’s how I received an update to a blog post I wrote some time ago, about adding breadcrumb navigation to Application Pages. Bart Snyckers explained that the mechanism described in my post worked a little bit different if you want to add Application Pages to the Central Administration site. Bart doesn’t have a development blog yet (but he told me he’s working on one, and he’s running a photo blog already), so I’m posting Bart’s findings below. Thanks Bart!

 

Recently we also wanted to add breadcrumb navigation
to some Application Pages for SharePoint, which we were using in our Central
Administration, like the out-of-the-box Application Pages have. But it didn’t
worked out the way I wanted to. Google showed me the way to Jan Tielens’ blogpost
about Adding breadcrumb navigation to SharePoint Application Pages, The easy
way
.

 

But after some research I found out that Application
Pages that you want to show in the SharePoint Central Administration Site should be placed in different folders than
normal Application Pages (in collaboration or publishing sites for example).
When you are building up your 12-hive structure you should use
12\TEMPLATE\ADMIN for the Application Pages (*.aspx) and sitemap
(admin.sitemap.*.xml) files, instead of the 12\TEMPLATE\LAYOUTS. If you mix up
the .aspx and .sitemap files between the ADMIN and LAYOUTS folder, the
breadcrumbs just don’t appear at all and if you place everything in the LAYOUTS
folder, the breadcrumbs don’t work like you expect them to do. Further you have
to reference the correct MasterPageFile from the ADMIN folder as well.

 

To deploy your feature and let SharePoint add the
sitemap entries, you can use the methods described in Jan’s article.Below you can find a small example to provision an
Application Page in the Operations tab in your Central Administration:

 

Application Page (.aspx), deployed to 12\TEMPLATE\ADMIN

<%@ Assembly
Name=”Microsoft.SharePoint,
Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”
%>

<%@ Assembly
Name=”Example.SharePoint.CentralAdminApplicationPage,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=2de06805bd3065de”
%>

 

<%@ Page
Language=”VB”
MasterPageFile=”~/_admin/admin.master”

         Inherits=”Microsoft.SharePoint.WebControls.LayoutsPageBase”
%>

 

<asp:Content ID=”content1″
ContentPlaceHolderID=”PlaceHolderMain”
runat=”server”>

      Central
Administration Application Page

</asp:Content>

 

<asp:Content ID=”content2″
ContentPlaceHolderID=”PlaceHolderPageTitle”
runat=”server”>

    Central Administration Application Page

</asp:Content>

 

<asp:Content ID=”content3″
ContentPlaceHolderID=”PlaceHolderPageTitleInTitleArea”
runat=”server”>

   Central Administration Application Page

</asp:Content>

 

Sitemap
(admin.sitemap.*.xml)
, deployed to
12\TEMPLATE\ADMIN

<?xml version=1.0 encoding=utf-8 ?>

<siteMap>

      <siteMapNode title=Central Administration Application Page url=/_admin/CentralAdminApplicationPage.aspx parentUrl=/_admin/operations.aspx/>

</siteMap>

 

Feature (feature.xml)

<Feature xmlns=http://schemas.microsoft.com/sharepoint/

  Id={25397E25-C142-423a-97D2-AEA7BA6C0879}

  Title=Central Administration Application Page

  Description=Enables the Central
Administration Application Page
.

  Scope=Site

  ReceiverAssembly=Central Administration Application Page, …

  ReceiverClass=Example.SharePoint.CentralAdminApplicationPage.FeatureHandler>

  <ElementManifests>

    <ElementManifest Location=customactions.xml/>

  </ElementManifests>

</Feature>

 

Customactions (Customactions.xml)

<Elements xmlns=http://schemas.microsoft.com/sharepoint/>

      <CustomActionGroup

        Id={79C8B7A7-E258-4835-B12D-D592F9CE100E}

        Title=Central
Administration Application Page

        Location=Microsoft.SharePoint.Administration.Operations

        Sequence=100 />

      <CustomAction

            Id={828008F8-20DB-4224-8D2C-A4826C66E874}

            Title=Example Application Page

     

            GroupId={79C8B7A7-E258-4835-B12D-D592F9CE100E}

            Location=Microsoft.SharePoint.Administration.Operations

     

            RequireSiteAdministrator=TRUE

            Sequence=10>

            <UrlAction Url=/_admin/CentralAdminApplicationPage.aspx/>

      </CustomAction>

</Elements>

Meet Me in Los Angeles, PDC2008

According to the countdown timer at the PDC2008 site, the opening keynote is only 17 days away (at the time of writing). The previous PDC in 2005 was all about Office 2007 (including SharePoint) and Vista, but this time there didn’t seem to be a lot of Office/SharePoint content scheduled. Not that this is a bad thing; after 3 years of SharePoint teaching, coding and evangelizing, getting to know new technologies can be great. 🙂 I’m really looking forward to learn more about Live, Live Mesh, Cloud Services etc.

But if you check the PDC sessions now,  you can find five SharePoint related sessions. For a nice summary check Paul’s blog post here. Hey there will even be a SharePoint booth! So I hope to meet you in LA!

BizTalk: Debugging: Why is it so difficult?

Sometimes in the BizTalk forums such questions appear.
“…I have been using event log to test variables. I was hoping there was a way to watch it process in VS like you can debug a forms app.”


There is a difference in the usual app and in the “BizTalk app“.
When you start usual app it is exactly this app and you could debug it. When you “start” the BizTalk app that could means *many* *instances* of this BizTalk app could works simultaneously.
With BizTalk you have an intermediate layer, the host. This host (actually it is a host instance but it doesn’t matter for this case) manages the app *instances*. It could start many app instances simultaneously and then dehydrate, rehydrate, stop, abort them without our intervention.
Ideally we need to attach a debugger to exactly one app instance (which one?) or create a debugger working with many app instances simultaneously.
It is one of the source of the complexity of debugging the BizTalk apps.
BTW What is a BizTalk application at all?


Please, let me know, what do you think.