WCF命名管道最小示例我正在寻找WCF命名管道的最小示例(我期望两个最小的应用程序,服务器和客户端,它们可以通过命名管道进行通信。)Microsoft有一篇很好的文章“ 入门教程”,它通过HTTP描述了WCF,我正在寻找类似于WCF和命名管道的东西。我在互联网上发现了几个帖子,但它们有点“先进”。我需要一些最小的,只有强制性的功能,所以我可以添加我的代码并使应用程序正常工作。如何替换它以使用命名管道?<endpoint address="http://localhost:8000/ServiceModelSamples/Service/CalculatorService"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICalculator"
contract="ICalculator" name="WSHttpBinding_ICalculator">
<identity>
<userPrincipalName value="OlegPc\Oleg" />
</identity></endpoint>如何替换它以使用命名管道?// Step 1 of the address configuration procedure: Create a URI to serve as the base address.Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service");// Step 2 of the hosting procedure: Create ServiceHostServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);try{
// Step 3 of the hosting procedure: Add a service endpoint.
selfHost.AddServiceEndpoint(
typeof(ICalculator),
new WSHttpBinding(),
"CalculatorService");
// Step 4 of the hosting procedure: Enable metadata exchange.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
// Step 5 of the hosting procedure: Start (and then stop) the service.
selfHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
selfHost.Close();}catch (CommunicationException ce){
Console.WriteLine("An exception occurred: {0}", ce.Message);
selfHost.Abort();}如何生成客户端以使用命名管道?
3 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
我也遵循微软的教程,这很好,但我也只需要管道。
如您所见,您不需要配置文件和所有杂乱的东西。
顺便说一句,他使用HTTP和管道。只需删除与HTTP相关的所有代码行,您就会得到一个纯粹的管道示例。
慕无忌1623718
TA贡献1744条经验 获得超4个赞
试试这个。
这是服务部分。
[ServiceContract]public interface IService{ [OperationContract] void HelloWorld();}public class Service : IService{ public void HelloWorld() { //Hello World }}
这是代理
public class ServiceProxy : ClientBase<IService>{ public ServiceProxy() : base(new ServiceEndpoint(ContractDescription.GetContract(typeof(IService)), new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/MyAppNameThatNobodyElseWillUse/helloservice"))) { } public void InvokeHelloWorld() { Channel.HelloWorld(); }}
这是服务托管部分。
var serviceHost = new ServiceHost (typeof(Service), new Uri[] { new Uri("net.pipe://localhost/MyAppNameThatNobodyElseWillUse") }); serviceHost.AddServiceEndpoint(typeof(IService), new NetNamedPipeBinding(), "helloservice"); serviceHost.Open(); Console.WriteLine("Service started. Available in following endpoints"); foreach (var serviceEndpoint in serviceHost.Description.Endpoints) { Console.WriteLine(serviceEndpoint.ListenUri.AbsoluteUri); }
- 3 回答
- 0 关注
- 517 浏览
添加回答
举报
0/150
提交
取消