2011-01-13 5 views
0

Je suis particulièrement nouveau dans le développement de services Web. J'ai ce service Web existant que je dois refaire, car actuellement il ne semble pas fonctionner,Service Web par rapport au service Web de référence DLL

Le service Web a une référence à une classe DLL

<%@ WebService Language="C#" Class="MyClass"%> 

qui est tout le contenu ... et a un MyClass.dll situé dans un dossier bin

ce que je n'est mis la classe MyClass à l'intérieur du service Web lui-même ....

<%@ WebService Language="C#" Class="MyClass"%> 

using System; 
using System.IO; 
using System.Data; 
//... 

[GeneratedCodeAttribute("wsdl", "2.0.50727.42")] 
[WebServiceAttribute(Namespace = "http://service.search.lsc.slacker.com")] 
[WebServiceBindingAttribute(Name = "TLSCSoap22Binding", Namespace = "http://service.search.lsc.slacker.com")] 
public class MYClass: System.Web.Services.WebService 
{  
    //... 
} 

et il a fait le travail, testé toutes les fonctions et e Tout a fonctionné comme prévu.

Cependant, je dois voir toutes les conséquences avant de proposer cette solution, je pourrais avoir négligé les avantages de la référence à une dll au lieu

S'il vous plaît noter que je ne peux pas demander au développeur précédent pourquoi il a été encapsulé dans une DLL dossier et je sais pour un fait que cette DLL ne sera pas réutilisable par d'autres applications externes. C'était créé uniquement pour le service Web. Donc, ma question est la suivante: pourquoi l'ancien développeur a-t-il créé une DLL pour contenir la classe et être consommée par un service Web au lieu d'un simple service Web?

Répondre

1

L'intention originale du développeur était peut-être que la fonctionnalité soit répartie sur plusieurs DLL et que le service Web agisse comme la passerelle vers toutes les DLL.

+0

Nous mettons toutes les fonctionnalités dans les DLL et le service Web est seulement une façade qui sécurise et appelle les fonctionnalités requises dans la DLL. –

+0

Nous aussi, mais je crois comprendre que vous ne pouvez affecter qu'une DLL à une page de service Web. Est-il possible d'attribuer plusieurs DLL à une seule page? – pmartin

0

Si le développeur précédent a créé le service Web dans Visual Studio à l'aide de l'un des modèles de service Web prédéfinis, le modèle code-behind est la manière dont le projet aurait été structuré de façon standard.

Dans votre exemple, la page asmx d'origine ne fait pas référence à la classe à l'aide de l'espace de noms des classes. Manquant l'espace de noms dans la référence MyClass a pu avoir causé les problèmes avec le service ne fonctionne pas correctement (bien que ce soit juste une hypothèse longue parce que vous n'avez pas donné beaucoup plus d'informations que "le service ne fonctionne pas").

Espérons que ça aide!

0

Il peut y avoir plusieurs raisons. Le développeur d'origine peut avoir l'intention de mettre en boîte noire la DLL pour un usage externe. Il est possible que l'autre développeur disposait d'un harnais de test «in the can» spécialement conçu pour tester les bibliothèques de cette nature. Les DLL précompilées sont un peu plus sécurisées pendant le SDLC car les agents intermédiaires ne peuvent pas affecter le code derrière. Le code d'un service Web qui n'est pas compilé peut être modifié accidentellement (ou même intentionnellement).

En fin de compte, il pourrait juste avoir été la préférence du gars. La décision est vraiment assez arbitraire, sauf si vous avez un facteur extérieur comme influence.