Blog Home  Sign In RSS 2.0 Atom 1.0 CDF  

  def Softwaremaker() :
         return "William Tay", "<Challenging Conventions />"

  knownType_Serialize, about = Softwaremaker()
 

 Monday, February 28, 2005

I was just alerted by Julie about the availability of WSE 2.0 SP3. I must say, she has got her eyes and ears on the ground. Any new releases in some hidden corner, bet on her to find it first.

However, I am going to give this a pass. I believe it is just a version with bug fixes and patches and probably, better documentation. Microsoft BizTalk Server 2004 is keeping me fairly busy for the moment so I will just sit tight and wait for WSE 3.0 followed by Indigo

[AUTHOR UPDATE]: The ReadMe for WSE2SP3 is found here. It is a very targeted fix covering stress, security and perf issues

Monday, February 28, 2005 2:36:51 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer  Comments [1]
  • Blog reactions

  • What is happening to our PROFESSIONAL tagline in our Singapore Professional DotNet Usergroup ?

    We are getting very strange new languages asking for help and even worse (?), people like these feel so natural about it and some others do not hesitate to defend and ask everyone else to try to find time to understand it as it is the way to go (?)

    I take the liberty to Ctrl-C and Ctrl-V some snippets here. I hope Douglas Adams of the Hitch Hiker's Guide to the Galaxy (Wierd Science - The Babel Fish) get me a Babel Fish soon.

    hi every 1
    i am new to sql server and i dint noe how to let the server start to run on my PC
    can some 1 direct mi how to do that
    another qn i had is how to set data i wanted to the database similar to using microsoft access database
    can some1 direct mi too
    thanz alot

     
    =============================================

    Anyone here tot/dream of  a 'Tech/IT' startup or already doin it?
    anyone wanna discuss issues pertaining to these?

    Eg
    1) idea
    wat kinda of business wud u be interested in?
    wat business do u think has potential?
    wat do u think is hot currently ? or wil be hot in the next few yrs ?

    well... mayb not jus local .. consider goin global as well..
    anything under the sun on tech startups....

    ok...let me start....1st....
    since im currently preparing for a possible startup...

    well...i feel one critical issue is...
    finding/assembling the core team of people...why?
    a) its hard to find partner who is willing to commit, has simliar goals n willing to sacrifice
    i believe nothing great can b achieved wo sacrifice.. eg personal life, lower income or
     no income for sometime, etc etc

    haa... im also like tat... working at irregular hours...
    all my past jobs r flexi hours.... or rather...
    my past bosses had accept flexi hours arrangement w me...
    always late to reach office...n work til late at night...when everyone had left...

    i like ur component based idea... i guess... one way is to properly architect a certain
    project, n sub-out/assign the different modules/components to freelancers/subcontracters..
    however... i guess it also depends on the nature of the project as eg hw-sw linked
    projects r difficult to 'componentised'..

    hmm... n i guess.. theres also the integration difficulty n answerables n expertise in architect...
    i can guess why most coy avoid these since
    a) they can make a subcontractor answer more easily to whole project than a component
    b) let the subcontractors handle integration issues
    c) perhaps the coy do not hav enuf expertise in architecting complex projects n so
    sub out whole project n let sub contractors do the designing...

    however , if a coy has its own architect n intergation engineers...
    component-based contracts wud b viable..

    agree... complementing skills r hard to find indeed...
    n one thing i feel abt knowing people thru networks...is tt u dunno them enuf...
    ...unlik frens or former colleagues...
    well... there is certainly some risk + give n take...
    we all know or hav heard how political things can get in any startup bussines...
    even w frens...it may b tricky at times...
    perhaps its all parts n parcels...of running a bussines...n learning...

    i feel killer app n business acumen is not enuf...
    or rather.. its the beginning....
    the execution is when core team players come in...
    need diff skillsets... such as marketing/sales, tech skills, managment, etc etc...
    even tech skills alone.. alreadi need diff skillsets if it involves diff disciplines...

    cash flow problem....hia....tats where investros come in...
    but i guess... in startups... theres lots of 'make do' situations n compromising....
    eg using free/cheap tools instead of full-fledge ones...

    how abt ideas on bussiness?

    infact... im jus interested to hear the pt of views from IT people...
    as im from embedded sw background... really know nuts abt  IT industry...
    my ideas r often related to hardware products...

    for eg... rite now... i see opportunities in
    -providing middlewares
    -providing reference designs
    -designing products
    based on some in 'Emerging Technology/area'

    Eg of emerging tech/area
    -wifi-n, wimax, zigbee, wireless usb
    -homenetwork, homeautomation
    -securities industry : eg survillence, biometrics
    (i see tat video survillience is under goin a 'generation' change stage... which is an opportunity...jus lik 2G->3G)
    -n even dsp areas...(theres been lots of developement lately in the industry)
    -n voip etc etc...

    yeah... n the problem w emerging tech is tat... u need to hit the market at the rite time
    - too early n u hav to b able to sustain cash flow...
     thou u hav more time to 'maturiese' ur ip n market ur expertise...
    - too late u wil hav less chances...

    moreover... i feel there w be more 'convergence' betw embedded n IT services...
    eg video-on-demand...etc etc... im sure there wil b more to b discovered...

    how abt IT side??? really dunno much abt IT...

    hahaa...
    i tot the short hand i use r alreadi the common ones...unlik other local forums...really

    well... if there is another person who complain abt my short hand... than i wil try harder...
    cos i had found it natural n quick to write in this way...

    if my grammer n vocab incorrect... its due to my poor command of the language...
    so pls pardon me on tat... cos i use too much machine langauges...haa...jus joking...

    =============================================

    ah..the 'weight thing'.... well personally im not so concern over such things in forum...
    but thx...i wil take note of tt...

    apologies for giving u guys dazy eyes

    Monday, February 28, 2005 12:55:30 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer  Comments [1]
  • Blog reactions

  •  Sunday, February 27, 2005

    (W3C) SOAP is very like to XML-RPC and not the other way around.

    It works by marshaling procedure calls over HTTP as XML documents. However, one major difference is that SOAP allows the documents to be treated literally as --- well, Documents.

    As you will be able to see from the angle-brackets snippets below -- you will notice some major differences between SOAP and XML-RPC. One major difference you will notice right away is that XML-RPC doesnt have any of the XML Namespaces, doesnt support XML Schemas and has a very definite set of types and primitives. One of the major improvements of SOAP 1.2 over its preceding version is the removal of Section 5 Encoding, which, just like XML-RPC, is to improve the room for interoperablity by allowing people and parties to agree by having lesser opportunities for people to disagree (tm). I wont go much into details here. Eric Kidd has built up a fantastic repository about XML-RPC here.

    As I have mentioned before, I had done some work before revolving around XML-RPC. In fact, I still see major operations out there still communicating via XML-RPC. While I love SOAP, XML-RPC still does get the job done if you wanted simplicity and faster interoperability. I am however, willing to bet that, as distributed computing really pushes the realm of distribution and enterprise requirements of Security, Transactions and Reliability becomes more deeply rooted in the message, SOAP will become the defacto standard in message transmission. In the same tone of distribution, I do still remember that while doing XML-RPC, while some people and companies will argue that it is a loose-coupled concept, it sure doesnt apply to the parties involved in the transactions and invocations. We spent unproductive hours on the phone and meeting tables arguing what should be sent over and many more over what it is supposed to look like on the wire. If weapons were allowed then, I am sure we would have reached an agreement faster. Of course, the weapons I meant here were things like the Colt .45 Pistol and the S&W .460 Magnum. Because, tools were more primitive then, we actually had to write every single element out before it goes onto the wire. Serialization was unheard of then.

    I have built 3 simple Service Operations which is then broken into SOAP and XML-RPC Formats. The 3 methods and their I/Os are simple but they should be able to illustrate the different signatures and return types.

    Function HelloWorld() As String...

    Function SumAndDiff(ByVal x As Integer, ByVal y As Integer) As SumAndDiffStruc...

    Function RetSoftwareDevelopers() As SoftwareDeveloper()...

    These functions are then decorated with [XmlRpcMethod()] and [SoapMethod()] to distinguish themselves to their operation and binding approaches.

    Let us see how each of them is represented differently on the wire. I will show the XML-RPC format first then followed by SOAP:

    <methodCall>
      <methodName>HelloWorld</methodName>
      <params />
    </methodCall>
    <methodResponse>
      <params>
        <param>
          <value>
            <string>Hello World</string>
          </value>
        </param>
      </params>
    </methodResponse>
    <methodCall>
      <methodName>SumAndDiff</methodName>
      <params>
        <param>
          <value>
            <i4>15</i4>
          </value>
        </param>
        <param>
          <value>
            <i4>10</i4>
          </value>
        </param>
      </params>
    </methodCall>
    <methodResponse>
      <params>
        <param>
          <value>
            <struct>
              <member>
                <name>sum</name>
                <value>
                  <i4>25</i4>
                </value>
              </member>
              <member>
                <name>diff</name>
                <value>
                  <i4>5</i4>
                </value>
              </member>
            </struct>
          </value>
        </param>
      </params>
    </methodResponse>
    <methodCall>
      <methodName>RetSoftwareDevelopers</methodName>
      <params />
    </methodCall>
    <methodResponse>
      <params>
        <param>
          <value>
            <array>
              <data>
                <value>
                  <struct>
                    <member>
                      <name>Name</name>
                      <value>
                        <string>William Tay</string>
                      </value>
                    </member>
                    <member>
                      <name>Age</name>
                      <value>
                        <i4>30</i4>
                      </value>
                    </member>
                    <member>
                      <name>Profile</name>
                      <value>
                        <struct>
                          <member>
                            <name>Experience</name>
                            <value>
                              <i4>10</i4>
                            </value>
                          </member>
                          <member>
                            <name>Plaform</name>
                            <value>
                              <string>Microsoft .NET Technologies</string>
                            </value>
                          </member>
                        </struct>
                      </value>
                    </member>
                  </struct>
                </value>
                <value>
                  <struct>
                    <member>
                      <name>Name</name>
                      <value>
                        <string>ABC DEF GHI</string>
                      </value>
                    </member>
                    <member>
                      <name>Age</name>
                      <value>
                        <i4>50</i4>
                      </value>
                    </member>
                    <member>
                      <name>Profile</name>
                      <value>
                        <struct>
                          <member>
                            <name>Experience</name>
                            <value>
                              <i4>10</i4>
                            </value>
                          </member>
                          <member>
                            <name>Plaform</name>
                            <value>
                              <string>Microsoft .NET Technologies</string>
                            </value>
                          </member>
                        </struct>
                      </value>
                    </member>
                  </struct>
                </value>
              </data>
            </array>
          </value>
        </param>
      </params>
    </methodResponse>

    Below are the respective SOAP Representations:

    <soap:Envelope xmlns:soap="..." xmlns:xsi="..." xmlns:xsd="...">
      <soap:Body>
        <HelloWorld xmlns="..." />
      </soap:Body>
    </soap:Envelope>
    <soap:Envelope xmlns:soap="..." xmlns:xsi="..." xmlns:xsd="...">
      <soap:Body>
        <HelloWorldResponse xmlns="...">
          <HelloWorldResult>Hello World</HelloWorldResult>
        </HelloWorldResponse>
      </soap:Body>
    </soap:Envelope>
    <soap:Envelope xmlns:soap="..." xmlns:xsi="..." xmlns:xsd="...">
      <soap:Body>
        <SumAndDiff xmlns="...">
          <x>15</x>
          <y>10</y>
        </SumAndDiff>
      </soap:Body>
    </soap:Envelope>
    <soap:Envelope xmlns:soap="..." xmlns:xsi="..." xmlns:xsd="...">
      <soap:Body>
        <SumAndDiffResponse xmlns="...">
          <SumAndDiffResult>
            <sum>25</sum>
            <diff>5</diff>
          </SumAndDiffResult>
        </SumAndDiffResponse>
      </soap:Body>
    </soap:Envelope>
    <soap:Envelope xmlns:soap="..." xmlns:xsi="..." xmlns:xsd="...">
      <soap:Body>
        <RetSoftwareDevelopers xmlns="..." />
      </soap:Body>
    </soap:Envelope>
    <soap:Envelope xmlns:soap="..." xmlns:xsi="..." xmlns:xsd="...">
      <soap:Body>
        <RetSoftwareDevelopersResponse xmlns="...">
          <RetSoftwareDevelopersResult>
            <SoftwareDeveloper>
              <Name>William Tay</Name>
              <Age>30</Age>
              <Profile>
                <Experience>10</Experience>
                <Plaform>Microsoft .NET Technologies</Plaform>
              </Profile>
            </SoftwareDeveloper>
            <SoftwareDeveloper>
              <Name>ABC DEF GHI</Name>
              <Age>50</Age>
              <Profile>
                <Experience>10</Experience>
                <Plaform>Microsoft .NET Technologies</Plaform>
              </Profile>
            </SoftwareDeveloper>
          </RetSoftwareDevelopersResult>
        </RetSoftwareDevelopersResponse>
      </soap:Body>
    </soap:Envelope>

    As you would have noticed by now, XML-RPC has a fixed set of types and abstractions such as methodCall, methodName, params, value, struct, etc and of course, its response member-name-value pair. Like its name suggests, the param elements do represent each a parameter and the encapsulating structure does look like an object-instance representation. SOAP, on the other hand, makes heavy use of XML Namespaces and Schemas to validate how and what the message should look like.

    We are, however, moving away from this RPC behaviour of transmission. This is a good thing as SOAP, while requiring much more engineering complexity, does offer much more extensibility in terms of message exchange patterns and extensible headers. Even the RPC-Encoding RPC-ish style messages that are generated by the SOAP toolkits of a couple of years back is making way for Document-Literal as the default style today. You take the messages "AS-IS" and how you mapped them into your platform native language and what you do with them is left to the implementation details of each platform. The XML schemas act as a way for you to tell what is legal or illegal as IO to your service.

    Please note that I am using Charles Cook's fantastic XML-RPC .NET for my XML-RPC implementation here. Another way for you NOT to re-invent the wheel is to use Simon Fell's PocketXMLRPC. I am a huge fan of Simon Fell's SOAP Tools and I am sure this is a winner as well.

    Sunday, February 27, 2005 1:18:01 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer  Comments [0]
  • Blog reactions

  •  Saturday, February 26, 2005

    If you built it well and right, you only have to built it once tm

    Saturday, February 26, 2005 1:49:10 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer  Comments [0]
  • Blog reactions

  •  Friday, February 25, 2005

    Had a great session today with Robert McDowell, Vice President at MSFT Corp of the Information Worker Group. It was stated in his bio that he has 35 years of IT experience.

    WOW ! I didnt even know IT is that old...He also started the Microsoft Consultancy Services, which I think, is a great feat in itself.

    He gave the managed partners a great candid insight into what Microsoft can do and will do in the upcoming future wrt to business productivity esp in the area of the Information Worker. He is a great presenter and is one of those guys who can speak insightfully for 60 mins without a single powerpoint slide.

    He then handed out autographed copies of his book "In Search of Business Value" after the presentation. Excellent...I cannot wait to read his book.

    Thursday, February 24, 2005 9:29:17 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer  Comments [0]
  • Blog reactions

  •  Tuesday, February 22, 2005

    In my recent tour of the local university campuses giving talks and presentations, I noticed that most of the students find my talks hard to digest and understand. This is not surprising since I have always been known to be a server guy and not much of a tools person. Actually I used to be a client-tools person BUT have since spent the last year or so dabbling in distributed computing protocols.

    This is not just associated with students, BUT some of the younger folks that I had a chance to engage as well. This goes really far to show how old I am. It is very hard to extol the benefits of XML/SOAP and Services if the younger folks dont understand and appreciate the history of COM, MTS. Pretty soon, when Indigo matures from the wild, technologies like COM+ and .NET Remoting will become legacy as well.

    Everyone who grew up in the .NET era never knew about DLL Hell in deployment. Those things I need to do at 12 midnight when everyone is asleep and I am given the safe-clear command to do a regsvr32 for a 10KB Win32 COM DLL and then reboot the servers after...and I have not even mentioned about those nightmarish versioning problems when someone else's DLL is installed over mine....

    Well, it is good for those folks just like it was good for me not to have gone through Yourdon's Structured Programming era. Now thinking about it made me realize that maybe I would have appreciated object-abstractions better if I had.

    Anyways, since I was very focused on distributed computing protocos and XML SOAP Services in my talks and since the audience were mainly younger students who had no professional experience, I tend not to dabble too deep into BEST PRACTICES in Deployments, Versioning and Interoperability scenarios. I am sure most of them would rather poke a needle into their eye than to watch me write angle brackets, do some xsd typing, and then import namespaces before binding them all together in a WSDL file. Therefore, I usually give a more general broader overview of the industry, how come we have what we have today and what are we getting tomorrow. The history part usually sits well with them and so most of the questions that came up usually relates to that.

    Since most of their curriculum and labworks never went back to technologies that were more than 2 years old, I do find it useful sometimes to show them how COM, MTS and DCOM was done last time. That usually catches their attention although I think it was more of an amusement to them more than anything else.

    "Now, see this black thingy, we call them vinyl in our days and we put this needle-like shaped thing on it so that music can be piped out from this trumpet-like thingy...and we have to put it carefully on the edges so that it starts from the first tune...and if we want to repeat the same tune again, we have to sit up, go back to the machine, lift the needle up, squint our eyes on the vinyl so we can pick out the correct sequence of the groove on the vinyl that the song starts on and put it carkefully and slowly on that groove and VOILA, we have replay....What ? Oh, we have to do that everytime we want to replay that song...Whats that ? Shuffle, Random --- What's that ?"

    So, running DCOMCNFG.EXE and OLEView is not something I would do too often just to get a chuckle from the student audience

    However, I promise some of them I would blog about XML-RPC in relation to (W3C) SOAP and that is what I intend to do. There are still more than a few implementations out there in the real-world that are happily humming along with XML-RPC. I had done a couple of them before using MS SOAP Toolkit to XML-RPC with an apache serv