New Paper on Integrating SQL Server Integration Services with StreamInsight

New Paper on Integrating SQL Server Integration Services with StreamInsight

A paper was released today which outlines some scenarios for combining SSIS with StreamInsight.  In essence, they are trying to show the value of using a streaming, time-oriented engine alongside a data transformation and quality engine. They specifically call out two patterns: embedding StreamInsight within SSIS and embedding SSIS within StreamInsight.  The background discussion is […]

BIA – The BizTalk Intelligence Agency

Lex Hegt has been owner of blog called BIA – The BizTalk Intelligence Agency and it has been around since 2005. In past Randal was contributor in the past of this blog, now I and Charles are new contributors. It is sponsored by integration team of Ordina my current employer. I encourage you to visit this site as well as it contains valuable information. It can have some overlap with this blog or one by Charles. I regularly will post here and on that blog.

Cheers!

Technorati: biztalk server 2010

Kayxo BizTalk Exchange Adapter Tips

Kayxo BizTalk Exchange Adapter Tips

Introduction I have been working on an effort to add some automation around processing of emails. In the past I have worked with the built-in POP3 adapter and also the N Software mail adapters found here: https://www.nsoftware.com/products/biztalk/adapters/emails.aspx. The built-in BizTalk mail adapters are not secure because POP3 and SMTP send cleartext passwords. In organizations that […]

WF4 Versioning Spike: IIS Hosted Workflow Services

In my previous post, I’ve been exploring how changing the version of an ActivityLibrary affects a workflow.  In this post I want to explore how Workflow Services behave.

The good news – as far as I can tell, they behave exactly as they should behave loading the assembly version they were built with. 

For this test I have a Workflow Service that uses an activity from ActivityLibrary1 and we will run through a similar set of scenarios deploying a Workflow Service (.xamlx) to a web site hosted in IIS.

Scenario 1: Baseline 
Host (IIS) Workflow Service V1, Activity (Bin V1)

Expected: Workflow Service will load Activity V1 from Bin directory

Assembly Version Path
XamlAssemblyResolutionWeb 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\f71eb821\4409cc42_f2b0cb01\XamlAssemblyResolutionWeb.DLL
ActivityLibrary1 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\d859493c\625d8742_f2b0cb01\ActivityLibrary1.DLL

Scenario 2: Activity in GAC 
Host (IIS) Workflow Service V1, Activity (GAC V1)

Expected: Workflow Service will load Activity V1 from GAC

Assembly Version Path
XamlAssemblyResolutionWeb 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\f71eb821\c80c6811_f6b0cb01\XamlAssemblyResolutionWeb.DLL
ActivityLibrary1 1.0.0.0 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\ActivityLibrary1\v4.0_1.0.0.0__c18b97d2d48a43ab\ActivityLibrary1.dll

 

Scenario 3: Upgrade Activity to V2 deploy to bin 
Host (IIS) Workflow Service V1, Activity (Bin V2)

Expected: Workflow Service will fail with exception because it cannot load Activity V1

Actual: System.IO.FileLoadException: Could not load file or assembly ‘ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Scenario 4: Upgrade Activity to V2 deploy to GAC side by side with V1
Host (IIS) Workflow Service V1, Activity V2, Deploy (Bin V2) (GAC V1, V2)

Expected: Workflow Service will load activity V1 from GAC

Assembly Version Path
XamlAssemblyResolutionWeb 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\f71eb821\46453429_f8b0cb01\XamlAssemblyResolutionWeb.DLL
ActivityLibrary1 1.0.0.0 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\ActivityLibrary1\v4.0_1.0.0.0__c18b97d2d48a43ab\ActivityLibrary1.dll

 

Scenario 5: Upgrade Activity to V2 deploy to GAC remove V1 from GAC
Host (IIS) Workflow Service V1, Activity (GAC V2)

Expected: Workflow Service will fail with exception because it cannot load Activity V1

Actual: Exception Could not load file or assembly ‘ActivityLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Scenario 6: Upgrade Workflow Service and Activity but fail to deploy Activity V2
Host (IIS) Workflow Service V2, Activity (GAC V1)

Expected: Workflow Service will fail with exception because it cannot load Activity V2

Actual: System.IO.FileNotFoundException: Could not load file or assembly ‘ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab’ or one of its dependencies. The system cannot find the file specified.

Scenario 7: Upgrade Workflow Service and Activity but fail to deploy Activity V2

Host (IIS) Workflow Service V2, Activity (GAC V1) (Bin V1)

Expected: Workflow Service will fail with exception because it cannot load Activity V2

Actual: System.IO.FileLoadException: Could not load file or assembly ‘ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Scenario 8: Upgrade Workflow Service and Activity but fail to deploy Activity V2
Host (IIS) Workflow Service V2, Activity (GAC V1) (Bin V1)

Expected: Workflow Service will fail with exception because it cannot load Activity V2

Actual: System.IO.FileLoadException: Could not load file or assembly ‘ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

BizTalk and AppFabric Caching: Problem or Problem Solver?

In the recent edition of The BizTalker Newsletter I featured the below article.  Read the article below or join the newsletter to have it delivered to your email.  I welcome and comments. feedback, or thoughts on this subject.


Server AppFabric contains two core pieces – Hosting and Caching. Today, I’m going to focus on the Caching piece of AppFabric.
AppFabric Caching is a new offering from Microsoft as part of the Server AppFabric collection of technologies for the Application Server role inside Windows. AppFabric Caching is Microsoft’s Distributed Cache solution for on-premise, fast, in-memory, and durable object caching.

A lot of community bloggers have been blogging about the use of AppFabric Caching with BizTalk Server. A few of the best posts are:

  • Using Windows Server AppFabric Caching for Storing SSO & Configuration data by Abdul Rafay – This shows how to Cache SSO data inside BizTalk.
  • Use AppFabric Cache to cache your WCF Service response by Mikael Hakansson – This shows how to Cache WCF response messages inside BizTalk.
  • Using AppFabric Cache in BizTalk by Todd Dhaeyer – This shows how to use AppFabric to Cache reference data and even prevent double messages.

Is Server AppFabric Caching really solving problems or creating new ones?

Rather than diving too deep into AppFabric Caching, let me summarize with a list of Do’s and Don’ts.

AppFabric Rules of Thumb – Don’ts:

  • Never put anything in the Cache that MUST not be lost – it is a non-transactional cache, not a database.

  • Never install AppFabric Caching along with other server products.  It will take up all of the available resources of the server including the entire available RAM so it should only be installed on a dedicated server.

  • Avoid making a connection to the Cache Cluster with each request.  The initial connection to the Cache Cluster is more expensive than reading and writing to the Cache. 

AppFabric Rules of Thumb – Do’s:

  • Use the Cache for fast, in-memory access to serializable .Net Objects that may or may not actually be in the Cache.

  • To achieve fault tolerances in the Cache, simply add a second node to the Cache Cluster (in most cases).

  • Use the Cache to reduce the load, performance, and potentially the license costs of more expensive products like SQL Server.

  • As demand grows, add more servers to the Cache Cluster to increase the available RAM for Caching.

The guidelines seem simple enough, so what is my hold out on BizTalk and AppFabric Cache?

Using BizTalk and AppFabric together makes awesome demos and can simplify some problems like working with reference data.  The current release of AppFabric Caching is designed to run alone on its own server since it could take up all available RAM.  This would not be a good situation on a production BizTalk Server.

My main concern with AppFabric Caching is if you have a separate caching layer along with your BizTalk Server, why not just use SQL rather than the Cache? 

  • Lower Cost – AppFabric Cache is included with the Windows License but you need extra hardware to run it on its own.

  • Better Performance – AppFabric Caching would reduce the load on SQL but I would like to see better data on SQL connection vs. Cache connection costs.  Although, if the existing SQL Cluster was already reaching capacity, moving more items away from that would be a plus. 

  • Lower Latency – In my mind, reducing latency is the biggest factor for using a Cache.  Cache would reduce the latency vs. a call to the database.  I would say in most BizTalk Solutions an external call to a SQL Server would probably not be the bottle neck given other BizTalk tuning parameters.  

  • Mission Critical Data – SQL wins out here (at least for now) because it has a true transactional backend data store. 

I love all three of the AppFabric community demos shown above.  At this stage, I would be comfortable using AppFabric Cache for reference and SSO data – not so much for removing double messages unless I was OK with maybe missing one now and then (but then what’s the point?).  I would still look to leverage SQL for double message removal given the need for true transactions.  Like everything – your unique situation may vary.

In conclusion, BizTalk and AppFabric Caching can work together.  Will caching work in scenarios such as a message re-play and de-duper?  Absolutely!  But for me, given the criticality of most BizTalk installations, I would use caution on using AppFabric Caching with BizTalk at least for now.

A Brief Introduction to Error Logging Modules And Handlers (ELMAH)

Overview
ELMAH is an open source project used to add error logging capabilities to an ASP.NET Web application. ELMAH essentially provides a means for logging and reporting unhandled exceptions in applications. I came across this very nifty tool while working with the MASS LEG team to create the Legislative Automated Workflow System (LAWS) application for […]

FabrikamShipping sample updated to include Access Control December CTP Release

Check out the latest updates to the FabrikamShipping SaaS sample application. This sample provides a great example on how the Access Control service helps solve real-life identity federation requirements.

You can find more details in Vittorio Bertocci’s blog post.

If you want to learn more on the Access Control service please visit our website or the MSDN developers website.

If you haven’t started checking out Windows Azure AppFabric already make sure to take advantage of our free trial offer. Click the link below and get started!

As always, feel free to leave us feedback on the comments section of this blog.

Apprenticeship : A Journey Begins

Writing great software is an immense joy in my life.  I truly enjoy working with business users and other developers to craft software which can make a marked and immediate difference for a business, something that presents real value.  There isn’t a lot of rocket science here, it goes to the fundamental desire of all humans to make a difference in our world.

Fortunately for those who are looking for ways to do so, our world is full of situations that need to be adjusted.  One of them, with all due respect to those in our industry who cling to their cherished degrees from universities, is that you do not need a four year degree to craft great software.  Now certainly we all know people who have been successful without a traditional education, in fact you’re reading the blog of one right now.  And I will be the first to tell anyone leaving High School that a four year degree is your most certain path to success in software development.  But for some, that ship has sailed.

For some, the reality of life is such that leaving work is beyond their reach because of the need to support themselves.  One such person as this is Christopher Jackson, a good friend of mine that has exceptional analytic skills but who also finds himself functionally unemployed currently, having lost his last job to a downsize from the economy, he now acts as a substitute teacher in the Fort Worth Independent School District for the incredible sum of $73 dollars per day.  Compare that to the average salary for an entry level developer, approximately $56K/year, and I believe you will agree that cultivating his interest into a marketable skill set should have an impact on his life.  Chris has always had an interest in writing software, but it is hard to find time to go back to school while working.

As such, Chris and I have come to arrangement, one that is an experiment for me but which I firmly believe in.  Effective today, January 9th 2011, Chris has begun an unpaid internship with my company TimRayburn.net LLC which puts on Dallas TechFest and other projects of mine.  During the internship, he will be working with me to increase his basic skills in development, and learn how to craft software from the ground up.  Initially, he will be working on assignments with little real-world application, but eventually he will be assisting me on actual projects that deliver real world value.  As I’m sure some will be curious on how I have structured this plan, I will lay out at a high level what is involved:

  • A commitment to dedicate time to the effort.  Chris will be spending time with my at least three days a week for multiple hours.
  • A commitment from his spouse to support him in this effort.  Chris is newly married, and his spouse needs to be on board if he is to have the support he will need at home.
  • A time boxed commitment, for us initially of six months.  This will allow Chris to commit, while also knowing that it has an end point, and that if he chooses to continue than changes can occur at that time.
  • A penalty for not meeting the commitment.  The details of which will not be public, but which are notable enough to impact his life should he decide to walk away from the commitment.
  • A reasonable third party arbiter, trusted by both myself and Chris who will be able to settle any disagreements around the penalty should that need arise.  My wife Kate will be serving that role, which for Chris and I who have been friends for over 15 years is agreeable.

I do not know how this will go, but I am certain it will generate blog posts as I learn while I teach.  Any suggestions?

 

Average Entry Level Developer Salaries in Arlington, TX

entry level developer

$56,000