08 July 2017

SOAP VS REST

I got blind sighted recently when I was asked to explain SOAP vs REST.  Even though I have been programming them for ages, nothing was coming out of my mouth.  So here I am reproducing what I think is a really good answer.

REST(REpresentational State Transfer)
REST is an architectural style. It doesn’t define so many standards like SOAP. REST is for are exposing a public API over the internet to handle CRUD operations on data. REST is focused on accessing named resources through a single consistent interface.
SOAP(Simple Object Access Protocol)
SOAP brings it’s own protocol and focuses on exposing pieces of application logic (not data) as services. SOAP exposes operations. SOAP is focused on accessing named operations, each implement some business logic through different interfaces. Though SOAP is commonly referred to as web services this is a misnomer. SOAP has very little if anything to do with the Web. REST provides true Web services based on URIs and HTTP.
Why Rest?
  • Since REST uses standard HTTP it is much simpler in just about ever way.
  • REST permits many different data formats where as SOAP only permits XML.
  • REST allows better support for browser clients due to it’s support for JSON.
  • REST has better performance and scalability. REST reads can be cached, SOAP based reads cannot be cached.
  • If security is not a major concern and we have limited resources. Or we want to create an API that will be easily used by other developers publicly then we should go with REST web services.
Why SOAP?
  • WS-Security: While SOAP supports SSL (just like REST) it also supports WS-Security which adds some enterprise security features.
  • WS-AtomicTransaction: Need ACID Transactions over a service, you’re going to need SOAP.
  • WS-ReliableMessaging: Rest doesn’t have a standard messaging system and expects clients to deal with communication failures by retrying.
  • SOAP is highly secure as it defines its own security.
  • If the security is a major concern and the resources are not limited then we should use SOAP web services. Like if we are creating a web service for banking related work then we should go with SOAP as here high security is needed.

This is how you do Agile software development :)

18 June 2017

Access html elements in the same table row using jQuery

   <table>  
     <tr>  
       <td>Mary</td>  
       <td><div id="parentTimer"></div></td>  
       <td id="td">  
         <button id="btnStart" type="button" onclick="handleStart(event, this);">Start</button>  
         <input id="inputValue" value="Test" />  
       </td>  
     </tr>  
   </table>  
   <script>  
     function handleStart(event, sender)  
     {  
       var $row = $(sender).parents('tr');  
       var desc = $row.find('#inputValue').val();  
       var div = $row.find('#parentTimer');  
       div.html('started');  
       alert(desc);  
     }  
   </script>  

16 June 2017

Seamless HTML page transition

With more and more complex HTML + CSS3 + jQuery page design these days, it is very easy to have clunky webpages which take a while to load, with components like jQuery tab controls display partially before they are formatted. A way to get around that is to display web pages after they are fully rendered.
 CSS:  
 <style>  
   html { visibility:hidden; } /*html is initially hidden*/  
   /*fade in effect*/  
   body {  
     opacity: 1;   
     transition: 1s opacity;  
   }  
   body.fade-out {  
     opacity: 0;  
     transition: none;  
   }  
 </style>  
 JavaScript  
 <script>  
 $(document).ready(function() {  
  /*show html after page load*/  
  document.getElementsByTagName("html")[0].style.visibility = "visible";  
 });  
 </script>  

11 December 2016

Resizable Div based on browser window height

Below is an example of how you can use jQuery to create a resizable div which will adjust to your browser height
 <html>  
 <head>  
   <script src="~/Scripts/jquery-1.10.2.min.js"></script>  
 </head>  
 <body>  
   <style>  
     #divResizeable {  
       background-color: orange;  
       width: 100%;  
       height: 200px;  
       min-height :200px;  
     }  
   </style>  
   <div id="divResizeable">  
   </div>  
   <script>  
     $(document).ready(function () {  
       ResizeEvent();  
     });  
     window.onresize = function (event) {  
       ResizeEvent();  
     }  
     function ResizeEvent() {  
       dh = $(window).height() - 200;  
       $("#divResizeable").css({ "height": dh + "px" });  
     }  
   </script>  
 </body>  
 </html>  

10 November 2016

HTML Table as Div

Below illustrates how we can use Div to display table content. Essentially just use css clear:left as the beginning of each row and css float:left for table cell
@using WebApplication2.Models
@model Product[]
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
</head>

<body>
    <style>
        .body{
            font-family:Tahoma;
            font-size:10pt;
        }
        .TableLabel {
            width: 200px;
            min-width: 200px;
            max-width: 200px;
            background-color:powderblue;
        }
        .TableContent {
            width: 200px;
            min-width: 200px;
            max-width: 200px;
            background-color:lightgreen;
        }
        .DivRow
        {
           clear:left;
           width:400px;
        }
        .DivCellLabel{
            float:left;
            width:200px;
            background-color:powderblue;
        }
        .DivCellContent{
            float:left;
            width:200px;
            background-color:lightgreen;
        }
    </style>
    <div>
        <table cellpadding="0" cellspacing="0">
                @foreach (Product p in Model)
                {
                    <tr>
                        <td class="TableLabel" width="200px">@p.ProductCode</td>
                        <td class="TableContent" width="200px">@p.ProductName</td>
                    </tr>
                }
        </table>
    </div>
    <hr />
    <div>
        @foreach(Product p in Model)
        {
            <div class="DivRow">
                <div class="DivCellLabel">@p.ProductCode</div>
                <div class="DivCellContent">@p.ProductName</div>
            </div>
        }
    </div>
</body>
</html>

26 October 2016

How to put in a where condition / filter in your dataset in Crystal Report

If you are like me, a predominantly a Reporting Services developer, you will find Crystal Report a little awkward.

For example, finding the datasource a Crystal report refer to is easy.  Where the filter condition is on the other hand, is not always obvious if you are used to SSRS.

It is apparently in the Report menu under formula workshop.