.NET 4.x C# Обмен SOAP сообщениями в формате XMl между клиентом и сервером

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Помогите разобраться, необходимо реализовать обмен SOAP сообщениями в формате XMl между клиентом и сервером. Сервер реализован в виде службы, которая взаимодействует с БД. Клиентское приложение обычное WinForms. Клиент должен посылать команды серверу, сервер делает запрос к БД и возвращает клиенту результат запроса. Обмен данными должен происходить в формате xml. Как вообще реализовать подключение между сервером и клиентом для обмена такими данными? Как отправить какую нибудь команду серверу и получать ответ?

Решение задачи: «.NET 4.x C# Обмен SOAP сообщениями в формате XMl между клиентом и сервером»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. using System.ServiceModel;
  11. using System.ServiceModel.Channels;
  12. using System.Runtime.Serialization;
  13.  
  14. namespace StudentBase.Client {
  15.     public partial class MainForm : Form {
  16.         static IDatabase client = null;
  17.         public MainForm() {
  18.             InitializeComponent();
  19.             client = ChannelFactory<IDatabase>.CreateChannel(new BasicHttpBinding(),
  20.                 new EndpointAddress("http://localhost:8080/DatabaseService"));
  21.             this.Load += new EventHandler(Form1_Load);
  22.             btnAdd.Click += new EventHandler(btnAdd_Click);
  23.             btnFiter.Click += new EventHandler(btnFiter_Click);
  24.         }
  25.  
  26.         void btnFiter_Click(object sender, EventArgs e) {
  27.             switch (cmbFilter.Text) {
  28.                 case "Имя":
  29.                     FilterByNameAndDisplay(txtFilter.Text);
  30.                     break;
  31.                 case "Возраст":
  32.                     FilterByAgeAndDisplay(txtFilter.Text);
  33.                     break;
  34.                 default:
  35.                     return;
  36.             }
  37.         }
  38.         void FilterByNameAndDisplay(string name) {
  39.             Student[] list = client.GetStudentByName(name);
  40.             studentsGridView.DataSource = null;
  41.             studentsGridView.DataSource = list;
  42.         }
  43.         void FilterByAgeAndDisplay(string age) {
  44.             int a;
  45.             if (!int.TryParse(age, out a)) {
  46.                 txtFilter.Clear();
  47.                 MessageBox.Show("Ошибка ввода возраста!", "Error");
  48.                 return;
  49.             }
  50.             Student[] list = client.GetStudentByAge(a);
  51.             studentsGridView.DataSource = null;
  52.             studentsGridView.DataSource = list;
  53.         }
  54.  
  55.         void btnAdd_Click(object sender, EventArgs e) {
  56.             if (string.IsNullOrWhiteSpace(txtName.Text)) {
  57.                 MessageBox.Show("Пустое имя не допускается!", "Error");
  58.                 return;
  59.             }
  60.             int age;
  61.             if (!int.TryParse(txtAge.Text, out age)) {
  62.                 txtAge.Clear();
  63.                 MessageBox.Show("Ошибка ввода возраста!", "Error");
  64.                 return;
  65.             }
  66.             Student s = new Student { Name = txtName.Text, Age = age };
  67.             txtName.Clear();
  68.             txtAge.Clear();
  69.             try {
  70.                 client.AddStudent(s);
  71.             }
  72.             catch (FaultException ex) {
  73.                 MessageBox.Show(ex.Message, "Error");
  74.                 return;
  75.             }
  76.             studentsGridView.DataSource = null;
  77.             studentsGridView.DataSource = client.GetAllStudents();
  78.         }
  79.  
  80.         void Form1_Load(object sender, EventArgs e) {
  81.             cmbFilter.Items.AddRange(new string[] { "Возраст", "Имя" });
  82.             studentsGridView.DataSource = client.GetAllStudents();
  83.         }
  84.     }
  85.    
  86. }
  87. [ServiceContract]
  88. public interface IDatabase {
  89.     [OperationContract]
  90.     Student[] GetStudentByName(string name);
  91.     [OperationContract]
  92.     Student[] GetStudentByAge(int age);
  93.     [OperationContract]
  94.     Student[] GetAllStudents();
  95.     [OperationContract]
  96.     void AddStudent(Student student);
  97.     [OperationContract]
  98.     AddResult AddStudents(Student[] students);
  99. }
  100. [DataContract]
  101. public class Student {
  102.     [DataMember(Name="Name")]
  103.     string _name;
  104.     [DataMember(Name="Age")]
  105.     int _age;
  106.  
  107.     public string Name {
  108.         get { return _name; }
  109.         set { _name = value; }
  110.     }
  111.     public int Age {
  112.         get { return _age; }
  113.         set { _age = value; }
  114.     }
  115. }
  116. [DataContract]
  117. public struct AddResult {
  118.     [DataMember]
  119.     public int Added;
  120.     [DataMember]
  121.     public int Errored;
  122. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы