Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Out of Bounds with AJAX


Published on

Published in: Economy & Finance, Technology
  • Be the first to comment

Out of Bounds with AJAX

  1. 1. Out of Bounds with AJAX Dave Carroll, Jan Sabelstrom, CaSa Customer Solutions Henry Hai, OKERE Track: Advanced AppExchange Developer
  2. 2. Safe Harbor Statement <ul><li>“ Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements the achievement of which involves risks, uncertainties and assumptions. If any such risks or uncertainties materialize or if any of the assumptions proves incorrect, our results could differ materially from the results expressed or implied by the forward-looking statements we make.  All statements other than statements of historical fact could be deemed forward-looking, including any projections of subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. </li></ul><ul><li>The risks and uncertainties referred to above include - but are not limited to - risks associated with the integration of Sendia Corporation’s technology, operations, infrastructure and personnel with ours; unexpected costs or delays incurred in integrating Sendia with, which could adversely affect our operating results and rate of growth; any unknown errors or limitations in the Sendia technology; any third party intellectual property claims arising from the Sendia technology; customer and partner acceptance and deployment of the AppExchange and AppExchange Mobile platforms; interruptions or delays in our service or our Web hosting; our new business model; breach of our security measures; possible fluctuations in our operating results and rate of growth; the emerging market in which we operate; our relatively limited operating history; our ability to hire, retain and motivate our employees and manage our growth; competition; our ability to continue to release and gain customer acceptance of new and improved versions of our CRM service; unanticipated changes in our effective tax rate; fluctuations in the number of shares outstanding; the price of such shares; foreign currency exchange rates and interest rates. </li></ul><ul><li>Further information on these and other factors that could affect our financial results is included in the reports on Forms 10-K, 10-Q and 8-K and in other filings we make with the Securities and Exchange Commission from time to time, including our Form 10-K for the fiscal year ended January 31, 2006. These documents are available on the SEC Filings section of the Investor Information section of our website at . </li></ul><ul><li>Any unreleased services or features referenced in this or other press releases or public statements are not currently available and may not be delivered on time or at all.  Customers who purchase our services should make purchase decisions based upon features that are currently available., inc. assumes no obligation and does not intend to update these forward-looking statements, except as required by law. </li></ul>
  3. 3. Sample Agenda <ul><li>Welcome </li></ul><ul><li>Introductions </li></ul><ul><li>SControls and AJAX (client side) </li></ul><ul><li>No-limits Composite SControls (server side) </li></ul><ul><li>Closing </li></ul>
  4. 4. Dave Carroll Principal Developer Program Manager AppExchange Developer Network AppExchange Developer Network / [email_address]
  5. 5. <ul><li>2003 </li></ul><ul><ul><li>sforce launched </li></ul></ul><ul><ul><li>Soap API version 1.0 </li></ul></ul><ul><ul><li>Custom fields on some objects </li></ul></ul><ul><ul><li>No Custom objects </li></ul></ul><ul><li>2004 </li></ul><ul><ul><li>API version 4.0 </li></ul></ul><ul><ul><li>Custom links and SControls introduced. </li></ul></ul><ul><ul><li>No real SControl story </li></ul></ul><ul><li>2005 </li></ul><ul><ul><li>AJAX Toolkit Beta </li></ul></ul><ul><ul><li>Now we have a story </li></ul></ul><ul><ul><li>AJAX becomes an official buzz-word </li></ul></ul><ul><li>AJAX Toolkit productized </li></ul><ul><li>SControls take the spotlight </li></ul><ul><li>DOJO support included </li></ul><ul><li>SFA/SSS/CRM now using AJAX technologies </li></ul><ul><li>Composite SControls </li></ul><ul><li>SOQL-R - expands AJAX use cases </li></ul><ul><li>And more… </li></ul>On-demand App Dev Evolution Winter 07
  6. 6. Demos - not your father’s S-Controls! <ul><li>Inline SControls </li></ul><ul><ul><li>Opportunity Editor </li></ul></ul><ul><li>Animation and Graphing </li></ul><ul><ul><li>Account Revenue </li></ul></ul><ul><li>Active Detail Pages </li></ul><ul><ul><li>New ways to visualize Related Lists </li></ul></ul><ul><li>New Buttons! </li></ul><ul><ul><li>Make my day </li></ul></ul><ul><li>More Mapping fun </li></ul><ul><ul><li>Related Accounts </li></ul></ul><ul><li>Mashboards </li></ul>
  7. 7. Yahoo User Interface Sample - Coding!!
  9. 9. OKERE <ul><li>Consulting and Systems Integration Firm </li></ul><ul><li>Focused on Software as a Service market </li></ul><ul><li>Delivering client management solutions to enterprise organizations </li></ul><ul><li>Experience in all industries, core strength Financial Services </li></ul><ul><li>Please visit us at the Financial Services Pavilion </li></ul>INDUSTRY: Financial Services EMPLOYEES: 4,500 GEOGRAPHY: Global PRODUCT(S) USED: SFA, Service & Support, 3 downloaded AppExchange applications # USERS: 585
  10. 10. Concepts in S-Controls and AJAX <ul><li>Building a re-usable AJAX List Control </li></ul><ul><ul><li>Accelerate your development </li></ul></ul><ul><ul><li>Native salesforce look and feel </li></ul></ul><ul><ul><li>Customized features (Tool Tips, Hot Lists, Icons) </li></ul></ul><ul><ul><li>Available through Snippets </li></ul></ul><ul><li>Call Log S-Control </li></ul><ul><ul><li>Dynamic Content (Meta Data Driven) </li></ul></ul><ul><ul><li>Review contact activity quickly </li></ul></ul><ul><ul><li>Mass activity creation using AJAX </li></ul></ul><ul><ul><li>Leverages new SOQL features (Relationship Queries, Order By, Count, Limit) </li></ul></ul>
  11. 11. Jan Sablestrom Managing Director CaSa Customer Solutions, LLC AppExchange Developer Network /
  12. 12. About CaSa Customer Solutions <ul><li>Full-service CRM Solutions provider </li></ul><ul><ul><li>Strategy </li></ul></ul><ul><ul><li>Process </li></ul></ul><ul><ul><li>Technology </li></ul></ul><ul><ul><li>Talent </li></ul></ul><ul><li>Specialized in Salesforce implementation </li></ul><ul><ul><li>First implementation 2001 </li></ul></ul><ul><li>AppExchange go-to-market services </li></ul><ul><ul><li>Market Strategy </li></ul></ul><ul><ul><li>Product Design/Development </li></ul></ul><ul><ul><li>AppExchange Process Management (Listing, Certification & Posting) </li></ul></ul><ul><ul><li>Support Process and Automation Design & Implementation </li></ul></ul><ul><li>Associates average over 15 years CRM experience </li></ul><ul><li>Visit us at: </li></ul><ul><ul><li>Marketing </li></ul></ul><ul><ul><li>Sales </li></ul></ul><ul><ul><li>Service & Support </li></ul></ul>
  13. 13. Sample Application: OnPoint Direct Response <ul><li>What does it do? </li></ul><ul><ul><li>Allows users to build micro-websites to capture information from visitors for registration, surveys or any business communications objective! </li></ul></ul><ul><ul><li>Data model & integration technology creates or updates records in for any object or maps to flexible meta-data object </li></ul></ul><ul><li>How & Why is AJAX employed? </li></ul><ul><ul><li>Performance improvement </li></ul></ul><ul><ul><ul><li>Pre-loading of org configuration meta data </li></ul></ul></ul><ul><ul><ul><li>“ Client-server” messaging for content save/retrieve </li></ul></ul></ul><ul><ul><li>Use of server-side .NET classes (C# or VB) to perform “heavy lifting” & return primitive and complex data types, including .NET library classes (e.g., DataTable) </li></ul></ul><ul><ul><ul><li>Simplifies javascript & DHTML code on client </li></ul></ul></ul><ul><ul><li>Powerful, simplified client-side object management </li></ul></ul><ul><ul><ul><li>Leverage AppEx WSDL class definitions from to DR server to client </li></ul></ul></ul><ul><ul><li>“ No-Postback” form field validation </li></ul></ul>
  14. 14. Direct Response in Action – Demo…
  15. 15. Direct Response – AJAX Library Used <ul><li>Ajax.NET (AjaxPro) </li></ul><ul><ul><li>First .NET AJAX library, continuous upgrades & open source community support </li></ul></ul><ul><ul><li>Substantially endorsed by Microsoft prior to Atlas </li></ul></ul><ul><ul><li>Strengths & Benefits </li></ul></ul><ul><ul><ul><li>Reuse your existing .NET classes </li></ul></ul></ul><ul><ul><ul><li>Abstraction from XMLHttpRequest usage </li></ul></ul></ul><ul><ul><ul><li>Leverage built-in JSON engine to return complex data types to client, including .NET objects and any serializable custom objects </li></ul></ul></ul><ul><ul><ul><li>Simple implementation: </li></ul></ul></ul><ul><ul><ul><ul><li>Include AjaxPro library in project – embeds javascript file in ASP.NET pages; provides web service to handle asynchronous calls to server; and serves as request/response broker to your .NET classes; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Register your server-side classes as AjaxPro-enabled; and then… </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Call methods normally from client-side javascript! </li></ul></ul></ul></ul><ul><ul><li>Download and information at: / </li></ul></ul>
  16. 16. Direct Response – Deep (Code) Dive Retrieve org meta-data, dynamic <select> population
  17. 17. Direct Response – Deep (Code) Dive Retrieving/Saving page content & meta-data
  18. 18. AJAX Best Practices Considerations (aka “Back to the Future” – client-server, that is…) <ul><ul><li>Define objectives/gains to be achieved </li></ul></ul><ul><ul><ul><li>Usability </li></ul></ul></ul><ul><ul><ul><ul><li>Is dynamic nature beneficial, necessary or just “flashy” </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Consider true “value-add” to user experience when weighing AJAX vs. page postback </li></ul></ul></ul></ul><ul><ul><ul><li>Performance </li></ul></ul></ul><ul><ul><ul><ul><li>Can you or do you need to do things behind the scenes and is it worth it </li></ul></ul></ul></ul><ul><ul><ul><li>Component re-use </li></ul></ul></ul><ul><ul><li>Consider complexity of app when determining whether to build a hosted versus pure-client solution </li></ul></ul><ul><ul><ul><li>Data model defining variability & interactive nature of your page(s) </li></ul></ul></ul><ul><ul><ul><li>Single or few pages, 100% Salesforce-oriented or do not have hosting environment for application: </li></ul></ul></ul><ul><ul><ul><ul><li>client-side library Salesforce AJAX Toolkit usually the best bet </li></ul></ul></ul></ul><ul><ul><ul><li>Significant composite application business logic: </li></ul></ul></ul><ul><ul><ul><ul><li>server-side AJAX library, such as Ajax.NET </li></ul></ul></ul></ul>
  19. 19. AJAX Best Practices Considerations (aka “Back to the Future” – client-server, that is…) <ul><ul><li>Beware moving (too much) business logic to the presentation layer </li></ul></ul><ul><ul><ul><li>Remember: client-server architecture pushed most, if not all, biz logic to client: decidedly not a Web 2.0 concept, but AJAX is causing more of this! </li></ul></ul></ul><ul><ul><ul><li>Inherently, some business logic bleeds to the client-side javascript, but for debugging, patching, re-use and IP protection this should be mitigated as much as possible </li></ul></ul></ul><ul><ul><li>AJAX & DHTML tied at the hip </li></ul></ul><ul><ul><ul><li>… and tools to debug javascript not yet as robust </li></ul></ul></ul><ul><ul><ul><li>… and js and CSS implemented differently in different browsers </li></ul></ul></ul><ul><ul><ul><li>… and with Firefox, Opera, Safari, etc… the post-Netscape world is not all IE anymore – so plan development & testing time accordingly </li></ul></ul></ul>
  20. 20. Other Considerations (your CIO & Legal will thank you!!!) <ul><li>If using Open Source libraries for AJAX and/or DHTML </li></ul><ul><ul><li>Understand nature of OS license (GPL vs. LGPL) </li></ul></ul><ul><ul><li>Evaluate source of code </li></ul></ul><ul><ul><ul><li>Reputation </li></ul></ul></ul><ul><ul><ul><li>Private individual or company? Public or private? </li></ul></ul></ul><ul><ul><li>Evaluate nature of code </li></ul></ul><ul><ul><ul><li>Available how long? </li></ul></ul></ul><ul><ul><ul><li>Number of available alternatives </li></ul></ul></ul><ul><ul><ul><li>Community – size, feedback, etc. </li></ul></ul></ul>
  21. 21. Resources <ul><li>AppExchange Developer Network (ADN) </li></ul><ul><ul><li>Comprehensive web site for AppExchange Developers </li></ul></ul><ul><ul><li>Documentation & Samples (API, AJAX) </li></ul></ul><ul><ul><li>Developer community forum </li></ul></ul><ul><ul><li> </li></ul></ul><ul><li>AppExchange Developer Support (ADS) </li></ul><ul><ul><li>Per-incident, code-level support for developers creating solutions on the AppExchange platform </li></ul></ul><ul><ul><li>Support for Custom apps, Custom integrations, S-Controls </li></ul></ul><ul><ul><li>4 hour response time for logged cases </li></ul></ul><ul><ul><li>More info: </li></ul></ul>
  22. 22. Resources, cont’d <ul><li>Creating On-Demand Applications with AppExchange </li></ul><ul><ul><li> publication </li></ul></ul><ul><ul><li>Illustrates technologies and concepts required to develop AppExchange apps </li></ul></ul><ul><li>AppExchange Laboratory (AppLab) </li></ul><ul><ul><li>5-day Hands-On Instructor Led Course </li></ul></ul><ul><ul><li>Instruction for how to build, deploy, and install native and composite AppExchange apps </li></ul></ul><ul><ul><li>For Developers, IT Managers and Power Users </li></ul></ul><ul><ul><li>More info and to register: </li></ul></ul>
  23. 23. Session Feedback Let us know how we’re doing! <ul><li>Please score the session from 5 to 1 (5=excellent,1=needs improvement) on the following categories: </li></ul><ul><ul><li>Overall rating of the session </li></ul></ul><ul><ul><li>Quality of content </li></ul></ul><ul><ul><li>Strength of presentation delivery </li></ul></ul><ul><ul><li>Relevance of the session to your organization </li></ul></ul>Save time! Use your cell phone or mobile device to send Feedback via SMS/Text Messaging! Send a message to 26335 In the message body: Session 245, #### For example, “ Session 123, 5555 ” Session ID: 245 Session ID # Scores for 4 categories SMS Voting powered by: