1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
|
$Id: TODO,v 1.211.2.1 2006/04/24 20:53:09 obry Exp $
Here a some notes about things to fix, ideas and potential features to be
implemented:
- Correctly handle all Date/Time format, there is 3 of them:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
(Nice to see that when designing an RFC they are considering the C way of
doing things, seems completly awkward to me :)
Actually only the first format is supported.
- Implement multi-server with a dispatcher of request to build server which
must support a lot of requests. Could be using GLADE or a standard
redirector of request (using HTTP redirection).
- Implement a Proxy server protocol.
- Change server parameters via the admin page (like the maximum number of
connections, server name, active session, upload path...).
- Thread Pool management (dynamically adding lines if needed...)
- Make the Session management a separate partition to be able to share the
session data across the network. Something needed to do load balancing into
a Web Farm.
- Would be nice to have an ActiveX component to support Server Push on
Internet Explorer.
- Would be nice to have a very light version of the Web Server - LAWS for
Light Ada Web Server - this will be a nice solution for the communication
sub-system. A LAWS would have only one task, no file-upload, not all the
mechanisms to handle the concurrency...
- Cookie for the session is set for the whole site (path=/), would be nice to
have a way to configure that.
- Support Session ID encoded into the URL to avoid use of cookie. Such a
session ID will only be valid for the current session of course.
- Build a Web based file-system framework (AWSFS). Using GET/PUT to handle
variables, inherited from a specific type, whose value is stored on an AWS
server. The value will be automatically retrieved at initialization time and
stored back into the AWSFS at finalization. These steps should be completely
transparent to users.
- When removing the session (AWS.Session.Delete) it would be good to also
remove the cookie on the client side.
- Merge the message handling on the server and client side. Right now both are
using different implementations.
- AWS.Client support a single cookie. This is a bad limitation and must be
fixed. It must also handle properly the case where a cookie value is
updated.
- Add support for more XML Schema types
See "C Datatypes and Facets" in XML Schema Part 2 Datatypes.
date, time, xsd:hexBinary, decimal
decimal is certainly a bit difficult to support, we need an arbitrary
precision package.
nonNegativeInteger should map to Ada Natural.
positiveInteger should map to Ada Positive.
- Add support for array with multiple dimensions
<complexType name="ArrayOfString2D">
<complexContent>
<restriction base="SOAP-ENC:Array">
<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[,]" />
</restriction>
</complexContent>
</complexType>
- Add support for all kind of WSDL array definition, current supported form
is:
<complexType name="ArrayOfString">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
</restriction>
</complexContent>
</complexType>
There is 4 other forms:
<complexType name='ArrayOfString'>
<sequence>
<element name='name' type='xsd:string' maxOccurs='unbounded'/>
</sequence>
</complexType>
<complexType name='ArrayOfString'>
<complexContent>
<restriction base='SOAP-ENC:Array'>
<sequence>
<element name='name' type='xsd:String' maxOccurs='unbounded'/>
</sequence>
</restriction>
</complexContent>
</complexType>
<element name='ArrayOfString'>
<complexType>
<element name='name' type='xsd:String' maxOccurs='unbounded'/>
</complexType>
</element>
<element name='ArrayOfString'>
<complexType>
<sequence>
<element name='name' type='xsd:String' maxOccurs='unbounded'/>
</sequence>
</complexType>
</element>
- Add support for transient page on-disk after a certain amount of time.
Is that a good idea ?
- Add SMTP authentication support
- Add support for compressed data in the memory stream on the client side.
User should be able to choose uncompressing data at the read stage.
This enhancement will reduce the memory used by the data.
This feature should be used when user reads data from memory stream
partially. It is better for big compressed data, but worse for relatively
small compressed data, when user want to read it at once.
- Add client's compress/decompress support.
- Add more certificate information in AWS.Net.SSL.Certificate.
- Support socket timeout options (send and receive timeout) at the OS
level on the server side. Right now a task is doing the job.
Note that socket timeout is already used on the client side.
- Would be nice to support HTTPS Server response that makes the browser (IE
can do that) to ask for a certificate. This client certificate can then be
used to authenticate the user at the other side. This certificate based
authentication is more secure than the standard user/password only.
- Add WSDL support for SOAP messages with attachments.
- Would be nice to provides a file upload support via a socket. This would
avoid writing to the disk or memory. The end-user will be responsible to do
whatever is needed with the uploaded file. If file upload is not permitted
the file will never be transmitted.
- Add a routine to sort a vector tag either in the API or as a table
attribute:
@@TABLE@@ @@SORT:VAR@@
- Add a routine to do a synchronized sort on multiple vector tag (from a
Translate_Set for example.
- Add a way to skip empty values for matrix in a table
@@TABLE@@ 1,1
@@TABLE@@ 1,2
@_M_@ <- empty line because m(1) is smaller than m(2)
@@END_TABLE@@ 2,1
@@END_TABLE@@ 2,2
2,3
This is quite tricky to handle while parsing, one idea would be to rewrite
the table content by adding a conditional for all tag variable inside the
table. This is a kind of an expander pass.
- Add a way to have structured (as record) templates variables. It will be
easier and cleaner than to have multiple variables that must be
synchronized. This needs some more design as it is a tricky issue.
- Detect long running download on the server side and put download
socket/stream pair into the socket set in the download task.
- Remove use of specific OS_Lib implementations and provide a single
implementation based on standard Ada.Directories.
Will be part of the move to Ada-05
- Revisit the AdaSockets support. Should we continue supporting this ?
It would certainly be easier to support only GNAT.Sockets and use the
selector facilities instead of the AWS's poll() support.
- Replace OpenSSL by GNUTLS library as this library is now stable.
=============== Point to fix/implement/review before next release (2.2)
|