第一个WCF程序

看《Programming Indigo》有一段时间了,今天算是第一次动手实现一个小程序。
因为书出的比较早,与目前发布的.NET3.0 SDK有不小的差别(主要是API)。所以这里把程序也贴出来以便有看这本书的朋友对照修改。这个小程序有可有多种实现方式,这里现贴出code-first方式。有空了再帖contract-first方式的。注意,要记着在server和client的project里加入对system.ServiceModel的引用。粗体是代码改动的地方。
首先,server端:
using System;
using System.ServiceModel;

namespace ProgrammingIndigo
{
//Contract definition.

[ServiceContract]
public interface IHello
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}

// Service implementation.

public class HelloService : IHello
{
public double Add(double n1, double n2)
{
Console.WriteLine("Add called");
return n1 + n2;
}

public double Subtract(double n1, double n2)
{
Console.WriteLine("Subtract called");
return n1 - n2;
}

public double Multiply(double n1, double n2)
{
Console.WriteLine("Multiply called");
return n1 * n2;
}

public double Divide(double n1, double n2)
{
Console.WriteLine("Divide called");
return n1 / n2;
}

// Host the service.

public static void Main()
{
// Create a ServiceHost.

using (ServiceHost serviceHost = new ServiceHost(typeof(HelloService)))
{
// Add an endpoint.

WSHttpBinding binding = new WSHttpBinding();
Uri uri = new Uri("http://localhost:8000/hello1/");
serviceHost.AddServiceEndpoint(typeof(IHello),binding,uri);


// Open the service.

serviceHost.Open();

// The service can now be accessed.
// Hold it open until user presses ENTER.

Console.WriteLine("The service is ready");
Console.WriteLine();
Console.WriteLine("Press ENTER to shut down service.");
Console.WriteLine();
Console.ReadLine();

// Close the service.

serviceHost.Close();
}
}
}
}

client端:

using System;
using System.ServiceModel;

namespace ProgrammingIndigo
{
//Contract definition.

[ServiceContract]
public interface IHello
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}

//Client implementation code.

class Client
{
static void Main()
{
// Create a proxy.
WSHttpBinding binding = new WSHttpBinding();
Uri uri = new Uri("http://localhost:8000/hello1/");
ChannelFactory channelFactory = new ChannelFactory(binding,"http://localhost:8000/hello1/");
IHello proxy = channelFactory.CreateChannel();
try
{
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
Console.WriteLine("Calling Add({0},{1})", value1, value2);
double result = proxy.Add(value1, value2);
Console.WriteLine(" Result: {0}", result);

// Call the Subtract service operation.
value1 = 145.00D;
value2 = 76.54D;
Console.WriteLine("Calling Subtract({0},{1})", value1, value2);
result = proxy.Subtract(value1, value2);
Console.WriteLine(" Result: {0}", result);

// Call the Multiply service operation.
value1 = 9.00D;
value2 = 81.25D;
Console.WriteLine("Calling Multiply({0},{1})", value1, value2);
result = proxy.Multiply(value1, value2);
Console.WriteLine(" Result: {0}", result);

// Call the Divide service operation.
value1 = 22.00D;
value2 = 7.00D;
Console.WriteLine("Calling Divide({0},{1})", value1, value2);
result = proxy.Divide(value1, value2);
Console.WriteLine(" Result: {0}", result);
}
finally
{
((System.ServiceModel.Channels.IChannel)proxy).Close();//
//((System.ServiceModel.Channels.IChannel)proxy).Dispose(); }

Console.WriteLine();
Console.WriteLine("Press ENTER to shut down client");
Console.ReadLine();
}
}
}
结果:
HELLO1.JPG
提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值