by community-syndication | May 11, 2007 | BizTalk Community Blogs via Syndication
I’ve read the Team Foundation Server Branching Guidance several times but I still have some questions I’m hoping the development community at large can help answer.
The small team I lead does typical corporate development projects including data warehousing, business-to-business integration, e-commerce and intranet/extranet web applications. We develop all our corporate “applications” using Microsoft tools such as Visual Studio 2005 Team Suite, SQL Server 2005, BizTalk Server 2006 and Commerce Server 2007. Our development efforts are driven by both internal customers and external trading partners and all projects continue to “evolve” over time, adding new scenarios as the business continues to grow.
Although we don’t use this term, we “continuously integrate” these new scenarios into our TFS projects at a very rapid pace and deploy them on an “as needed” basis. We rarely “roll back” something that we have deployed and we tend to fix our “bugs” as we (or our internal or external users) find them. I believe this is a pretty typical corporate development scenario. What we need is guidance on setting up a branching/merging strategy that “fits” a corporate development scenario where “releases” are small and incremental (such as deploying a new SQL Reporting Service report or SSIS Package) and happen very often (sometimes several per week).
Today, we use a “branch per major release” strategy and only create a new branch when we need to temporarily maintain our “Release 1.0” code while deploying a “Release 2.0” to our users. After deploying the “Release 2.0” bits we discontinue supporting the “Release 1.0” branch. So far, we have never merged from branch to branch.
Questions:
1) Is this a legitimate branching strategy for a small corporate development team?
2) If not, how do we deploy a more traditional DEV/MAIN/PRODUCTION strategy without the “overhead” of merging almost continuously?
by community-syndication | May 11, 2007 | BizTalk Community Blogs via Syndication
I’ve read the Team Foundation Server Branching Guidance several times but I still have some questions I’m hoping the development community at large can help answer.
The small team I lead does typical corporate development projects including data warehousing, business-to-business integration, e-commerce and intranet/extranet web applications. We develop all our corporate “applications” using Microsoft tools such as Visual Studio 2005 Team Suite, SQL Server 2005, BizTalk Server 2006 and Commerce Server 2007. Our development efforts are driven by both internal customers and external trading partners and all projects continue to “evolve” over time, adding new scenarios as the business continues to grow.
Although we don’t use this term, we “continuously integrate” these new scenarios into our TFS projects at a very rapid pace and deploy them on an “as needed” basis. We rarely “roll back” something that we have deployed and we tend to fix our “bugs” as we (or our internal or external users) find them. I believe this is a pretty typical corporate development scenario. What we need is guidance on setting up a branching/merging strategy that “fits” a corporate development scenario where “releases” are small and incremental (such as deploying a new SQL Reporting Service report or SSIS Package) and happen very often (sometimes several per week).
Today, we use a “branch per major release” strategy and only create a new branch when we need to temporarily maintain our “Release 1.0” code while deploying a “Release 2.0” to our users. After deploying the “Release 2.0” bits we discontinue supporting the “Release 1.0” branch. So far, we have never merged from branch to branch.
Questions:
1) Is this a legitimate branching strategy for a small corporate development team?
2) If not, how do we deploy a more traditional DEV/MAIN/PRODUCTION strategy without the “overhead” of merging almost continuously?
by Richard | May 11, 2007 | BizTalk Community Blogs via Syndication
I’ve just finished reading a paper written by David Pallmann.pdf) (PDF) from Neudesic. Belive it or not (or even better check it out), it’s a short and understandable description of what an ESB is!
Neudesic sells a product called Cyclone which is something they call a ESB architecture and framework software and even if describing this product is the main purpose of the paper the first part deals with describing the basics of an ESB and try’s to “assemble a synthesis of popular ESB definitions”.
I’ve chosen a couple of parts of the paper that really appealed to me but I really recommend the full length version (only 8 pages!).
Defining the ESB
>
> * An ESB is a backbone for connecting and integrating an enterprise’s applications and services.
> * An ESB provides the necessary infrastructure to create a service oriented architecture.
> * An ESB is a convergence of EAI, MOM, and SOA concepts.
> * An ESB is based on open standards such as XML, SOAP, and WS-*.
> * An ESB provides intelligent routing, such as publish-subscribe, message brokering, and failover routing.
> * An ESB provides mediation, overcoming data, communication, and security differences between endpoints.
> * An ESB integrates with legacy systems using standardsbased adapters.
> * An ESB provides logical centralized management but is
physically decentralized.
> * An ESB is able to apply EAI concepts such as rules and
orchestrations.
> * An ESB is able to monitor and throttle activity as per a Service Level Agreement (SLA).
>
I never thought of an ESB as an convergence of EAI (Enterprise Application Integration), MOM (Message Oriented Middleware) and SOA (Service Oriented Architecture) concepts. But, ok, so what does the writer really mean by these concepts?
SOA makes loosely-coupled, decentralized solutions possible that are enterprise-ready and based on interoperable standards. EAI allows integration of any combination of systems, with sophisticated message brokering, message translation, business process orchestration, and rules engine processing. MOM provides intelligent routing such as publish-subscribe topical messaging and strong managerial controls over routing, auditing, activity monitoring, and throttling.
>
>
And why do we need a bus architecture on top of SOA, MOM and EAI?
Point-to-point architecture
works all right on a small scale, but its problems become
apparent when used at the enterprise level. If each system has to know the connection details of every other system, then each new system added increases the problem of configuration and management exponentially. This was the impetus that led us to hub-and-spoke architectures, which most EAI products use. This architecture was a vast improvement over point-to-point architectures, and each system needed to communicate with only the hub. In addition, the hub could provide excellent management features since it was a party to all communication. It only took time to reveal some shortcomings with the hub-and-spoke approach, and today it is often associated with concerns about scalability, single point of failure, and vendor lock-in.
>
> …
>
> Fortunately, there is a sound compromise to be found in the bus architecture, which provides the benefits of logical centralization but is physically decentralized. The bus architecture in earlier days was often used in message bus systems based on proprietary technologies, but an ESB implements this architecture using WS-* standards.
>
>
So using all three of them will make an ESB? Well, not really …
If combining disciplines was all there was to an ESB, we’d simply call it “consulting”. To properly leverage these disciplines they need to be combined in the right way through an architecture that lets their strengths shine and overcome their inherent weaknesses. Each discipline has some weak areas that the others help to resolve: SOA needs better enterprise manageability; EAI needs to become decentralized; MOM needs to get away from proprietary technologies. Combining these disciplines properly in an ESB overcomes these weaknesses.
>
>
I’d be very intreseted in comments of other artciles, papers and so on relating to the ESB concept!
by community-syndication | May 10, 2007 | BizTalk Community Blogs via Syndication
I’ve just finished reading a paper written by David Pallmann (PDF) from Neudesic. Belive it or not (or even better check it out), it’s a short and understandable description of what an ESB is!
Neudesic sells a product called Cyclone which is something they call a ESB architecture and framework software and even if describing this product is the main purpose […]
by community-syndication | May 10, 2007 | BizTalk Community Blogs via Syndication
One of the really cool features included in the Orcas bits is the integration between Microsoft AJAX 1.0 and WCF. My buddy Steve Maine has been doing an amazing job evangelizing this technology. One of the components that make possible the “WCF-Atlas”…(read more)
by community-syndication | May 9, 2007 | BizTalk Community Blogs via Syndication
I just noticed that the Professional BizTalk Server 2006 book is now available on Amazon.com.
I haven't had a chance to look at it yet, but the outline, comments, and blog posts all look very good.
by stephen-w-thomas | May 9, 2007 | Stephen's BizTalk and Integration Blog
The long awaited Professional BizTalk Server 2006 book is now available on Amazon.com.
I haven't had a chance to look at this one yet, but the outline looked very good.
I'll try to post an update once I get around to looking though it.
by community-syndication | May 9, 2007 | BizTalk Community Blogs via Syndication
Next Thursday night – (May 17, 2007) we are hosting an event in our Melbourne offices called “Integrating Track and Trace into your Enterprise System”. It’s a collaborative effort between:
and
to understand how you can use Microsoft technologies to do track and trace. For me, its’ about the BizTalk RFID platform.
The invite describes:
- B2B specialist knowledge to tackle the foundations of e-business and EAI with the leadership of Microsoft Gold Partner – Bryn Systems
- Wireless bar code application and RFID expertise from the leading Motorola business partner – Datanet
I’m certainly looking forward to the event, as it will be an opportunity to socialise with peers who have “track and trace” on their strategic agendas. We’ve put a lot of ground work to get to this stage, so I’ll let you know how it goes. Oh, by the way, let me know if you are keen to attend! 🙂
by community-syndication | May 9, 2007 | BizTalk Community Blogs via Syndication
In my last blog post I said that when I found more scenarios that required custom XSLT I would blog about it. I just didn’t think it would be quite so soon.
In this case I have two source documents and I needed to loop through one of them and select items off the other and map elements from both source documents to the destination document. I am working on this project with Matt Cable (who works for Quilogy and is in the Virtual TS for BizTalk program) and he showed me a great way to accomplish this (he looked over my shoulder as I was trying to figure something out and said it would be much easier to do it this way. I am very glad too because as I look back, what I was putting together was far more difficult).
So I have these two source documents (as shown in the screen shot below) and I need to loop through the bottom message and for every VendorUPC I need to match that up with the upper document and pull the Image and ImageThumb elements (it is not expanded in the screen shot but under the Color element there is a sku attribute that I can match up with the VendorUPC)
The following is what the XSLT looks like. We setup a for each loop around the bottom message at the record level. The ItemNumber and VendorUPC elements were easy as we could just take those from the current position in the loop. We were equally lucky with the URL element since it was not a repeating element and therefore we could grab that value.
The Image and ImageThumb is where it gets interesting. This is where we need to take the VendorUPC from the bottom document and match it up to the sku attribute in the top document and map the value. This is done through the code in the highlighted section. Everything in between the open and close brackets acts like a where clause. For this schema, the sku apears at a lower level in the hierarchy then the actual data that I needed to map. So in this case I am saying that at the xslt processor should look at /Color/Size/sku where that sku matches the current iterations VendorUPC. If there is a match then pick the /Color/pic_standard or /Color/pic_thumb attribute value and map that to the destination.
<xsl:for-each select=”/*[local-name()=’Root’ and namespace-uri()=’http://schemas.microsoft.com/BizTalk/2003/aggschema’]/*[local-name()=’InputMessagePart_1′ and namespace-uri()=”]/*[local-name()=’MissingVendorImagesResponse’ and namespace-uri()=’http://MissingVendorImages’]/*[local-name()=’XXXXX_CatalogProducts’ and namespace-uri()=’http://MissingVendorImages’]”>
<ImageData>
<ItemNumber>
<xsl:value-of select=”@ItemNo”/>
</ItemNumber>
<URL>
<xsl:value-of select=”/*[local-name()=’Root’ and namespace-uri()=’http://schemas.microsoft.com/BizTalk/2003/aggschema’]/*[local-name()=’InputMessagePart_0′ and namespace-uri()=”]/*[local-name()=’ProductList’ and namespace-uri()=”]/@pic_url_prefix”/>
</URL>
<Image>
<xsl:value-of select=”/*[local-name()=’Root’ and namespace-uri()=’http://schemas.microsoft.com/BizTalk/2003/aggschema’]/*[local-name()=’InputMessagePart_0′ and namespace-uri()=”]/*[local-name()=’ProductList’ and namespace-uri()=”]/*[local-name()=’CatalogSection’ and namespace-uri()=”]/*[local-name()=’Model’ and namespace-uri()=”]/*[local-name()=’ColorVariations’ and namespace-uri()=”]/Color[Size/@sku = current()/@VendorUPC]/@pic_standard”/>
</Image>
<ImageThumb>
<xsl:value-of select=”/*[local-name()=’Root’ and namespace-uri()=’http://schemas.microsoft.com/BizTalk/2003/aggschema’]/*[local-name()=’InputMessagePart_0′ and namespace-uri()=”]/*[local-name()=’ProductList’ and namespace-uri()=”]/*[local-name()=’CatalogSection’ and namespace-uri()=”]/*[local-name()=’Model’ and namespace-uri()=”]/*[local-name()=’ColorVariations’ and namespace-uri()=”]/Color[Size/@sku = current()/@VendorUPC]/@pic_thumb”/>
</ImageThumb>
<VendorUPC>
<xsl:value-of select=”@VendorUPC”/>
</VendorUPC>
</ImageData>
</xsl:for-each>
by community-syndication | May 9, 2007 | BizTalk Community Blogs via Syndication
Article on configuring caching to speed up your MOSS sites:
http://blogs.msdn.com/ecm/archive/2006/11/08/how-to-make-your-moss-2007-web-site-faster-with-caching.aspx