Feed Icon  

Contact

  • Bryant Likes
  • Send mail to the author(s) E-mail
  • twitter
  • View Bryant Likes's profile on LinkedIn
  • del.icio.us
Get Microsoft Silverlight
by clicking "Install Microsoft Silverlight" you accept the
Silverlight license agreement

Hosting By

Hot Topics

Tags

Open Source Projects

Archives

Ads

Page 1 of 3 in the BizTalk category(RSS) Next Page

Creating BizTalk Application References with Nant

Posted in BizTalk at Wednesday, July 18, 2007 3:09 AM Pacific Daylight Time

I've been working on a few BizTalk projects lately and been making use of Scott Colestock's Deployment Framework for BizTalk 2006. The framework is great and handles about 95% of what I need to do with a BizTalk project's build script. One of the things that I wanted to do was to create a reference to another BizTalk application from the BizTalk application that I was deploying. The reason was that the first application had some shared components (pipelines, schemas, orchestrations) that I wanted to use in the second application. However, I couldn't find a way to do this using either BTSTask or Scott's framework.

I ended up extending Scott's framework by adding another Nant task to the project. You can download my reference adding task here. It took me about 10 minutes to create since I just used one of Scott's classes as a starting point and changed the functionality. In order to actually add the task to the build I added a property to the BizTalkDeploymentInclude.nant file:

<property name="referencedApps" value="" />

And then in the deployAppDefintion task I added the following highlighted code:

<target name="deployAppDefinition" description="Create BizTalk 2006 application definition"
           depends="undeployAppDefinition">
      <exec program="BTSTask.exe"  .... >
      <foreach item="String" in="${referencedApps}" delim="," property="refApp">
         <btsappreference referencedApp="${refApp}" application="${project::get-name()}"/>
      </foreach>
   </target>

The btsappreference is my new custom task. Now in the project's build file you would just override the value of the referencedApps property with the comma delimited list of apps to reference and the references will be created for you.

Technorati Tags: BizTalk, Nant

WCF: Unable to open IChannelListener

Posted in BizTalk | WCF at Wednesday, August 02, 2006 9:51 AM Pacific Daylight Time

On one of my current projects we are trying to use WCF with BizTalk 2006. In order to do this I was trying to implement the WCF adapter for BizTalk Server 2006 community project. The project comes with a nice sample application that demonstrates how everything works. However, when I tried to start the receive port I would get an error message saying:

The Messaging Engine failed to add a receive location "News Receiver" with URL "wcf://http://localhost:13000/eventsource" to the adapter "WCF". Reason: "The ChannelDispatcher at 'http://localhost:13000/eventsource' with contract(s) '"IndigoOneWayReceiver"' is unable to open its IChannelListener."

I tried to get this working a few different ways but nothing seemed to matter. The weird thing was that I could write a simple WCF console app that would listen on http://localhost:13000/eventsource and it would work. But whenever I would start the receive location I would get that error. I posted my question in the WCF Forums and also on the codeplex project but was unable to resolve it.

Then I ran into this same issue again with another sample app that I downloaded, but this time it was because IIS was running on the same port (and I was using Windows XP). However, in the process of figuring that out I came across this post by Martin Parry. While the post didn't resolve my issue (it is for Vista only), it did point me in the right direction. After some more googling I came across this post by dominick baier which explains the issue in Windows Server 2003 terms (and he even provides a tool to help you with the HttpCfg syntax).

So if you're working with WCF and you want to listen on a port and you're not running as an administrator, then you will need to configure the server with the HttpCfg tool. The error message about the IChannelListener isn't very helpful, but maybe that will change before we get to RTM. In the meantime, HttpCfg is your friend.

YAC - BizTalk

Posted in BizTalk | Certifications at Monday, July 24, 2006 3:27 AM Pacific Daylight Time

I found out today that I passed that BizTalk 2006 exam (70-235) that I took back in June. This gives me yet another certification to add to my list:

I'm guessing that a lot of the BAM/Rules questions were cut from the exam otherwise I wouldn't have passed. :)

MCTS: BizTalk 2006 Beta Exam Promo Code

Posted in BizTalk | Certifications at Thursday, May 11, 2006 3:16 AM Pacific Daylight Time

The new BizTalk 2006 exam for the MCTS: BizTalk 2006 cert is now available on the Vue website in its beta form (you just can't schedule it until May 24). I know there is a promo code out there somewhere that will let you take this exam for free but so far I haven't found it (I've tried combos of 235 and BTA, BTS, BIZ to no avail). Anyone know the promo code?

Update: Just received this from Jim Clark of MS Learning (through Marty):

Hi Kris, registration for this beta exam is available now, and the exam will run 5/24 – 6/2. The invitations for this exam have been slightly delayed until the Preparation Guide goes live on the web site (hopefully today, if not tomorrow).

Registration info:

To register for this exam or for information about testing centers in your area, call:

  • Prometric: (800) 755-EXAM (800-755-3926)
  • VUE: 800 TEST REGistration (800-837-8734)

Outside the U.S./Canada, please visit the following Web sites for registration information:

The promo code is TS235, and you can send this to anyone you wish.

ASP.Net Background Workflows

Posted in BizTalk | ASP.Net/Web Services | WF at Tuesday, April 25, 2006 2:41 AM Pacific Daylight Time

I really like what the on10 guys did with the on10 website. The login UI is the best I've seen and I really like the mashup they do on the profile page. I like it all so much that I've been working hard to duplicate a lot of it for use on some of my hobby sites.

I've emailed back and forth with the on10 team about how they did certain things and they have been very generous with their answers. One of the things I was curious about was how they handled the background tasks for the user profiles. Obviously, when you update your profile they don't make you wait while they lookup your location, blog, blog posts, and other details for that page. There is no point in snappy AJAX if you make the user wait for a process like that to happen. So how do they handle it?

Duncan suggested that a windows service would work pretty well or a console application that you schedule (which is something I've used in the past). However, for on10 they use a form of background processing tasks based on some of Rob Howard's work (see these slides and demo code for some examples of background threads in ASP.Net). This works well for them and the setup they have with the on10 web servers.

However, what if you didn't want to deal with spawning off threads and putting timers into your ASP.Net application? Is there some other way to do background processing with ASP.Net? What about Windows Workflow Foundation (WF)?

First off, why would you want to use a workflow for something like this? Well, I think workflows are nice because when you come back to the code six months later and want to do one more thing when the user signs up, it is very easy to look at the process and add something more. So the workflow is a nice addition for things like this.

So what are the options with a workflow? Well if you read this article by Dino you will get a good idea about how to use workflows in ASP.Net. However, there is one problem with the code in the article: it is being executed while the user waits for the response to come back. This is fine in a lot of cases, but what if you're looking at the case I'm talking about?

In this case you need to use the DefaultWorkflowSchedulerService instead of the ManualWorkflowSchedulerService. The Default service will allow WF to manage the execution of your workflow and it will spin up threads as needed to process it (and the user won't wait). However, ASP.Net doesn't like other processes spinning up a bunch of threads. I posted a question about using this method to the Advanced Workflow blog and as I was working on this post my question was answered. :)

So while I was able to get this working (and I fell in love with workflows in the process), it is not the recommended solution. In fact, the recommended solution is to put the workflow in a windows service and map to it with Indigo (Windows Communication Foundation).

I guess this means I'm going to learn Indigo, because I definately like workflows...

Update: From Moustafa Khalil Ahmed I found another article on ASP.Net workflows from Paul Andrews. Apparently the WF team has made some changes to the ManualWorkflowSchedulerService so that it can run as a background process (meaning it will work much like the default scheduler) in ASP.Net. This is great news! I have actually already coded my solution as a Windows Service that is called via Indigo. However, I'm definately going to change it back because the whole windows service thing really complicates my project when it comes to testing and deployment. Thanks guys, it worked out perfectly, I was forced to learn more about Indigo and then I get to go back to my simple solution!

Some PDC Linqs

Posted in Sql and Xml | BizTalk | General | ASP.Net/Web Services | Avanade at Friday, September 16, 2005 3:07 AM Pacific Daylight Time

I am at the PDC have a great time. I haven't posted anything simply because I've been way too busy and so I'm just soaking everything in. I'm planning on posting my thoughts soon (if you care).

In the meantime here are a few links that point to things I've been checking out:

In addition I've been looking at the BizTalk 2006 talks, some of the WCF and WWF talks, and some of the Team System talks. Hopefully I'll have time to post more on all this later.

Update: A few more linqs:

Master of Some

Posted in Sql and Xml | Reporting Services | SharePoint | BizTalk | General | Avanade | Test-Driven Dev at Thursday, September 01, 2005 4:05 AM Pacific Daylight Time

From Clemmens talking about technology overload:

Enter VS2005 and the summary of trying to achieve the same knowledge density is: “Frustrating”.

I feel his frustration. I remember going to PDC 2003 and realizing that it was getting very hard to keep up on all the new stuff coming out of Microsoft. Clemmens continues...

For “generalists” like me, these are hard and frustrating times if they’re trying to stay generalists. Deep and consequent specialization is a great opportunity for everyone and the gamble is of course to pick the right technology to dig into and become “the expert” in. If that technology or problem space becomes the hottest thing everyone must have – you win your bet. Otherwise you might be in trouble.

This statement not only applies to technology in general, but also to specific technologies: think SQL Server 2005. As Kimberly Tripp says, you must become a “Jack of all trades, master of some”. The hard part, as Clemmens mentions, is chosing the some.

For me it all comes down to what I'm working with. For instance, I just found out today that I will not be getting renewed as a Microsoft MVP for SQL Server. I expected this because I haven't had the time to contribute much to the SQL Server community lately. I tend to contribute based on what I'm currently working on. I haven't been a project that used SQL Server 2005 yet, so I haven't had time to really dig into it. If you read this blog you can probably figure out what kind of projects I have been on recently: a SharePoint (and RS) project last year and mostly BizTalk projects this year. I learn based on need.

I'm sure at some point in the near future (at least I keep telling myself this) I'll have time to dig into the new SQL Server 2005 and Visual Studio 2005 stuff (team system and all), but for now I'm pretty much focused on BizTalk 2004, test-driven development,  continuous integration, etc., since that is where I'm at.

I'll miss hanging out with the other SQL Server MVPs who are a great bunch of guys, but it has been fun being an MVP for the last five years.

Multi-Threaded and Multi-Domain Tests

Posted in BizTalk | Test-Driven Dev at Tuesday, July 19, 2005 7:58 AM Pacific Daylight Time

Just finished writing some test code for some shared utilities on my current project. The project is a BizTalk project so the utilities can be hit from multiple threads and from multiple boxes (with a shared database box). So I needed to test for these scenarios. The multiple threads was pretty easy, but I found this page to be very useful and thought I would pass it along.

I also attempted to simulate the multiple box scenario by creating multiple AppDomains (one domain per thread) and then hitting the utility from the separate domains. In figuring out how to do this I made use of this article by Eric Gunnerson. The tests all pass, which is good, but I'm not totally convinced that I'm really simulating things correctly.

Anyhow, both those links are good reads that I want to remember... 

XLANGMessage.GetPropertyValue

Posted in BizTalk at Wednesday, July 06, 2005 9:01 AM Pacific Daylight Time

As Christof notes here:

If you ever need to have access to the context of a message, outside of the BizTalk Server orchestration environment, you may do so by passing the message as a parameter of type Microsoft.XLANGs.BaseTypes.XLANGMessage to a method in an expression shape.

However, once you have an XLANGMessage object it isn't obvious (at least it wasn't to me) how to use it. I needed to grab some context properties but the GetPropertyValue method was looking for a type and not a property name. However, it is really very simple, all you need to do is get the type of the property you're looking for.

So, for instance, if you were looking for the MessageID (or more precisely, BTS.MessageID), then you would use:

msg.GetPropertyValue(typeof(BTS.MessageID));

In order to use the above you will need to add a reference to Microsoft.BizTalk.GlobalPropertySchemas.dll in your project. If you want to get your own custom context types then you would use typeof on the type you define in your property schema (and you would need to add a reference to your property schema project or DLL).

BizTalk Messaging Internals Whitepaper

Posted in BizTalk at Wednesday, June 08, 2005 7:43 AM Pacific Daylight Time

via David Hurtado:

There is a new whitepaper on MSDN about messaging. It's called BizTalk Server 2004: A Messaging Engine Overview,  but it's quite a deep dive into messaging. From my point of view, the most interesting stuff is how it explains the Pub/Sub internals in terms of MessageBox flow and stored procs involved in publishing and subscribing.

I'm about halfway through this paper and it is an excellent read. It is well written in that it flows and is easy to understand. If you're working with BizTalk then I would suggest taking a look. For me it filled in a lot of missing pieces in my understanding of BizTalk.

Page 1 of 3 in the BizTalk category(RSS) Next Page