J'ai un processus WCF hébergé dans un service Windows. Je me demande si je peux avoir en toute sécurité plusieurs processus WCF qui font des choses différentes hébergées dans le même service Windows. Dois-je m'inquiéter des ports? J'utilise un point de terminaison mexPouvez-vous héberger plusieurs processus WCF dans un seul service Windows?
Répondre
Oui, vous pouvez. Je fais exactement la même chose dans mon projet, en hébergeant trois services WCF distincts dans mon service Windows. Assurez-vous simplement que chaque point de terminaison WCF, c'est-à-dire l'adresse/le lien/le contrat, est unique.
Jetez un oeil à ce Run WCF ServiceHost with multiple contracts ce n'est pas exactement ce que vous demandez, mais peut-être d'une certaine utilité. En utilisant cela plus la propriété InstanceContextMode de l'attribut ServiceBehaviour et la possibilité de configurer Service throttling vous devriez pouvoir obtenir ce que vous voulez.
Comme avec @Matt, je l'ai fait aussi avec l'aide de ce lien.
EDIT: semble si à couper mon long exemple de code/config, donc il y a une explication complète ici: http://thegrenade.blogspot.com/2009/08/hosting-multiple-wcf-services-under.html
Voici un exemple qui peut aider à vous aller:
class Program {
static void Main() {
if (Environment.UserInteractive) {
ServiceManager serviceManager = new ServiceManager();
serviceManager.OpenAll();
Console.ReadKey();
serviceManager.CloseAll();
}
else
ServiceBase.Run(new WindowsService());
}
}
public class WindowsService : ServiceBase
{
public static string WindowsServiceName = "Windows Service Name";
public static string WindowsServiceDescription = "Windows Service Description";
public static string WindowsServiceUsername = @".\username";
public static string WindowsServicePassword = "password";
private readonly ServiceManager serviceManager = new ServiceManager();
private readonly IContainer components = new Container();
protected override void Dispose(bool disposing) {
if (serviceManager != null) serviceManager.CloseAll();
if (disposing && (components != null)) components.Dispose();
base.Dispose(disposing);
}
public WindowsService() {
ServiceName = WindowsServiceName;
CanStop = true;
}
protected override void OnStart(string[] args) {
base.OnStart(args);
serviceManager.OpenAll();
}
protected override void OnStop() {
serviceManager.CloseAll();
base.OnStop();
}
}
public class ServiceManager {
readonly List<ServiceHost> serviceHosts = new List<ServiceHost>();
public void OpenAll() {
OpenHost<Service1>();
OpenHost<Service2>();
...
}
public void CloseAll() {
foreach (ServiceHost serviceHost in serviceHosts)
serviceHost.Close();
}
private void OpenHost<T>() {
Type type = typeof(T);
ServiceHost serviceHost = new ServiceHost(type);
serviceHost.Open();
serviceHosts.Add(serviceHost);
}
}
/// <remarks>
/// Enables application to be installed as a Windows Service by running InstallUtil
/// </remarks>
[RunInstaller(true)]
public class WcfServiceHostInstaller : Installer {
public WcfServiceHostInstaller() {
Installers.Add(new ServiceInstaller
{
StartType = ServiceStartMode.Automatic,
ServiceName = WindowsService.WindowsServiceName,
Description = WindowsService.WindowsServiceDescription
});
Installers.Add(new ServiceProcessInstaller { Account = ServiceAccount.User, Username = WindowsService.WindowsServiceUsername, Password = WindowsService.WindowsServicePassword });
}
}
Et une certaine configuration
- Ici, La configuration de comportement de liaison & est partagée entre les services, mais vous pouvez avoir besoin de différentes configurations pour différents types de services.
J'utilise différents ports pour différents services, mais ce n'est pas obligatoire.
...
- 1. Plusieurs services hébergés sous un seul service Windows
- 2. Comment implémenter un service wcf pouvant héberger d'autres services wcf?
- 3. WCF dans un service Windows
- 4. Hébergement d'un service WCF dans un service Windows
- 5. Comment héberger un service WCF dans une application Web avec netNamedPipeBinding et WAS sous Windows Vista
- 6. Déplacement du service WCF de IIS vers un service Windows
- 7. Puis-je héberger un service WCF depuis COM +?
- 8. Hébergement du service WCF dans le service Windows
- 9. Sécurité WCF dans un service Windows
- 10. Comment héberger plusieurs flux de travail séquentiels WCF dans la bibliothèque de flux de travail WCF
- 11. Service WCF, authentification Windows
- 12. Appel asynchrone pour service WCF hébergé dans le service Windows
- 13. WCF un service ou plusieurs services
- 14. Puis-je héberger un service WCF avec NetMsmqBinding dans l'application racine "/" d'un site IIS7?
- 15. Hébergement d'un service WCF (mex endpoint) dans un service Windows sur Windows 2008
- 16. Service Windows et minuteries - processus séparés?
- 17. Traiter un processus plus long dans WCF
- 18. Activation de processus Tibco & Windows
- 19. URL WSDL pour un service WCF (basicHttpBinding) hébergé dans un service Windows
- 20. Capture d'écran du processus sous Windows Service
- 21. Service WCF unique pour plusieurs connexions client
- 22. Surveillance d'un processus dans Windows
- 23. Que nommer un service WCF?
- 24. Plusieurs types UIView dans un seul UIViewController
- 25. Problème de service Windows WCF avec MSDTC
- 26. Hébergement d'un service Web compatible Silverlight dans un service Windows
- 27. Déploiement d'un service WCF
- 28. Comment rendre un service WCF compatible avec plusieurs rappels?
- 29. .Net 3.5 Service Windows masquer WCF Service Host
- 30. Comment puis-je personnaliser mon service WCF pour utiliser DataContractSurrogate uniquement dans un seul EndPoint?
Vous avez plusieurs SERVICES_ de _WCF hébergé dans un seul service Windows, et non plusieurs _processes_. –