Unfortunately, this client has no intention of using .NET 3.0 yet. They are just moving to .NET 2.0 from ColdFusion ..... this is already a bit step and at least, they are taking the means to have a good start.
Sebastien On 5/15/07, Paul Mehner <[EMAIL PROTECTED]> wrote:
FYI: The .net 3.0 WCF has the features described (no need to wait for 3.5 ). --Paul -----Original Message----- From: Discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Potter, Mark S. Sent: Tuesday, May 15, 2007 3:19 PM To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM Subject: Re: [ADVANCED-DOTNET] OT: Versionning of web services The WCF (windows communication foundation) in VS Studio "orcas" (.Net 3.5) has a new versioning concept for web services, breaking it into a service contract and a data contract. They also have a new interface called IDataExtender to handle data structure changes. You may want to take a look at that. -----Original Message----- From: Discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Sébastien Lorion Sent: Tuesday, May 15, 2007 5:20 PM To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM Subject: [ADVANCED-DOTNET] OT: Versionning of web services Kinda off-topic, but I would like to have some input on versionning issues with web services. Below is what I propose ... I would be happy to have your comments on that. I know .. sounds like reinventing the wheel, but it never hurt to re/validate our practices. Target namespace of the web service follows the template http://webservices.mySystem.myCompany.com/version/ where version is 1.0, 1.1, 2.0, etc. That means there is only one web service project per system, which in turn contains many services (.asmx) with many methods. Each version is a different and independant project. It may happen that 99% of the new project is a copy of the previous version, but in that case, I would seriously question the need of a new version. Each method takes a single parameter which is a structure and also return a structure, even if the structure has only one field. This is to allow adding parameters or results without breaking compatibility and/or having to create a new method. In the case of a new parameter, the method has to handle the case where clients will not pass any value for that parameter. The target namespace of those structures will be in the form http://webservices.mySystem.myCompany.com/version/method/ For example: [Serializable] [XmlType([Namespace]:=" http://webservices.humanResources.myCompany.com/1.0/searchEmployees/")] public struct SearchEmployeesRequest { public string FirstName; public string LastName; public DateTime? HiringDate; } [Serializable] [XmlType([Namespace]:=" http://webservices.humanResources.myCompany.com/1.0/searchEmployees/ <http:// webservices.humanresources.mycompany.com/1.0/searchEmployees/> ")] public struct SearchEmployeesResponse { public EmployeeCollection Employees; public bool TooManyResults; } In cases where one or more recordsets are returned, a separate method must be provided to get only the schema. public enum SearchEmployeesSchema { Employees // ... could add more over time } [WebMethod] public XmlSchema GetSchemaSearchEmployees(SearchEmployeesSchema schema) { // ... } Thanks ! -- Sébastien www.sebastienlorion.com =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com
-- Sébastien www.sebastienlorion.com