在NetCore时代开发WebService和FrameWork时代差别有一点儿大,毕竟NetCore是跨平台的一个框架,不过使用起来也得很简单,下面我就使用Visual Studio2019开发一个示例服务程序。你依然要注意我这个我写的这个demo是soap1.2。在开发前你必须清楚这一点,因为有很多时候SOAP1.1和SOAP1.2 并不通用。至于soap1.1我暂时不用netcore写示例了。
下面是开发详细过程:
(1)创建新项目,选择ASP.NET Core Web应用程序 ,如下图
(2)配置新项目,为自己的项目起个名字,然后点击下一步,如下图
(3)进入模板选择页面,选择空,如下图
(4)项目建立好后需要我们通过NuGet引用开发依赖包 SoapCore,如下图一样添加引用。
(5)这时我们新一个类用于示例的返回和接受参数,类名StudentModel 代码如下:
[DataContract]
public class StudentModel
{
///
/// 学号
///
[DataMember]
public string Sno { get; set; }
///
/// 姓名
///
[DataMember]
public string Name { get; set; }
///
/// 班级
///
[DataMember]
public string Grade { get; set; }
///
/// 生日
///
[DataMember]
public DateTime Birthday { get; set; }
}
(6)添加接口约束IContract,我们和framework下保持一致,实现两个方法,Get和Add代码如下:
[ServiceContract]
public interface IContract
{
///
/// 查询学生信息
///
/// 学号
/// 学生信息
[OperationContract]
StudentModel Get(string sno);
///
/// 添加学生信息
///
/// 学生信息
/// result
[OperationContract]
int Add(StudentModel student);
}
(7)添加服务实现类StudentService,来实现我们的约定服务接口。代码如下:
public class StudentService : IContract
{
public StudentModel Get(string sno)
{
return new StudentModel() { Sno = sno, Name = "小红", Grade = "202002", Birthday = new DateTime(2012, 8, 15) };
}
///
/// 添加学生信息
///
///
///
public int Add(StudentModel student)
{
return 1;
}
}
(8)在netcore中添加注入,这个想必不会陌生吧,现在netcore的注入已经很普遍了,修改 Startup.cs类中的ConfigureServices方法,添加代码如下:
services.TryAddSingleton<IContract, StudentService>();
(9)添加服务发布接口地址,修改Startup.cs类中的Configure方法,在最后修改UseEndpoints这一部分代码如下:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseSoapEndpoint("/StudentService.asmx", new BasicHttpBinding(), SoapSerializer.XmlSerializer);
}
(10)点击Visual Studio2019上的运行按钮,此时便可以在浏览器里预览了。直接运行看到的页面是错误的地址,需要手动改一下地址如下:https://localhost:44376/StudentService.asmx,添加后半部分StudentService.asmx。我们便可以看到正常的返回了,如下图:
至此我们已经完成了一个简单的WebService,这个服务实现两个接口,一个Get 一个Add方法。