C# Webserice 代理生成工具(WSDL)

    曾经做好几个项目,由于考虑不同的平台,所以基本上都是基于Webservice(SOAP协议)来实现,服务器一般是使用Java来实现。本文只要说明C#的Webservice代理的使用及代理代码的生成。

    由于项目算是比较大的,服务接口比较多,所以Webservice发布层都是有多个Url的,这种情况使用VS提供的WSDL生成工具好像就出现问题了,实体类代码和通信类(操作方法)代码都是放到一个文件里面了,如果Webservice发布时没有手动指定命名空间时,还会涉及到命名空间的问题,即实体类的属性完全相同,也会报命名空间的错误。所以在调用方,出现了同一实体,多处命名的问题。还有命名规范问题,如果发布方没有指定发布时的名称(如:实体中的属性,类名等),Java的Webservice发布工具默认是小写的,所以和C#通常为大写的做法不符,影响可读性。

    具体做法:把WSDL生成的代理类的有关的实体手动分离出来,并把每个实体类的有关的命名空间注释去。(如果是同一个团队开发,可以按照指定的要求一起遵守,但如果是不同公司,一般来说都是调用方自己想办法解决了),把所有实体类放到同一个程序集里(有很多相同的可以保留一份),这样,我们基本上可以做实体做了统一管理,基本上可以使整个程序运行正常了。

    维护成本:这些手动的工作的维护成本是相当大的,只要服务器每更改一次实体和操作方法(指要通过Webservice发布的方法),调用方必须得同步更新代理的代码,又得重新手动分离实体等,这种手动工作,往往带有很多隐性的错误,导致调试的时间增长,稳定度降低。

    为了解决以上问题,本人牺牲了个人的休息时间,基于WSDL.exe上写了一个C#代理生成工具《Webservice代理生成工具》,从生成到代码导出,不需要更改一点代码,特别是在项目开发的初期,带来的效率和速度是不可比拟的。

    本工具的功能有:

    代理类相关功能:

     1、可以对多个项目的Webservice代理生成进行管理;

     2、对同一个项目的生成代理的多个Uri进行管理,最近使用的排在最前面,可以保留最近50个Uri及用户对每个Uri所使用的配置选项;

     3、允许对代理进行重命名、指定代理的命名空间,更改代理的所指向的Url(此Url为运行时所要访问的地址,一般是在配置里,这里可以是配置实体的代码等。);

     4、允许增加代理所需要引入的分离的实体的命名空间或配置访问等所需要的命名空间等。

     5、生成的代理类类名首字母大写;

     6、指定代理的导出的文件路径。

     实体类相关功能:

     1、可以选择要分离出的实体;只要是根据 "class" 来判断,有部分代码会对delegate所需要相关的内容都生成一个class,所以该选项得人为去指定,但系统会记录每次用户的指定,再次生成时会自动加载前一次的指定;

     2、允许增加实体所需要的相关的命名空间;

     3、指定实体所在的命名空间;

     4、指定实体的类名前缀或后缀,如“Ety”等;

     5、允许对WSDL中定义的类进行首字母大写;

     6、允许对实体中的属性的首字母大写;

     7、注释实体序列化时使用的命名空间;

     8、时间的特别处理属性设置为真(该属性是WSDL.exe自动增加上去的,可能是为处理SOAP对不同时候格式的处理),如果不设置为真,调用方的时间字段是传送不到服务器端的。

     9、设置导出的实体类的路径(一个实体一个.cs文件);

     导出选项:

     1、选择需要导出的文件;

工具图片:

 

限制部分功能版下载:/Files/Yjianyong/WebServiceProxyBuilder.rar

需要无限制版请联系QQ:179781134 加友时在备注说明,否则拒绝!

本工具属个人版权,和公司没有任何关系。

转载于:https://www.cnblogs.com/Yjianyong/archive/2012/02/25/2367747.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一个使用ASP.NET Core 6编写的Web Service示例。在这个示例中,我们将创建一个简单的学生管理系统,具有添加学生、获取学生列表和获取特定学生信息的功能。 首先,按照以下步骤创建一个ASP.NET Core 6 Web API项目: 1. 打开Visual Studio 2022并选择“创建新项目”。 2. 在“创建新项目”对话框中,搜索并选择“ASP.NET Core Web API”模板。 3. 输入项目名称和位置,然后点击“下一步”。 4. 在“配置新项目”对话框中,选择.NET 6.0作为目标框架,并点击“创建”。 5. 创建完成后,Visual Studio会为你生成一个包含默认控制器的Web API项目。 现在我们来实现学生管理系统的功能。按照以下步骤进行操作: 1. 首先,我们需要创建一个数据模型来定义学生的结构。在项目中创建一个名为"Models"的文件夹,并在其中添加一个名为"Student.cs"的类文件。在该类文件中定义以下代码: ```csharp public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } ``` 2. 接下来,我们需要创建一个存储学生数据的服务。在项目中创建一个名为"Services"的文件夹,并在其中添加一个名为"StudentService.cs"的类文件。在该类文件中定义以下代码: ```csharp public interface IStudentService { List<Student> GetStudents(); Student GetStudentById(int id); void AddStudent(Student student); } public class StudentService : IStudentService { private List<Student> _students; public StudentService() { _students = new List<Student>(); } public List<Student> GetStudents() { return _students; } public Student GetStudentById(int id) { return _students.FirstOrDefault(s => s.Id == id); } public void AddStudent(Student student) { student.Id = _students.Count + 1; _students.Add(student); } } ``` 3. 现在,我们需要创建一个控制器来处理学生管理的请求。在项目的"Controllers"文件夹中创建一个名为"StudentController.cs"的类文件,并添加以下代码: ```csharp [ApiController] [Route("api/[controller]")] public class StudentController : ControllerBase { private readonly IStudentService _studentService; public StudentController(IStudentService studentService) { _studentService = studentService; } [HttpGet] public ActionResult<List<Student>> GetStudents() { var students = _studentService.GetStudents(); return Ok(students); } [HttpGet("{id}")] public ActionResult<Student> GetStudent(int id) { var student = _studentService.GetStudentById(id); if (student == null) { return NotFound(); } return Ok(student); } [HttpPost] public IActionResult AddStudent(Student student) { _studentService.AddStudent(student); return CreatedAtAction(nameof(GetStudent), new { id = student.Id }, student); } } ``` 4. 最后,我们需要配置依赖注入。打开项目的"Startup.cs"文件,并在"ConfigureServices"方法中添加以下代码: ```csharp services.AddSingleton<IStudentService, StudentService>(); ``` 5. 现在我们可以运行应用程序并使用POSTMAN进行测试。在Visual Studio中按下F5启动应用程序,并确保应用程序成功运行。 现在,我们可以使用POSTMAN来测试学生管理系统的功能。以下是一些测试案例: - 获取学生列表:发送GET请求到"http://localhost:5000/api/student",你应该能够收到一个空的学生列表。 - 添加学生:发送POST请求到"http://localhost:5000/api/student",在请求体中添加JSON数据,例如: ```json { "name": "John Doe", "age": 20 } ``` 发送请求后,你应该能够收到HTTP 201 Created的响应,并返回添加的学生信息。 - 获取特定学生信息:发送GET请求到"http://localhost:5000/api/student/{id}",将"{id}"替换为实际的学生ID,你应该能够收到特定学生的信息。 这就是使用ASP.NET Core 6编写一个具有一定功能和复杂度的Web Service示例的步骤。你可以根据需要进一步扩展和修改代码,添加其他功能和测试案例。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值