Re: [obix] Issues with 0.7 draft of standard

From
Brian Frank <>
Date
2005-04-20T03:23:35+00:00
ID
004401c54557$faa9caf0$2702a8c0@Brian
Thread
Re: [obix] Issues with 0.7 draft of standard
Toby,

 

The issues you raised are spurious 
- nothing has changed regarding the requirement to provide a SOAP/WSDL 
binding for oBIX.  Chapter 13 is tagged to cover the SOAP binding.  
The term REST is used as an architectural pattern which is fairly orthogonal to 
protocol bindings.   

 

Brian

 

  
----- Original Message ----- 

  
From: 
  Considine, Toby (Facilities Technology 
  Office) 

  
To: '' 
  

  
Cc: '' 
  

  
Sent: Tuesday, April 19, 2005 11:09 
  AM

  
Subject: [obix] Issues with 0.7 draft of 
  standard

  

  

  
I am very concerned about 
  direction the specification takes in v0.7, specifically retreating from SOAP 
  to REST. With this change, oBIX retreats entirely from being "Control 
  Interface for the Enterprise" to being "traditional control 
  protocol with angle brackets". This means that except for a few specialized 
  consultants, oBIX will become oblique to the enterprise developer. My sense 
  from talking to companies in the wider OASIS, whose votes will be required to 
  make oBIX an OASIS standard, is that if this direction persists, the oBIX 
  draft will fail to get OASIS votes, and thereby not be accepted as a 
  standard.

  
 

  
 

  
The charm of REST is, clearly, 
  its simplicity, and its similarity to the way things have always been done. To 
  the extent that a point service is all that we want, it is the simplest way to 
  get there. Clearly it is the easiest way to put "angle brackets in the control 
  stream". It fails, though in several important 
  ways:

  
 

  
1)    
  WSDL does not support REST, 
  either 1.1, 1.2, or 2.0.

  
2)    
  REST is not composable, breaking 
  one of the two basic principles of Web services

  
3)    
  REST supports no security 
  standard other than encryption. This means any security will have to rely on 
  either multiple calls to establish cookie-based security for session 
  management, or perhaps hard-coding those IP addresses an oBIX gateway is able 
  to communicate with. Because of (2) you can toss out such specs as 
  WS-Security, WS-Trust, WS-SecureConversation, WS-Policy, and WS-SAML. There is 
  no way to hold a Kerberos token inside REST. This will require oBIX to 
  implement its own security. These concerns will have to be implemented by the 
  provider at the application level.  HTTPS is *not* an answer to this. In essence, we 
  will have recreated the architectural problems of Johnson's NAEs and NIEs, 
  which had no security model and so retrteated to custom encryption DLL's to 
  cover up this fact.

  
4)    
  HTTPS does not encrypt the URL; 
  the entire action is included in the URL. While URL-based APIs are simple to 
  use, they have no defense against, for example, play-back 
  attacks.

  
5)    
  Enterprise 
  developer tools do not handle or support REST. Enterprise developers are tool users, at 
  least in all enterprises that reward provable code, predictable delivery 
  dates, team development, and programmer 
  productivity.

  
6)    
  REST is not transport agnostic 
  meaning that with this transition, we have eliminated all Message-Oriented 
  Middleware-based transport schemes, eliminating many major tools relied upon 
  in the enterprise environment.

  
7)    
  REST violates extensibility, 
  because REST parameters cannot distinguish between parts of the message that 
  the recipient "Must Understand" and parts that can be ignored - increasing the 
  demands on the developer whose application will have to implement these 
  features while reducing interoperability between 
  systems.

  
8)    
  The poorly understood 
  distinctions between XML and HTML, including case, Unicode overlaying, 
  escaping, et al. make URI-based API's prone to breaking and unpredictable 
  results.

  
9)    
  Without WSDL, there is no way to 
  define ad hoc discoverable interactions between systems. This means every 
  application can only be as good as the individual integrators up front 
  understanding of every component of the system; I had hoped this is what we 
  were getting away from with oBIX.

  
10)                       
  We will not be able to use 
  reliability standards such as WS-RX keeping oBIX from producing streams that 
  can handle life-safety issues (composability 
  again)

  
 

  
 

  
It can be argued that 
  large-scale REST applications do exist. It is true that you can use REST for 
  interactions with eBAY, Google, and Amazon. I must point out that every 
  developer interacting with these services is committed to developing a custom 
  interface with the one big player in their space. This works only 
  because:

  
 

  
    
information is 
    public and encryption/authentication are unnecessary; 
    
    
nothing terribly 
    bad happens if a message is lost or duplicated; 
    
there are few 
    demands for multi-part transaction management beyond what can be implemented 
    with HTTP sessions or cookies;  
    
There are no 
    requirements for any transport other than HTTP 
  

  
 

  
Each of these interfaces took a 
  strong focus on careful, standard, and particular business process, the type 
  of effort I have not sensed a lot of enthusiasm for w/i the TC. 
  

  
 

  
Web services toolkits are 
  oriented toward use cases that demand high-security, support for existing 
  enterprise messaging systems, message failure is not an option, and 
  industrial-strength transaction processing is assumed.  The REST approach 
  assumes that all these features are provided at the application level rather 
  than being provided by the infrastructure.  There are some variants of 
  REST for which it might be tolerable. It is a great way to easily access Read 
  Only points. It would be nice for an oBIX discoverable node to be able to 
  reference the stand-alone sensor across the hall. To me, this would be more 
  appropriately accomplished by something like XML-RPC, which fits better into 
  WSDL-2.

  
 

  
Overall, this is retreating from 
  the document-based transfer model of Web Services to the old-fashioned API. An 
  API method looks like

  
 

  
Function fnAPI( float par1, 
  string par2, date par3)

  
 

  
Each part of the API must be 
  known and understood by the end point. A Web Services method tends toward 
  something like

  
 

  
Function fnService( document 
  doc1)

  
 

  
In the WS-Interoperability spec 
  (http://www.ws-i.org/), this argument is summarized  in the WS-I Basic 
  Profile by specifying document/literal as the preferred style of 
  communication. RPC/literal is also supported but 
  deprecated.

  
 

  
 

  
This document-centric approach 
  is what gives services their power and flexibility. Different parts of the 
  document might be focused on business process, others on a whole set of 
  interactions, still others on defining a set of [subscription points]. An 
  identical document might be sent to multiple ERPs with different results, as 
  it may be successful, if indicated in the document, for an ERP to accept a 
  request that it only understands partially. Different parts of the document 
  may be marked "must understand"; others can be marked as optional. Any ERP 
  that understands the "must understand" part can accept the entire request. 
  This flexibility, which the enterprise expects, is tossed out entirely by the 
  move to REST.

  
 

  
Clearly, this is a contentious 
  matter outside the oBIX community and some research does reveal that REST does 
  have some strong partisans. There is some effort to support something 
  REST-like in future versions of WSDL. But these are only in edge-cases and we 
  shouldn't rely on edge-cases to build a standard. I feel we have mistaken 
  simplicity of mock-up for completeness of solution. Many of the readings on 
  REST vs. SOAP are strongly slanted one way or another. Members of the 
  committee that want to read some other perspectives may want to review the 
  following fairly balanced treatments:

  
 

  
http://www.webservices.org/index.php/ws/content/view/full/39565

  
 

  
http://www-128.ibm.com/developerworks/webservices/library/ws-soa-enter2/ 
  

  
 

  
http://www-128.ibm.com/developerworks/webservices/library/ws-samruby.html 
  

  
 

  
http://www.w3.org/TR/ws-arch/ 
  

  
 

  
A quick Google of SOAP and REST 
  will find many more contentious versions.

  
 

  
In short, if the charter of oBIX 
  is to bring Controls Systems to the Enterprise, it fails if it moves to 
  REST.  

  
 

  
tc

  
=================================================== 
  
Toby 
  Considine      ! "Do the right thing. It 
  will 
UNC Chapel 
  Hill     ! gratify some 
  people and 
Chapel 
  Hill, NC     
  ! astonish the 
  rest." 
Phone (919)962-9073 
  ! 
Fax (919)962-1102   
  !            
  --Mark Twain 
  
  
  ! 
===================================================