by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
Interested in learning Windows Server AppFabric? I hope so. It will be the backbone of the on-premise version of BizTalk in the coming years and based on news out of the PDC it looks like it will be moving to Azure (in some form) as well.
There are many resources out there for learning Windows Server AppFabric. However, not all of them are equal and you can spend a lot of time meandering through material without making a lot of progress.
Below is my suggested path for coming up to speed on it with the least amount of effort. First, you need to be familiar with some foundation items:
- There are new features in WCF 4.0. This whitepaper is a great way to become familiar with it: http://msdn.microsoft.com/en-us/library/ee354381.aspx
- One thing to keep in mind is that not all of the concepts are that relevant to Windows Server AppFabric. Focus on the new configuration features if you don’t have a lot of time.
- Next, you need to be familiar with Workflow Services. To understand Workflow Services though, you have to understand WF 4.0, which was a complete re-write. Check out the WF 4.0 white paper:
- Also note that both of the whitepapers mentioned above have sections on Workflow Services. Workflow Services existed in .NET 3.5 but have been improved in .NET 4.0.
- You must also understand IIS 7.0/7.5. If you are not familiar with it, head on over to http://learn.iss.net You’ll need to be familiar with things like Sites, ApplicationPools, Applications, AutoStart, Bindings, MSDeploy, hierarchical configuration with web.configs, etc.
Now you have the foundation you need to start learning about Windows Server AppFabric. This foundation is very important because if you don’t have it, you won’t be able to understand what Windows Server AppFabric is bringing to the table. It will also be more difficult to troubleshoot with out this foundation.
After you have the foundation items covered move on to learning about AppFabric itself:
- Next, there are some videos that you should watch that should help you with some things that aren’t covered in the documentation in enough detail:
- http://blogs.msdn.com/b/endpoint/archive/2010/04/22/endpoint-tv-windows-server-appfabric-configuring-monitoring-data.aspx (resilience and scalability)
- http://blogs.msdn.com/b/endpoint/archive/2010/04/30/endpoint-tv-ten-tips-for-troubleshooting-with-the-windows-server-appfabric-dashboard.aspx
- http://www.msteched.com/2010/NorthAmerica/ASI301
Whew! That’s a lot of material. You will not be an expert after this but you should have a solid understanding of Windows Server AppFabric and be able to use it.
If have you have other suggestions let me know.
by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
Hi folks, I’ve got a lot of requests for when/where these are on, so we’re off and
running next week in Brisbane with 2 seats left.
Just a quick blurb on the course –
The Breeze SharePoint 2010 Bootcamp has been designed to provide just that. Our customers
asked for an in-depth, technical, customized course that, if they were to spend $$s
on just one SharePoint 2010 course this year, would give them enough knowledge
of the technology to build real world solutions.
These bootcamps have been written for the ITPro & Developer
who need to upgrade their SharePoint skills, or are just starting out with SharePoint
2010.
Check
them out HERE
by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
Do you use WCF within your organization either for internal apis for exposing services and functionality to 3rd parties? We’re looking to connect with customers using our stuff in the real world so we can understand your use cases, the things you’ve liked about WCF and where you’d like to see us improve / go further. If interested, please contact us.
We look forward to hearing from you.
by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
Thanks to all the folks who attended to my WIF in the real world session at Microsoft Teched EMEA last week. I had a blast with the intelligent questions and the passionate debates. You can download the demos from http://cid-72ee495b3a560f12.office.live…(read more)
by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
In my previous WF4 post I described the principal of how to version workflow services using the WCF 4 RoutingService. In that post I described the general problem and solution without going into a lot of detail and showing any code. In this blog post I will add an actual implementation you can use for reference purposes.
The basic layout
The solution has three parts.
- The workflow service with 2 different versions of same workflow. The second version of the workflow has more activities in the tree so it can’t load workflow instances from version 1. Each workflow is hosted in a different XAMLX file and the second was created by copying the first and making the required changes to it.
- The client application that is calling the service. It knows about one existing workflow instance previously created and will create a new one. Next it will send several requests to both workflows without knowing that these are implemented using different version.
- The routing service which receives all requests from the client and forwards them to the different workflow services depending on the data in the request.
The Workflow Services
The workflow version 1
The workflow version 2
The client application
The basic setup is that the first request, creating the new workflow instance, returns the version identifier and this is a mandatory item in each subsequent request. The client code that does this looks like this:
using System;
using TheClient.ServiceReference1;
namespace TheClient
{
class Program
{
static void Main(string[] args)
{
var proxy = new ServiceClient();
var version = proxy.StartOrder(2);
for (int i = 0; i < 5; i++)
{
Console.WriteLine(proxy.AddItem(1, "1.0"));
Console.WriteLine(proxy.AddItem(2, version));
}
proxy.Stop(2, version);
Console.ReadLine();
}
}
}
Along with this config file:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://localhost:8080/Service"
binding="basicHttpBinding"
contract="ServiceReference1.IService"
name="BasicHttpBinding_IService" />
</client>
</system.serviceModel>
</configuration>
The address “http://localhost:8080/Service” used here is the address of the routing service.
The WCF RoutingService
This is where the magic really happens. It checks the versionId parameter from each request and sends the request to the corresponding service. And if no version is found, i.e. a new workflow is started, the request is routed to the last version.
The code is pretty simple and looks like this:
using System;
using System.ServiceModel;
using System.ServiceModel.Routing;
namespace TheRouter
{
class Program
{
static void Main(string[] args)
{
var host = new ServiceHost(
typeof(RoutingService),
new Uri("http://localhost:8080/Service"));
host.Open();
Console.WriteLine("The RoutingService is listening");
Console.ReadLine();
host.Close();
}
}
}
Most of the work is done in the configuration file:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://localhost:26606/Service_V1.xamlx"
binding="basicHttpBinding"
contract="*"
name="serviceV1"/>
<endpoint address="http://localhost:26606/Service_V2.xamlx"
binding="basicHttpBinding"
contract="*"
name="serviceV2"/>
</client>
<services>
<service name="System.ServiceModel.Routing.RoutingService">
<endpoint address=""
binding="basicHttpBinding"
contract="System.ServiceModel.Routing.IRequestReplyRouter"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<routing filterTableName="serviceRouting"
routeOnHeadersOnly="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<routing>
<filters>
<filter filterType="XPath"
name="serviceV1"
filterData="//ns:versionId='1.0'"/>
<filter filterType="XPath"
name="serviceV2"
filterData="//ns:versionId='2.0'"/>
<filter filterType ="MatchAll"
name="all"/>
</filters>
<namespaceTable>
<add prefix="ns"
namespace="http://tempuri.org/"/>
</namespaceTable>
<filterTables>
<filterTable name="serviceRouting">
<add endpointName="serviceV1"
filterName="serviceV1"
priority="2"/>
<add endpointName="serviceV2"
filterName="serviceV2"
priority="2"/>
<add endpointName="serviceV2"
filterName="all"
priority="1"/>
</filterTable>
</filterTables>
</routing>
</system.serviceModel>
</configuration>
Running this shows the following output showing that the different requests where send to the correct workflow
You can download the complete VS2010 solution with all code here.
Enjoy!
www.TheProblemSolver.nl
Wiki.WindowsWorkflowFoundation.eu
by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
This is a temporary post that was not deleted. Please delete this manually. (c0c0ba12-dd6e-43e8-aa2c-4a86efdf43c6 – 3bfe001a-32de-4114-a6b4-4005b770f6d7) Filed under: BizTalk
by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
Installing SMTP Server Feature on Windows Server 2008 R2 is an easy process requiring only few steps to complete. To install SMTP Server Features Open “Server Manager Console” Start %u2192 Administrative Tools %u2192 Server Manager Under “Features” select “Add Features” In “Select Features” screen, select “SMTP Server” option In “Add role services and features required […]
by community-syndication | Nov 16, 2010 | BizTalk Community Blogs via Syndication
This Friday (November 19th) I’m going to be doing another online LIDNUG session. The talk will be from 10:00am to 11:30am Pacific Time. I do these talks a few times a year and they tend to be pretty fun. Attendees can submit any questions they want to me, and listen to me answer them live via LiveMeeting. We usually end up having some really good discussions on a wide variety of development related topics. You can learn more and register to attend the event for free here.
Hope to get a chance to chat with some of you there!
Scott
P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: twitter.com/scottgu
by community-syndication | Nov 15, 2010 | BizTalk Community Blogs via Syndication
Recently I tried installing BizTalk Server 2010 in a pretty locked down environment – as in no accounts except a few domain accounts were given the “log on as a service” right. Thus as a first go I was left trying to use the default accounts on the machine.
These are my short summarized findings trying to run BizTalk using built-in accounts:
- SQL Server – Can run as Local System or Network Service. NOT as Local Service.
- SQL Server Agent – Can run as Local System or Network Service. NOT as Local Service.
- For more SQL Server account info see this link.
- The SSO service – can NOT run as Local Service or as Local System.
It can run as Network Service, although there are some special requirements – namely: the SSO Administrators group must be pre-created, the Network Service account added to it and the computer restarted.
- BizTalk Server Runtime – Can NOT run as a any form of local built-in account.
- At this point I guess I could have gone on to try the other sub-services as well, like BRE, but why bother Lesson learned. You cannot configure BizTalk Server using only the built-in accounts. Also this link from the BizTalk documentation clearly states that these accounts are not supported, though it is non-specific.
Quoted info on what these built-in accounts mean:
Local Service Account
The Local Service account is a built-in account that has the same level of access to resources and objects as members of the Users group. This limited access helps safeguard the system if individual services or processes are compromised. Services that run as the Local Service account access network resources as a null session without credentials. Be aware that the Local Service account is not supported for the SQL Server or SQL Server Agent services. The actual name of the account is "NT AUTHORITY\LOCAL SERVICE".
Network Service Account
The Network Service account is a built-in account that has more access to resources and objects than members of the Users group. Services that run as the Network Service account access network resources by using the credentials of the computer account. The actual name of the account is "NT AUTHORITY\NETWORK SERVICE".
Local System Account
Local System is a very high-privileged built-in account. It has extensive privileges on the local system and acts as the computer on the network. The actual name of the account is "NT AUTHORITY\SYSTEM".
|
by community-syndication | Nov 15, 2010 | BizTalk Community Blogs via Syndication
Op 2 december a.s. geef ik samen met Steef-Jan Wiggers een presentatie over BizTalk Server 2010. Wil je weten wat er allemaal nieuw is in BizTalk 2010 kom dan naar de BTUG meeting op 2 december. Naast onze presenatie zijn er nog twee andere presentaties: – BizTalk 2010 en Trading Partner Management (Richard Sargeant) – […]