.Net рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рднрд╛рдЧ 2)

рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓реЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ .Net рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЖрдЬ рд╣рдо рд╢реЗрд╖ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдФрд░ рдЙрддреНрддрд░ рджреЗрдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдкрд╛рдардХ рдХреЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА # рднрд╛рд╖рд╛ рдФрд░ рдПрд╕рд╡реАрдПрди рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреА рдереЛрдбрд╝реА рдХрдорд╛рдВрдб рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ WCF рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЪреЛрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдб рдХрд╛ рдПрдХ рдмрд╣реБрдд (рдлрд┐рд░ рд╕реЗ) рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ!


рд░реБрдХреЛ, рдХреНрдпрд╛ рд╣рдо рдПрдХ рдордВрдЪ рдкрд░ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рджреВрд╕рд░реЗ рдкрд░ deserialized рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?


рд╣рд╛рдБ рдФрд░ рдирд╣реАрдВред рдкреНрд░реЛрдЯреЛрдмреЙрдл рд╕рд░рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рд╣рд╛рдВ рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред рдФрд░ рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЗрд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ! DateTime рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣ рд╕реНрд╡рдпрдВ рдПрдХ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдирд┐рд░реНрднрд░ рднреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рджреВрд╕рд░реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдЦрд╛рдореА рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░реЛрдЯреЛрдмреЙрдл-рдиреЗрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рджрд┐рдирд╛рдВрдХ рд╕рдордп рдкреНрд░рдХрд╛рд░ 01-01-1970 (рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ) рдХреЗ рдмрд╛рдж рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░рдордмрджреНрдз рд╣реИред рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдореНрдореЗрд▓рди рдпрд╣рд╛рдВ рд╣реИрдВ ред

рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди .proto рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ (рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╕рдорд░реНрдерд┐рдд рд╣реИ)ред рдЗрд╕рд╕реЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдВрддрд┐рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдФрд░ рдЖрдкрдХреЗ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рдкреЛрд░реНрдЯреЗрдмрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╡рд░рдг рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджрд┐рдирд╛рдВрдХ рд╕рдордп рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ):
package Proto.Common;
message Task
{
optional int32 Id = 1;
optional DateTime CreatedAt = 2;
optional string CreatedBy = 3;
enum TaskPriority
{
Low = 0;
Medium = 1;
High = 2;
}
optional TaskPriority Priority = 4;
optional string Content = 5;
}

* This source code was highlighted with Source Code Highlighter .

рдХреНрдпреЛрдВрдХрд┐ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдореИрдВрдиреЗ рд╕рдорд░реНрдерд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рджреЗрдЦрд╛, рдХреНрдпрд╛ рдпрд╣ рдкреНрд░реЛрдЯреЙрди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ JSON рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ?


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВред JSON рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдФрд░ рдбреАрд╕реНрд╕рд░рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкреАрдбрд╝рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NodeJS рдореЗрдВ ред

рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдкреНрд░реЛрдЯреЛрдмреБрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?


.Net рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ, рдХреЙрдореНрдкреИрдХреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ, рдореЛрдиреЛ рдФрд░ рдЕрдиреНрдп рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдмреЙрдл-рдиреЗрдЯ рд╕рдорд░реНрдерди рдореЗрдВ рдкрд╛рдПрдВрдЧреЗред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдкреНрд░реЛрдЯреЙрдл рдХреЛ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЖрдЗрдП рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рд░ рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ (рдЯрд╛рд╕реНрдХрдкреИрд░рд┐рдЯреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ):
using System;
using System.Runtime.Serialization;

namespace Proto.Common
{
[DataContract]
public class Task
{
[DataMember(Order = 1)]
public int Id { get ; set ; }

[DataMember(Order = 2)]
public DateTime CreatedAt { get ; set ; }

[DataMember(Order = 3)]
public string CreatedBy { get ; set ; }

[DataMember(Order = 4)]
public TaskPriority Priority { get ; set ; }

[DataMember(Order = 5)]
public string Content { get ; set ; }
}
}


* This source code was highlighted with Source Code Highlighter .

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкрд╣рд▓реЗ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░реЛрдЯреЛрдмреЛрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ! рд╕реЗрд╡рд╛ рдЕрдиреБрдмрдВрдз:
using System.ServiceModel;

namespace Proto.Common
{
[ServiceContract]
public interface ITaskManager
{
[OperationContract]
Task[] GetTasks();
}
}


* This source code was highlighted with Source Code Highlighter .

рдлрд┐рд░ рд╕реЗ рдкреНрд░реЛрдЯреЙрдм рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВред рдХреЗрд╡рд▓ рдЙрд▓реНрд▓реЗрдЦ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕реЗрд╡рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рд╣реИ:
<? xml version ="1.0" ? >
< configuration >
< system.serviceModel >
< services >
< service name ="Proto.Server.TaskManager"
behaviorConfiguration ="Proto.Server.ServiceBehavior" >
<!-- Service Endpoints -->
< endpoint name ="Proto.Server.Endpoint"
address ="net.tcp:\\localhost:9000"
binding ="netTcpBinding"
contract ="Proto.Common.ITaskManager"
behaviorConfiguration ="Proto.Common.EndpointBehavior" />
</ service >
</ services >
< behaviors >
< serviceBehaviors >
< behavior name ="Proto.Server.ServiceBehavior" >
<!-- To receive exception details in faults for debugging purposes, set the value below to true.
Set to false before deployment to avoid disclosing exception information -->
< serviceDebug includeExceptionDetailInFaults ="true" />
</ behavior >
</ serviceBehaviors >
< endpointBehaviors >
< behavior name ="Proto.Common.EndpointBehavior" >
< protobuf />
</ behavior >
</ endpointBehaviors >
</ behaviors >
< extensions >
< behaviorExtensions >
< add name ="protobuf"
type ="ProtoBuf.ServiceModel.ProtoBehaviorExtension, protobuf-net, Version=1.0.0.280, Culture=neutral, PublicKeyToken=257b51d87d2e4d67" />
</ behaviorExtensions >
</ extensions >
</ system.serviceModel >
</ configuration >


* This source code was highlighted with Source Code Highlighter .

рдФрд░ рдЧреНрд░рд╛рд╣рдХ:
<? xml version ="1.0" ? >
< configuration >
< system.serviceModel >
< client >
< endpoint name ="Proto.Client.Endpoint"
address ="net.tcp:\\localhost:9000"
binding ="netTcpBinding"
contract ="Proto.Common.ITaskManager"
behaviorConfiguration ="Proto.Common.EndpointBehavior" />
</ client >
< behaviors >
< endpointBehaviors >
< behavior name ="Proto.Common.EndpointBehavior" >
< protobuf />
</ behavior >
</ endpointBehaviors >
</ behaviors >
< extensions >
< behaviorExtensions >
< add name ="protobuf"
type ="ProtoBuf.ServiceModel.ProtoBehaviorExtension, protobuf-net, Version=1.0.0.280, Culture=neutral, PublicKeyToken=257b51d87d2e4d67" />
</ behaviorExtensions >
</ extensions >
</ system.serviceModel >
</ configuration >


* This source code was highlighted with Source Code Highlighter .

рдЧреНрд░рд╛рд╣рдХ рдФрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреБрдЪреНрдЫ рд╣реИ рдФрд░ рдмреНрдпрд╛рдЬ рдХрд╛ рдирд╣реАрдВред

рдпрджрд┐ рдЖрдк рд╕рдВрджреЗрд╢ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрди рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
< MessageLogTraceRecord Time ="2011-05-12T16:17:03.2780000+04:00" Source ="TransportSend" Type ="System.ServiceModel.Dispatcher.OperationFormatter+OperationFormatterMessage" xmlns ="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace" >
< s:Envelope xmlns:s ="http://www.w3.org/2003/05/soap-envelope" xmlns:a ="http://www.w3.org/2005/08/addressing" >
< s:Header >
< a:Action s:mustUnderstand ="1" >
tempuri.org/ITaskManager/GetTasksResponse
</ a:Action >
< a:RelatesTo >
urn:uuid:768e2f40-612c-4593-8cfb-eacb7b291a9c
</ a:RelatesTo >
< a:To s:mustUnderstand ="1" >
www.w3.org/2005/08/addressing/anonymous
</ a:To >
</ s:Header >
< s:Body >
< GetTasksResponse xmlns ="http://tempuri.org/" >
< proto >
Ci4IARIJCPTs+c/8SxAEGgpTdGV2ZSBKb2JzIAIqEUludmVudCBuZXcgaVBob25lCi8IAhIJCPTclY/4SxAEGg1TdGV2ZSBCYWxsbWVyKhFJbnN0YWxsIG93biBTa3lwZQ==
</ proto >
</ GetTasksResponse >
</ s:Body >
</ s:Envelope >
</ MessageLogTraceRecord >

* This source code was highlighted with Source Code Highlighter .


рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдпрд╛рдж рд╣реИ - рдбреЗрдЯрд╛ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрди рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдЪреАрдЬреЗрдВ рдХреИрд╕реА рд╣реИрдВ?


рдЬреИрд╕реЗ WCF рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк IExtensibleDataObject рдХреЗ рд╕рд╛рде рдЕрдиреБрдмрдВрдз рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ред Protobuf-net рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдФрд░ рдЗрд╕реЗ IExtensible рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрддрд░ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рдЦреБрдж рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред

рдХреНрдпреЛрдВ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ WCF рдореЗрдВ рдкреНрд░реЛрдЯреЛрдмреЙрдл-рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ?


рдпрд╣ рдХреЛрдИ рдорд┐рдердХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдкрд╛рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд╛рдЭрд╛рдХрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдХреЗ рд▓рд┐рдП TcpClient ред рдпрджрд┐ рдпрд╣ рдЖрдкрдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдереНрд░рд┐рдлреНрдЯ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдиреЗ рдореБрдЭреЗ рдордирд╛ рд▓рд┐рдпрд╛ред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдмреЙрдл-рдиреЗрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!


рдХреГрдкрдпрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдо рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

Source: https://habr.com/ru/post/In119510/


All Articles