Útmutató: Metaadatok exportálása a Svcutil.exe használatával a lefordított szolgáltatáskódból
Svcutil.exe exportálhatja a szolgáltatások, szerződések és adattípusok metaadatait a lefordított szerelvényekben az alábbiak szerint:
Ha a Svcutil.exe használatával exportálni szeretné az összes lefordított szolgáltatási szerződés metaadatait, adja meg a szerelvényeket bemeneti paraméterekként. Ez az alapértelmezett viselkedés.
Ha egy lefordított szolgáltatás metaadatait Svcutil.exe szeretné exportálni, adja meg a szolgáltatásszerelvényt vagy -szerelvényeket bemeneti paraméterként. A beállítással
/serviceName
meg kell adnia az exportálni kívánt szolgáltatás konfigurációs nevét. Svcutil.exe automatikusan betölti a konfigurációs fájlt a megadott végrehajtható szerelvényhez.Ha az összes adatszerződéstípust egy szerelvényeken belül szeretné exportálni, használja a
/dataContractOnly
lehetőséget.
Feljegyzés
/reference
A beállítással megadhatja a függő szerelvények fájlelérési útvonalait.
Metaadatok exportálása lefordított szolgáltatási szerződésekhez
Állítsa össze a szolgáltatási szerződés implementációit egy vagy több osztálykódtárba.
Futtassa a Svcutil.exe a lefordított szerelvényeken.
Feljegyzés
Előfordulhat, hogy a
/reference
kapcsolóval meg kell adnia a függő szerelvények fájlelérési útját.svcutil.exe Contracts.dll
Metaadatok exportálása lefordított szolgáltatáshoz
Állítsa össze a szolgáltatás implementációját végrehajtható szerelvénysé.
Hozzon létre egy konfigurációs fájlt a végrehajtható szolgáltatáshoz, és adjon hozzá egy szolgáltatáskonfigurációt.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="MyService" > <endpoint address="finder" contract="IPeopleFinder" binding="wsHttpBinding" /> </service> </services> </system.serviceModel> </configuration>
Futtassa a Svcutil.exe a végrehajtható lefordított szolgáltatáson a
/serviceName
kapcsolóval a szolgáltatás konfigurációs nevének megadásához.Feljegyzés
Előfordulhat, hogy a
/reference
kapcsolóval meg kell adnia a függő szerelvények fájlelérési útját.svcutil.exe /serviceName:MyService Service.exe /reference:path/Contracts.dll
Metaadatok exportálása lefordított adatszerződésekhez
Állítsa össze az adatszerződés implementációit egy vagy több osztálykódtárba.
Futtassa a Svcutil.exe a lefordított szerelvényeken a
/dataContract
kapcsolóval, és adja meg, hogy csak az adatszerződések metaadatait kell létrehozni.Feljegyzés
Előfordulhat, hogy a
/reference
kapcsolóval meg kell adnia a függő szerelvények fájlelérési útját.svcutil.exe /dataContractOnly Contracts.dll
Példa
Az alábbi példa bemutatja, hogyan hozhat létre metaadatokat egy egyszerű szolgáltatás implementálásához és konfigurálásához.
A szolgáltatásszerződés metaadatainak exportálása.
svcutil.exe Contracts.dll
Az adatszerződések metaadatainak exportálása.
svcutil.exe /dataContractOnly Contracts.dll
Metaadatok exportálása a szolgáltatás implementálásához.
svcutil.exe /serviceName:MyService Service.exe /reference:<path>/Contracts.dll
Ez <path>
a Contracts.dll elérési útja.
// The following service contract and data contracts are compiled into
// Contracts.dll.
[ServiceContract(ConfigurationName="IPeopleFinder")]
public interface IPersonFinder
{
[OperationContract]
Address GetAddress(Person s);
}
[DataContract]
public class Person
{
[DataMember]
public string firstName;
[DataMember]
public string lastName;
[DataMember]
public int age;
}
[DataContract]
public class Address
{
[DataMember]
public string city;
[DataMember]
public string state;
[DataMember]
public string street;
[DataMember]
public int zipCode;
[DataMember]
public Person person;
}
// The following service implementation is compiled into Service.exe.
// This service uses the contracts specified in Contracts.dll.
[ServiceBehavior(ConfigurationName = "MyService")]
public class MyService : IPersonFinder
{
public Address GetAddress(Person person)
{
Address address = new Address();
address.person = person;
return address;
}
}
<!-- The following is the configuration file for Service.exe. -->
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="MyService">
<endpoint address="finder"
binding="basicHttpBinding"
contract="IPeopleFinder"/>
</service>
</services>
</system.serviceModel>
</configuration>