Qu'est-ce qui cause une différence entre une URL de service Web et un espace de noms?
J'ai un ASP.NET projet web qui contient un Service Web. Quand je lance le service qu'il m'amène vers une page affichant toutes les méthodes qui sont exposées, à l'aide d'une URL semblable à http://api.example.com/game/service.asmx
.
Dans le code du Service Web il existe des méthodes qui ont les attributs suivants:
[WebService(Namespace = "http://webservices.example.com/GameServices/Game1")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Game1 : System.Web.Services.WebService
{
//code
}
Je suis un peu confus quant à pourquoi l'espace de noms sur une classe avec le webService attribut est différente pour le chemin d'accès au service web. Où est l'espace de nom en venir? Est-il juste?
source d'informationauteur chobo
Vous devez vous connecter pour publier un commentaire.
Oui, c'est fait.
Cela peut sembler idiot, mais c'est vrai. L'espace de noms spécifié, dans votre code, sera utilisé sur les documents XML échangés que des demandes et des réponses pour le service web. Si vous mettez un réseau de trace du programme sur le câble, vous pouvez voir ces noms chaînes utilisées dans les messages d'avant en arrière. Dans les services web, Votre application n'a pas besoin de se préoccuper de l'espace de noms, le plus souvent. Les services web de la bibliothèque prend habituellement soin de cela pour vous.
L'espace de noms n'est pas nécessaire d'être une URL HTTP, bien souvent, les gens utilisent les Url HTTP. Cela peut être la source de la plupart de la confusion de votre part.
L'IETF Recommandation pour les espaces de noms XML suggère qu'il devrait être un URImais qui URI n'a pas besoin d'être un URI HTTP, et en fait, il n'a pas besoin d'avoir des "protocole de réseau" qui y est attaché.
L'espace de noms est... une chaîne de caractères. Il est utilisé comme un moyen simple de qualifier l'information dans un schéma XML. Pensez-y comme le nom d'une personne. Vous savez peut-être plusieurs personnes nommées "Chris". Vous de les distinguer par leurs noms de famille.
De même, le nom de l'élément "id" peut être utilisé dans de nombreux différents documents XML et le schéma. Les Applications (et les gens trop) peut faire la distinction entre les différents éléments qui utilisent le qname "id" via leur espace de noms xml.
En règle générale, un "architecte de l'information" va spécifier l'espace de noms XML d'un document ou d'un service web comme un URI qui est hiérarchique, unique à l'organisme propriétaire, et pertinent pour le sens de l'information dans le document XML. (Dans une petite organisation "info" architecte " est juste un développeur.) Par exemple http://mycompany.com/services/2013/customer pourrait être un espace de noms pour la Société, créée en 2013 et sur les services, et plus précisément le service à la clientèle.
À mon avis, il n'y a pas vraiment de raison d'utiliser
http://
que le régime de l'URI de l'espace de noms XML, sauf si vous prévoyez de faire de la documentation disponible à l'adresse HTTP URI. Vous pourriez tout aussi bien utiliser urn:mycompany.com/services/2013/customer comme l'espace de noms XML. En fait, il pourrait être mieux, car il indique que c'est juste un nom, ce n'est pas un localisateur. (pas une adresse web).J'utilise normalement une URNE, avec le préfixe
urn:
que le régime, pour indiquer que l'espace de noms est simplement un nom, un uniquifier.MODIFIER
Il y a des règles pour la structure de Les urnes. Le format de base est:
...où le NID est un id d'espace de noms, l'un des un ensemble de spécial, approuvé chaînes et NSS est un espace de noms spécifique à la chaîne. La liste des NIDs comprend isbn, uuid, l'ietf, et environ 20 autres - chacun a un sens précis défini par une nette IETF RFC.
Malgré les règles sur les NIDs, beaucoup de gens n'ont tout simplement pas la peine de se conformer, et de pièce de monnaie de leur propre Urnes à l'aide de leur nom de domaine à la place du NID. par exemple, "mycompany.com". (C'est ce que je fais souvent).
Alors c'est à vous de décider comment vous voulez qualifier le nom de plus. Vous pouvez spécifier des "services", pour indiquer un service web. Certaines personnes utilisent le mois et l'année, le service a été lancé dans un espace de noms. Cela vous permet de mettre à jour le service, et l'utilisation d'une date différente pour distinguer entre les différents éléments. Un exemple d'espace de noms XML suivant cette convention de nommage peut être:
C'est ce que RFC 2141 appels invalide "URNE" parce que je n'ai pas enregistré le NID. Mais c'est mon but. C'est une étape simple pour la transformer en "valide URNE" par l'application de la fdc NID, défini par RFC 4198.
Voir comment beaucoup mieux que c'est?
En fin de compte, la plupart des gens il suffit de créer leur propre convention de nommage, quelque chose qui fait sens pour leurs utilisations, pour les internes et des partenaires de consommateurs de données XML.
En bref, oui les espaces de noms sont faits. Ils sont tout simplement moyen pour distinguer un document à partir d'un autre. Il est plus courant d'utiliser une structure d'URL dans votre espace de noms parce que ce sont généralement unique.
L'espace de noms peut être n'importe quelle valeur que vous attribuez. Je pense qu'il est considéré comme la meilleure pratique pour faire de l'espace de noms la même que l'adresse URL de service.