Программирование >>  Программирование с использованием ajax 

1 ... 378 379 380 [ 381 ] 382 383 384 ... 396


практическое заиятм Контракты WCF

1. Создайте новый проект типа прможения службы WCF (WCF Service Application) по имени Ch35Ex02 и сохраните его в каталоге С: \BegVCSharp\Chapter35.

2. Добавьте в решение проект типа библиотеки классов по имени Ch35ExO IContracts и удалите из него файл Classl. cs.

3. Добавьте в проект Ch35ExOIContracts ссылки на сборки System.Runtime. Serialization.dll и System.ServiceModel.dll.

4. Далее добавьте в этот проект класс с именем Person и измените код в представляющем этот класс файле Person. сs:

using System;

using System.Collections .Generic-using System.Linq; using System.Text; using System.Runtime.Serialization;

namespace Ch35Ex02Contracts {

[DataContract] public class Person

[DataMember]

public string Name { get; set; ) [DataMember]

public int Mark { get; set; )

5. Теперь добавьте в проект класс lAwardService и измените код в представляющем его файле lAwardService. cs следующим образом:

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

namespace Ch35Ex02Contracts {

[ServiceContract(SessionMode=SessionMode.Required)] public interface lAwardService

[OperationContract(IsOneWay=true,Islnitiating=true)] void SetPassMar]c(int passMark) ;

[OperationContract]

Person[] GetAwardedPeople(Person[] peopleToTest);

6. Что касается проекта Ch35Ex01, то сначала добавьте в него ссылку на проект Ch35Ex01Contracts.

7. Затем удалите из проекта Ch35Ex01 файлы IServicel .cs и Servicel.svc.

8. Теперь добавьте в него новую службу WCF с именем AwardService.



11. Измените отвечающий за конфигурацию этой службы раздел в Web. conf ig следующим образом:

<system.serviceModel> <services>

<service name= Ch35Ex02.AwardService > <endpoint address= binding= wsHttpBinding contract= Ch35Ex02Contracts.lAwardService /> </service>

</services>

</system.serviceModel>

12. Сделайте AwardService. svc стартовой страницей проекта Ch35Ex02.

13. Запустите проект Ch35Ex02 в режиме отладки и зафиксируйте где-то используемый в браузере URL-адрес (вместе с номером порта, который вскоре потребуется).

14. Остановите процесс отладки и добавьте в решение новый проект типа консольного приложения по имени Ch35Ex02Client.

15. Добавьте в этот проект Ch35Ex02Client ссылку на сборку System. ServiceModel. dll и проект Ch35Ex02Contracts.

16. Измените код в файле Program.cs в этом проекте следующим образом:

9. Далее удалите из него файл lAwardService. cs. 10. Измените код в файле AwardService. svc. cs следующим образом:

using System;

using System.Collections .Generic-using System.Ling; . using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using Ch35Ex02Contracts;

namespace Ch35Ex02 {

public class AwardService : lAwardService {

private int passMark;

public void SetPassMarlc(int passMark)

this.passMark = passMark;

public Person[] GetAwardedPeople(Person[] peopleToTest) {

List<Person> result = new List<Person> () ; foreach (Person person in peopleToTest) {

if (person.Mark > passMark) {

result.Add(person);

return result.ToArray();



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

using Ch35Ex02Contracts;

namespace Ch35E02Client

class Program {

static void Mam (string [ ] args) {

Person [] people = new Person [] {

new Person { Mark = AS, Naine= Jixn ], new Person { Mark = 73, Naine= Mike }, new Person { Mark = 92, Naine= Stefan }, new Person { Mark = 84, Naine= George ), new Person { Mark = 24, Name= Arthur }, new Person { Mark = 58, Name= Nigel }

Console.WriteLine( People: ); OutputPeople(people);

lAwardService client = ChannelFactory<IAwardService>. CreateChannel ( new WSHttpBinding 0 ,

new EndpointAddress ( http: localhost: 51425/AwardService. svc )) ; client.SetPassMark(70) ;

Person[] awardedPeople = client.GetAwardedPeople(people); Console .WriteLine 0 ; Console.WriteLine ( Awarded people: ) ; OutputPeople(awardedPeople);

Console.ReadKey();

static void OutputPeople (Person [] people)

foreach (Person person in people)

Console.WriteLine( {0}, mark: {!} , person.Name, person.Mark);

17. Запустите приложение. На рис. 35.6 показан результат, который должен получиться.


Рис. 35.6. Приложение Ch35Ex02Client в действии



1 ... 378 379 380 [ 381 ] 382 383 384 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика