Saturday, February 27, 2010

2010-02-27 Saturday - SalesForce.com SOA Integration

I'm doing some research this weekend on integration strategies related to SalesForce.com and an enterprise SOA.

The first thing you'll want to do is review the following documentation:

Developer Docs:
http://www.salesforce.com/us/developer/docs/apexcode/index.htm

Force.com Apex Code Developer's Guide Version 18.0
http://www.salesforce.com/us/developer/docs/apexcode/salesforce_apex_language_reference.pdf

Visualforce Developer's Guide Version 18.0
http://www.salesforce.com/us/developer/docs/pages/index.htm

Salesforce.com Spring '10 Release Notes
https://na1.salesforce.com/help/doc/en/salesforce_spring10_release_notes.pdf

The Internal Design of Force.com’s Multi-Tenant Architecture
http://www.scribd.com/doc/17343814/The-Internal-Design-of-Forcecoms-MultiTenant-Architecture





There are some real software development lifecycle (SDLC) challenges in manaing and developing applications within Force.com - these three articles provide some excellent summaries of the pros and cons:

Force.com vs .NET
http://blog.pnbconsulting.com.au/index.php/forcecom-vs-net/

http://blog.pnbconsulting.com.au/index.php/force-com-evening-the-score/

Disadvantages of the Force.com platform
http://stackoverflow.com/questions/1664503/disadvantages-of-the-force-com-platform



James Governor offers some interesting commentary that it worth keeping in mind when approaching any integration problem...especially when it comes to the design of a SOA:
The REST of The Cloud
http://www.redmonk.com/jgovernor/2009/02/12/the-rest-of-the-cloud/
"While there is a place for Big Architecture in IT, it shouldn’t be a necessity. You wouldn’t use a combine harvester to mow a lawn. You wouldn’t use a space shuttle to get to the shops. You wouldn’t build an airport to land a helicopter. But as an industry we are awesome at complexifying things."


I'm of the opinion that RESTful services are probably the better strategy for integrating with Force.com (due to some significant gaps in their compliance with the full WSDL and XSD specifications) - but one shouldn't loose sight of some of challenges in adopting a RESTful strategy:


Twitter - how not to manage RESTful services
http://www.thesoablog.com/2010/01/twitter-how-not-to-manage-restful.html

Twitter REST error handling
http://www.thesoablog.com/2009/12/twitter-rest-error-handling.html



Mashing up Force.com and Zillow
http://wiki.developerforce.com/index.php/Force.com_Zillow_Mashup
"This articles shows how to create such a mashup. We implement an interface to the Zillow REST-based web services API, providing all the code. We then build on that code by creating a Visualforce page that integrates the interface with an application on the Force.com platform, in this case Salesforce.com. The techniques used in this article are applicable to other REST based web services."




Calling Web Services from a Trigger (and an update to Zillow mashup)
http://blog.sforce.com/sforce/2009/02/calling-web-services-from-a-trigger-.html



Invoke salesforce.com API via enterprise.wsdl
http://wiki.open-esb.java.net/Wiki.jsp?page=RestSalesForce



HTTP (RESTful) Services Classes
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful.htm



Force.com Toolkit for Google Data APIs
http://developer.force.com/codeshare/apex/ProjectPage?id=a0630000002ahp1AAA
"The new Force.com Toolkit for Google Data APIs provides a free and open-source set of tools and services that developers can use to take advantage of Google Data APIs from within Force.com. The goal of the toolkit is to make Google Data APIs ? starting with Spreadsheets, Documents and Calendar ? first class citizens of the Force.com environment. Specifically, the toolkit exposes these APIs directly within Apex, making it easier to access them natively from Force.com apps and providing tighter integration between the platforms with less developer effort."


Build Force.com Apps that Leverage Google Data APIs
http://wiki.developerforce.com/index.php/Google_Data_API_Toolkit


Apex Web Services and Callouts
http://wiki.developerforce.com/index.php/Apex_Web_Services_and_Callouts



Apparently SalesForce.com doesn't support JSON out of the box...but there are some hacks available:
Calling a REST Web Service (JSON) with Apex
http://techblog.appirio.com/2010/01/calling-rest-web-service-json-with-apex.html

"Using JSON RESTful Web Services with Salesforce.com opens up your org to a number third-party integration opportunities (Google, Yahoo!, Flickr, bespoke, etc.). JSON support isn't baked into the Force.com platform but Ron Hess at Salesforce.com has created a JSON parser which will do the heavy lifting for you."



A REST+JSON facade to Salesforce.com
http://blog.feedly.com/2008/08/19/a-restjson-facade-to-salesforcecom/


Playing Together Nicely: Getting REST and SOAP to Share Each Other's Toys
http://onjava.com/pub/a/onjava/2006/02/15/jython-soap-interface-to-rest.html?page=1


Towards a RESTful Plug and Play Experience in the Web of Things
http://ieeexplore.ieee.org/Xplore/login.jsp?url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F4597156%2F4597157%2F04597240.pdf%3Farnumber%3D4597240&authDecision=-203



REST-Based Management of Loosely Coupled Services
http://www2009.org/proceedings/pdf/p931.pdf


Standards Supporting RESTful Services
http://www.soamag.com/I35/1209-1.php

I also thought it interesting to review Sun's Cloud API - since it uses a RESTful approach too:
Sun Cloud API - A RESTful Open API for Cloud Computing
http://www.omg.org/news/meetings/tc/ca/special-events/ci/Sun.pdf

The Many Flavors of Platform Services for Cloud Computing
http://www.drdobbs.com/windows/220300737;jsessionid=KN4BJJESFYWQ1QE1GHPSKH4ATMY32JVN?pgno=1



A useful blog to check back on from time-to-time: Perspectives on Salesforce.com
http://sfdc.arrowpointe.com/


New Force.com Tool Designs and Deploys Business Processes in the Cloud
http://www.cmswire.com/cms/web-cms/new-forcecom-tool-designs-and-deploys-business-processes-in-the-cloud-006610.php

Many developers have commented on the woeful lack of a debugger in the Force.com development environment, but this free tool might be useful in your debugging efforts:
Force.com Debug Log Parser
http://codebit.wordpress.com/2009/06/04/force-com-debug-log-parser/

Saturday, February 13, 2010

2010-02-13 Saturday - Sharepoint Blogging

I recently recommended to a client's project management office that they consider leveraging the blogging feature that is available in Sharepoint - to help communicate the progress of team members (and also as a way of capturing the tribal knowledge that so often simply walks out the door when the consultants leave at the end of a project).

Some of the team members are using the Sharepoint wiki feature - but that is generally more useful for publishing the "official" knowledge of the team. Blogging allows team members to maintain their own journal of research, avenues tried, options considered, and results of their trial-and-error.

I found an interesting project on the Codeplex site that provides Enhanced Blogging capabilities for Sharepoint's base feature:

Codeplex - Sharepoint 2007 Enhanced Blogging module
http://cks.codeplex.com/wikipage?title=Enhanced%20Blog%20Edition&referringTitle=Home


There's also a demo of the technology here:
http://cks.wssblogs.com/default.aspx

2010-02-13 Saturday - PHP, WSDL, SOAP, and Web Services

This last week I spent some time researching the latest developments (and some of the outstanding issues that are involved) in integrating PHP with WSDL and SOAP Web Services.

Here are some of the resources that I found interesting or useful:

Programmer's Reference Guide - Zend_Soap
http://framework.zend.com/manual/en/zend.soap.html


Zend Bug Tracker
http://framework.zend.com/issues/secure/IssueNavigator.jspa?

Fixed Bug: Zend_Soap_AutoDiscover does not generate interoperable document-literal WSDL
http://framework.zend.com/issues/browse/ZF-6349

Fixed Bug: ArrayOfTypeSequence strategy doesn't support complex types
http://framework.zend.com/issues/browse/ZF-6742

Open Bug: Zend Soap Wsdl Strategy ArrayOfComplexType fails to generate JAX importable descriptions
http://framework.zend.com/issues/browse/ZF-6077

Open Bug: Zend_Soap_Server should facilitate the use of document-literal-wrapped WSDL
http://framework.zend.com/issues/browse/ZF-6351

Open Bug: SoapClient is unable to handle
http://framework.zend.com/issues/browse/ZF-8052

Open Bug: SoapServer calls wrong function, although "SOAP action" header is correct
http://bugs.php.net/bug.php?id=49169

Open Bug: WSDL does not support soap:header tags
http://framework.zend.com/issues/browse/ZF-4698

Open Bug: SOAP: Implement Document/Literal with wrapped convention
http://bugs.php.net/bug.php?id=30302

PHP SOAP Extension
http://wso2.org/library/1060

PHP SOAP Extension
http://devzone.zend.com/article/689

PHP, SOAP and operation signatures
http://www.dotvoid.com/2009/12/php-soap-and-operation-signatures/

PHP:SOAP manual
http://php.net/manual/en/book.soap.php

A DETAILED INVESTIGATION OF INTEROPERABILITY FOR WEB SERVICES
http://eprints.ru.ac.za/241/1/WEB_SERVICES_INTEROPERABILITY.pdf

Soap, XmlRpc and Rest with the Zend Framework
http://ajohnstone.com/archives/soap-xmlrpc-and-rest-with-the-zend-framework/


Why does [PHP ext/soap] leave me feeling so dirty?
http://synful.us/archives/14/why-does-soap-leave-me-feeling-so-dirty



  • "ext/soap has no support for retrieving Soap Headers. You’re stuck with one of two hacks. You can either pass an object through from the client that maps to a method call on the server — which is less than helpful when using headers for authentication — or parse the XML from HTTP_RAW_POST_DATA manually in your SOAP request."


  • "ext/soap’s fault support is buggy and inconsistent. Defining custom Soap Faults in an intelligent way means hacking the response envelope."




WS-*/REST Web Services with,WSO2 WSF/PHP
http://wso2.org/files/zend_conference_tutorial.pdf


WSO2 Web Services Framework for PHP (WSO2 WSF/PHP)
http://wso2.org/projects/wsf/php

PHP SOAP Extension
http://wso2.org/library/1060

PHP And Silverlight - DevDays session
http://www.slideshare.net/maartenba/php-and-silverlight-devdays-session


2004-08-24 - Basic Profile Version 1.1
http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html
2006-04-10 - Basic Profile Version 1.1
http://www.ws-i.org/Profiles/BasicProfile-1.1.html



PHP SOAP server and .Net client issues
http://www.zfforums.com/zend-framework-components-13/web-web-services-22/php-soap-server-net-client-issues-2046.html

Zend Server Community Edition
http://www.zend.com/en/products/server-ce/index

Zend FrameWork Cookbook
http://zendframeworkcookbook.blogspot.com/


Which style of WSDL should [You] use?
http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/


($) Gartner Report: PHP: Past, Present and Future
http://blogs.gartner.com/mark_driver/2009/12/03/php-past-present-and-future/


Zend Core for IBM technical roadmap
http://www.ibm.com/developerworks/data/library/techarticle/dm-0502nickolas/

2010-02-13 Saturday - Perl

Tonight I've installed the latest release of Perl.

I also discovered a plugin for Eclipse:
EPIC - Eclipse Perl Integration

One of the best books on Perl programming is Ellie Quigley's "Perl by Example"