by community-syndication | Apr 4, 2011 | BizTalk Community Blogs via Syndication
We all love benchmarks!With the recent release of new versions of some of major browsers, and as a small diversion over the weekend, I ran five well-known browsers against five well-known JavaScript micro-benchmarking suites using my laptop.The results are reproduced below.I have ranked the results for each benchmark suite from best to worst.
Celtic Kane – old version (current version was unavailable)
(Smaller is better)
Opera 11 |
|
77 ms |
Safari 5 |
|
93 ms |
Chrome 10 |
|
119 ms |
IE 9 |
|
152 ms |
FF 4 |
|
154 ms |
Kraken 1.0 (Mozilla)
(Smaller is better)
FF 4 |
|
7,555.6 ms |
Chrome 10 |
|
8,439.8 ms |
Opera 11 |
|
12,918.8 ms |
IE 9 |
|
16,551.9 ms |
Safari 5 |
|
19,099.8 ms |
Dromaeo (Mozilla) (all JavaScript tests)
(Bigger is better)
Chrome 10 |
|
457.53 runs/s |
IE 9 |
|
403.96 runs/s |
FF 4 |
|
386.74 runs/s |
Opera 11 |
|
369.49 runs/s |
Safari 5 |
|
257.42 runs/s |
V8 v6 (Google)
(Bigger is better)
Chrome 10 |
|
7,737 |
FF 4 |
|
3,111 |
Opera 11 |
|
3,050 |
Safari 5 |
|
2,319 |
IE 9 |
|
2,119 |
SunSpider 0.9.1 (WebKit)
(Smaller is better)
IE 9 |
|
249.8 ms |
Opera 11 |
|
289.9 ms |
FF 4 |
|
295.2 ms |
Chrome 10 |
|
309.0 ms |
Safari 5 |
|
353.9 ms |
So, what does this prove?Absolutely nothing!It’s impossible to pick an overall winner from these results, or even to determine any particular trend. I’ll provide two observations, however.First, comparative micro-benchmarking remains as problematic as ever.Pick your preferred test to ‘prove’ whatever you wish. Second, competition between browsers remains fierce. As a result, JavaScript performance has improved massively across the board in the last couple of years. That’s great news. It means we are all winners!
by community-syndication | Apr 4, 2011 | BizTalk Community Blogs via Syndication
I have a trading partner who sends in invalid characters within a REF03 in an X12 850. In the following example, my element separator is *, and the customer is sending in a * within the REF03. I’m wanting to remove that invalid character before it hits the EDI pipeline component.
Example X12 850:
DTM*010*20110329~
PO1*10547090*1*EA*67.5**BP*PG7058SP—-~
PID*F****LDY FAITH INDIVIDUAL IRON~
REF*TC**HEREISMYINVALIDCHARACTER*~
I first captured all the TC Qualified Ref Segments into named groups (pre, text, and post) with the following Regular Expression.
@”(?<pre>REF\*TC\*\*)(?<text>.*?)(?<post>~)”
Using a method I am able to capture all the REF*TC segments, evaluate each one, and within each “text” group replace the errant * with “ “. Note the use of the MatchEvaluator delegate within the Replace method.
private string myGoodString(string strBadString, string strSegmentTerminator)
{
string strRegex = @”(?<pre>REF\*TC\*\*)(?<text>.*?)(?<post>”+strSegmentTerminator+”)”;
RegexOptions myRegexOptions = RegexOptions.None;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string result = myRegex.Replace(strBadString, delegate(Match m)
{
return String.Join(String.Empty, new String[]{
m.Groups[“pre”].Value,
m.Groups[“text”].Value.Replace(“*”,” “),
m.Groups[“post”].Value
});
});
return result;
}
Here is the resulting X12 850 snippet.
DTM*010*20110329~
PO1*10547090*1*EA*67.5**BP*PG7058SP—-~
PID*F****LDY FAITH INDIVIDUAL IRON~
REF*TC**HEREISMYINVALIDCHARACTER~
Blog Post by: Eric Stott
by community-syndication | Apr 4, 2011 | BizTalk Community Blogs via Syndication
There has been quite a furore in the last couple of weeks about a blog article published by David Barrett entitled “CEO Friday: Why we don’t hire .NET programmers”.You can find it at http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/.Along with about half the global development community, I tried to post a response, but comments were already closed.I had all but forgotten the article until, a few minutes ago, up popped a daily .NET newsletter with a headline linking to the article.
I can’t help thinking this is just one step removed from a long line of ‘.NET developers are dumb’ articles.I’ve read a few of these over the years.The last one I remember (I can’t recall the URL, unfortunately) was classic. The guy writing the article explained that he had recently interviewed half a dozen developers for a job.All but one were Java developers, and he was generally impressed by their understanding of design patterns and the like – even a candidate fresh from college.One, however, was a .NET developer (I wonder if the interviewee had misread the job description) and he was apparently very ignorant.On the basis of this deeply representative sample, the author concluded that the whole .NET development community (several million people) are equally useless and ignorant!I kid you not!
Maybe I’m being unfair to David Barrett.However, while posting a comment to his blog site would have made me feel better, it wouldn’t have achieved anything.Reading through the comments, I’m struck how many posts quickly degenerate into mud-slinging.David is accused of several things which are not worth repeating.In turn, others rise to ‘defend’ his position by throwing vitriol and invective at the whole tribe of .NET developers.
For my part, and simply as a self-indulgent exercise, I will note that I do not recognise David’s characterisation of .NET development.It seems to me that he fails to explain properly what aspects of .NET tools and technologies he is talking about. In a subsequent update, he explained his original claim that .NET is a ‘language’ was a poor ‘word choice’.Fair enough.However, it seems to me that he describes .NET all the way through his post as if it is some kind of 4GL.It patently isn’t!More to the point, neither are the mainstream .NET languages.Maybe he has in mind Microsoft’s old love of 1990’s-style form development, as originally used in .NET not only for desktop app development but also ‘classic’ ASP.NET.If this is the case, he is seriously out of date.Professional ASP.NET development has long-since moved foursquare into the MVC / RESTful world.Desktop development (now a minority sport in this web-enabled, mobile age) has largely moved on to XAML-based development.Maybe that’s the issue.XAML can be considered to be just one of many forms of model-driven development Maybe he is railing against MDD.If so, I can’t imagine why he has singled out .NET.If anything, .NET has been playing a degree of catch-up with the Java world on that score. So, I remain confused by his arguments (no doubt some will claim I’m just too dumb), but confident from my own experience that he is deeply mischaracterising the .NET platform and the community of .NET developers.
Well, I’ve got that off my chest.A wider issue, though, arises from reading some of those comments.Why, after all these years, are we developers are so ready to sling mud at others.We fall hook, line and sinker for simplistic, ill-informed characterisations of whole swathes of our industry in an attempt to convince ourselves that we are the clever chosen elect and those others over there are just plain stupid and damned to all eternity.It’s so childish.It’s so false.In summary, my take on David’s article, which I consider a tad more balanced, is this.Don’t hire bad .NET developers.Don’t hire bad Java developers.Don’t hire bad Ruby or C++ or Python, or Perl developers.There’s no need.There are plenty of good developers out there. This is a great industry.
by Rene Brauwers | Apr 4, 2011 | BizTalk Community Blogs via Syndication
In our previous part we’ve installed our Domain Controller and not to say the least one of the most vital servers within our to set up Server Environment.
This post will mainly focus on setting up the Active Directory Accounts which will be used throughout the other upcoming parts.
So let’s get started.
Planning security groups, user accounts and service accounts
Like every installation and configuration it is essential to have an overview of the things you would like to accomplish before implementing them, well the same rules apply here; therefore below an overview of the required Security groups, user accounts and service accounts.
Security Groups
-
- BizTalk Application Users
- BizTalk Isolated Host Users
- BizTalk Server Administrators
- BizTalk Server B2B Operators
- BizTalk Server Operators
- BizTalk Bam Portal Users
- SSO Administrators
- SSO Affiliate Administrators
- IIS_IUSRS
Service Accounts
- srvc-bts-trusted
[Service account used to run BizTalk Isolated host instance (HTTP/SOAP)]
- srvc-bts-untrusted
[Service account used to run BizTalk In-Process host instance which access In-Process BizTalk host instance (BTNTSVC)]
- srvc-bts-sso
[Service account used to run Enterprise Single Sign-On Service which accesses the SSO database]
- srvc-bts-rule-engine
[Service account used to run Rule Engine Update Service which receives notifications to deployment/undeployment policies from the Rule engine database]
- srvc-bts-bam-ns
[Service account used to run BAM Notification Services which accesses the BAM databases]
- srvc-bts-bam-ap
[Application pool account for BAMAppPool which hosts BAM Portal Web site]
- srvc-sql-agent
- srvc-sql-engine
- srvc-sql-analysis
- srvc-sql-reporting
- srvc-sql-integration
User Accounts
- usr-bts-install
- usr-bts-bam
- usr-bts-admin
- usr-bts-operator
- usr-bts-b2b-operator
- usr-bts-sso-admin
- usr-bts-sso-affiliate
Accounts – Security Group mapping
BizTalk Application Users
Contains service accounts for the BizTalk In-Process host instance in the host that the BizTalk Host Group is designated for.
Accounts
BizTalk Isolated Host Users
Contains service accounts for the BizTalk Isolated host instance in the host that the Isolated BizTalk Host Group is designated for.
Accounts
BizTalk Server Administrators
Contains users/groups that need to be able to configure and administer BizTalk Server.
Accounts
- Domain Admin
- usr-bts-admin
BizTalk Server B2B Operators
Contains user/groups that will perform all party management operations
Accounts
- Domain Admin
- usr-bts-b2b-operator
BizTalk Server Operators
Contains user/groups that will monitor solutions.
Accounts
- Domain Admin
- usr-bts-operator
BizTalk Bam Portal Users
Everyone group is used for this role by default.
Accounts
SSO Administrators
Contains service accounts for Enterprise Single Sign-On service.
Contains users/groups that need to be able to configure and administer BizTalk Server and SSO service.
Contains accounts used to run BizTalk Configuration Manager when configuring SSO master secret server.
Accounts
- Domain Admin
- srvc-bts-sso
- usr-bts-sso-admin
SSO Affiliate Administrators
Contains account used for BizTalk Server Administrators
Accounts
- Domain Admin
- usr-bts-sso-affiliate
IIS_IUSRS
This built-in group has access to all the necessary file and system resources so that an account, when added to this group, can seamlessly act as an application pool identity.
Accounts
- srvc-bts-trusted
- srvc-bts-bam
- srvc-bts-bam-ap
Adding security groups, user accounts and service accounts
Now that we have a clear overview of all the required security groups, user and service accounts it´s time to actually add them to our Active Directory.
Fire up your Domain Controller Server, and in your Server Manager open up “Roles” –> “Active Directory Users and Computers” and click on your domain
Setting up BizTalk Organizational Unit
Add a new Organizational Unit and name called “BizTalk”, do this by “right clicking” on your domain –> “New” –> “Organizational Unit”
Enter the name of the new ‘Organizational Unit Object”, ensure to check “Protect container from accidental deletion” and press “OK”
Select the just created “Organizational Unit BizTalk” and a new group, do this by “right clicking” your “BizTalk Organizational Unit” –> “New” –> Group
Enter the name of the group, ensure the “Group Scope” is “Global” and the “Group Type” is “Security”. Once done press “OK”
Now add the following Security Groups, by repeating the 2 previous mentioned steps:
- BizTalk Isolated Host Users
- BizTalk Server Administrators
- BizTalk Server B2B Operators
- BizTalk Server Operators
- BizTalk Bam Portal Users
- SSO Administrators
- SSO Affiliate Administrators
You should end up with the following groups within your “BizTalk Organizational Unit”
Now select the just created “Organizational Unit BizTalk” and two new “Organizational Units” named:
- Service Accounts
- User Accounts
Do this by “right clicking” your “BizTalk Organizational Unit” –> “New” –> “Group” and filling out the required details (ensure to check “Protect container from accidental deletion”). You should end up with the following 2 new “Organization Units” within the “BizTalk” Organizational Unit”
Now select the just created “Organizational Unit Service Accounts” and add the following “Users”
- srvc-bts-trusted
- srvc-bts-untrusted
- srvc-bts-sso
- srvc-bts-rule-engine
- srvc-bts-bam
- srvc-bts-bam-ns
- srvc-bts-bam-ap
[Repeat the following steps for each new “User” mentioned above]
Do this by “right clicking” your “Service Accounts Organizational Unit” –> “New” –> “User”
Fill out the “First Name”, “Full Name”, “User logon name” and press “next”
Assign a “Password”, ensure to uncheck “User must change password at next logon” and ensure to check “User cannot change password” and check “Password never expires”. Once done select “Next” and “Finish”
Eventually you should end up with the following users within your “Service Accounts Organizational Unit”
Now select the “Organizational Unit User Accounts” and add the following “Users”
- usr-bts-install
- usr-bts-admin
- usr-bts-operator
- usr-bts-b2b-operator
- usr-bts-sso-admin
- usr-bts-sso-affiliate
[Repeat the following steps for each new “User” mentioned above]
Do this by “right clicking” your “User Accounts Organizational Unit” –> “New” –> “User”
Fill out the “First Name”, “Full Name”, “User logon name” and press “next”
Assign a “Password”, ensure to uncheck “User must change password at next logon” and ensure to check “User cannot change password” and check “Password never expires”. Once done select “Next” and “Finish”
Eventually you should end up with the following users within your “User Accounts Organizational Unit”
Setting up Sql Server Organizational Unit
Now it’s time to set up the SQL Server Organizational Unit; this will be done exactly the same way as mentioned in “Setting up BizTalk Server Organizational Unit”. Below I will summarize what to create.
Add new organizational unit “Sql Server”
Within the “SQL Server” organizational unit add new organizational unit named “Service Accounts”
Add the following user accounts to the Organizational unit “Service Accounts”
- srvc-sql-agent
- srvc-sql-engine
- srvc-sql-analysis
- srvc-sql-reporting
- srvc-sql-integration
Adding users to designated security groups
Well we are almost there. Next thing on our list is to assign the created users to the correct Security group. For this you will need to open your previously created “BizTalk Organizational Unit”.
Further instructions on how to achieve this, are listed below; sorted by Security Group
Group: BizTalk Application Users
Right click on the “Biztalk Application Users group” and select properties, select the “members tab” and then press “Add…”
Now select “Advanced…”
Ensure that your location is set to your domain, and in the “Common Queries” section add the value “srvc-bts” in the “Name starts with” textbox and select “Find Now”
Select the following account “srvc-bts-untrusted” and press “OK”
Select “OK”
Select “OK”
Group: BizTalk Isolated Host Users
Repeat the steps as mentioned in “Group: BizTalk Application Users”, but this time you will select the “srvc-bts-trusted” account.
Group: BizTalk Server Administrators
Repeat the steps as mentioned in “Group: BizTalk Application Users”, but this time you will select the following accounts (note; leave the common Queries Filter blank, this way you will see all accounts)
- “Domain Admins” group
- usr-bts-admin “user account”
Group: BizTalk Server B2B Operators
Repeat the steps as mentioned in “Group: BizTalk Application Users”, but this time you will select the following accounts (note; leave the common Queries Filter blank, this way you will see all accounts)
- “Domain Admins” group
- usr-bts-b2b-operator “user account”
Group: BizTalk Server Operators
Repeat the steps as mentioned in “Group: BizTalk Application Users”, but this time you will select the following accounts (note; leave the common Queries Filter blank, this way you will see all accounts)
- “Domain Admins” group
- usr-bts-operator “user account”
Group: BizTalk Bam Portal Users
Repeat the steps as mentioned in “Group: BizTalk Application Users”, but this time you will select the following accounts (note; leave the common Queries Filter blank, this way you will see all accounts)
Group: SSO Administrators
Repeat the steps as mentioned in “Group: BizTalk Application Users”, but this time you will select the following accounts (note; leave the common Queries Filter blank, this way you will see all accounts)
- “Domain Admins” group
- srvc-bts-sso “service account”
- usr-bts-sso-admin “user account”
Group: SSO Affiliate Administrators
Repeat the steps as mentioned in “Group: BizTalk Application Users”, but this time you will select the following accounts (note; leave the common Queries Filter blank, this way you will see all accounts)
- “Domain Admins” group
- usr-bts-sso-affiliate “user account”
Group: IIS_IUSRS
Open op the “Builtin Organizational Unit” and double click on the “IIS_IUSRS” group
Select the “Members” tab and press “Add…”
Add following accounts (note; leave the common Queries Filter blank, this way you will see all accounts)
- “Domain Admins” group
- “BizTalk Isolated Host Users” group
- srvc-bts-bam “service account”
- srvc-bts-bam-ap “service account”
Closing Note
This sums up part 3 SQL & BizTalk Active Directory Accounts, in part 4 we will make the necessary preparations for the SQL en BizTalk failover Cluster set ups, which will include:
- Installing the required Roles and Features
- Setting up the File Server and assigning storage to the SQL & BizTalk Clusters.
Until next time
Cheers
René