Forum: ASP.NET |
Thema:
Webservice und Interface |
Von:
Klaas Wedemeyer (
27.07.2005 13:20) |
Hi,
kann man beim Webservice ein Interface übergeben?
Ich möchte im Client eine Klasse des Servers benutzen, unabhängig ob diese Klasse direkt, über remoting oder einen Webservice angesprochen wird.
Beispiel:
Shared:
Interface ICustomerService
{
Customer GetCustomer();
}
[Serializable ()]
class Customer
{
public string Name;
}
Server:
using Shared;
class CustomerService:ICustomerService
{
public Customer GetCustomer()
{return new Customer();}
}
// wegen MarshalByRefObject und WebService kommen noch zwei Proxys dazu
Client:
using Shared;
{
...
{
Shared.Cusomer cus = GetCustomerService().GetCustomer();
}
Shared.ICustomerService GetCustomerService()
{
switch (VerbindungsType)
{
case direkt:
return (Shared.ICustomerService) new CustomerService();
case remoting:
(Shared.ICustomerService) RemotingHelper.GetObject(typeof (Shared.ICustomerService));
// schöne Idee aus der Dotnetpro
case webservice:
return (Shared.ICustomerService) new localhost.CustomerService();
// geht leider nicht
}
}
}
Das Problem ist, das der Proxy und die serialisierte Klasse beim Webservice nur zufällig wie das orginal aussieht (gleiche Namen). Bei einer Typeumwandlung gibt es leider einen Fehler.
Lösung 1: Die Automatisch generierten Dateien per Hand ändern -> Wehe wenn da jemand auf Referenzen aktualisieren clickt.
Lösung 2: Einen Proxy um den Proxy und die ser. Klasse legen -> das wird bei meheren Klassen aber ganz schön aufwendig.
Lösung 3: Jetzt kommst Du.
Danke schon mal, Klaas
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!