Photon——What’s in Photon 3 Photon3凡啊

Changed 改变

1. Lite and Lite Lobby Code-Cleanup Lite和Lite Lobby代码清理

     Event-, Operation- and Parameter-Codes are cleaned up. Everything
was reassigned and the predefined codes should be out of your way now.
There is an extra page which lists each old and new value.

     事件、操作和参数编码为清理干净。
现在凡是百分之百重新分配和预定义的代码应该出现了。有一个分外的页面,其中列有了每个旧的跟初的价值。 
   

 

2. Type of Codes 代码的门类

     We decided to keep using bytes as type for codes. It’s just
effective and lean. If needed, any operation or event could get
sub-codes (not supported out of the box).The ReturnCode for
operation responses was of type int. This is now short-typed. Not
extremely lean. But short.

   
 我们决定继续应用bytes作为代码的色。这是有效的跟精益的。如果用,可以获其他操作还是事件的子码。这个ReturnCode对于操作响应是int类型的。这是短类型。不是不行简短,但是缺失。

 

3. Protocol Cleanup 协议清理 

     We cleaned up the protocol for Photon 3. This is next to invisible
for you, but has some benefits. Most of all, the new protocol does no
longer hard-code any codes. Any code for operations, results, parameters
or events can be defined by your code.

     我们呢Photon3清理了协议。这对你的话几乎是看不显现之,但产生有利。最重点的凡用新的协议来举行,不再需要硬编码任何代码。任何代码的操作、结果、
参数或事件可以因你的代码来定义。

 

4. Error Handling 错误处理

     The error handling was re-designed to

     错误处理是叫重新规划啊

  • always call the unhandled exception event handler
  • it is no longer required to initialize the logging facade
  • introduced three policies for unhandled exceptions: ignore, restart
    application, end process
  • consistent behavior: before unhandled exceptions in threads
    controlled by Photon where logged and then ignored, those in other
    threads usually terminated the process. 

  • 连调用未处理的要命事件处理
  • 不再要初始化 logging facade
  • 对此未处理的可怜出以下三单政策:忽略、 重启应用程序、终止进程
  • 同样的所作所为:在线程通过Photon登录以及忽略来决定不处理的老之前,其他线程通常会告一段落之过程。

     Note: due to a bug in 2.6 sometimes exceptions where “transformed”
into ThreadAbortException or the application was unloaded without
being loaded again (this is also fixed with 2.6.28).

     注意:由于一个荒唐(在2.6)有时有差,“transformed”到
ThreadAbortException
或应用程序被推诿载不见面重新于加载(这也是定位与2.6.28)。

5. Server SDK Changes (breaking) 服务器SDK改变(破坏)

  • Peer classes are now required to inherit from class ‘PeerBase’. The
    former interface IPeer and class PhotonPeer were removed. Take a
    thorough look at the PeerBase class definition as it is a central
    piece of your application.
  • Applications are now required to inherit from class
    ‘ApplicationBase’. Like PeerBase this is one of the most important
    classes.
  • Classes ResponseParameterAttributeRequestParameterAttribute and EventParameterAttribute have
    been substituted with class DataMemberAttribute. As a
    consequence, request and response parameters can not be part of the
    same container class anymore.
  • The Params property of
    classes EventDataOperationRequest and OperatioResponse has
    been substituted wth the new property Parameters. This
    dictionary’s keys are now of type byte.
  • The property EventData.EventCode has been renamed
    to ‘Code’ and its type was changed to byte.
  • The type of the
    properties OperationRequest.OperationCode and OperationResponse.OperationCode has
    been changed to byte.
  • The new class DataContract substitutes
    classes Operation and Event. While class Operation remains
    part of the framework it is not mandatory to use it in order to
    convert the parameters to class properties anymore.
  • Methods Event.GetEventData and Operation.GetOperationResponse have
    been removed. Instead use the
    new OperationResponse and EventData constructors.
  • PhotonPeer.SendBufferFull was removed.
    Override PeerBase.OnSendBufferFull to respond to a full send
    buffer. The counterpart PeerBase.OnSendBufferEmpty is called
    when Photon is ready to send more data.

  • Peer类现在内需继承类自PeerBase。接口IPeer和类PhotonPeer
    IPeer被移除。把一个完好的PeerBase类的概念作为你应用程序的中坚部分。
  • 应用程序现在须继承自类
    ApplicationBase。像PeerBase这是中一个最为重大之近乎。
  • 仿佛 ResponseParameterAttribute 、 RequestParameterAttribute 和
    EventParameterAttribute 被类DataMemberAttribute
    代替。因此,请求和响应的参数不可知属于同一个容器类了。
  • 类 EventData , OperationRequest 和 OperatioResponse
    的习性参数为新的特性参数代替。这按照字典的键的类别是byte。
  • 属于性EventData.EventCode 已经更名为 “Code” 和其的门类变更吧byte。
  • OperationRequest.OperationCode 和 OperationResponse.OperationCode
    属性的项目已改为了byte。
  • 此新类DataContract
    替代了类 Operation 和 Event。虽然看似的操作是framework的平等局部,为了更换参数为接近的习性它是勿强制被利用的。
  • 方 Event.GetEventData 和 Operation.GetOperationResponse
    已于移除。而利用新的 OperationResponse 和 EventData 构造函数。
  • PhotonPeer.SendBufferFull 已被移除。覆盖 PeerBase.OnSendBufferFull
    来响应一个整的发送缓冲区。当Photon是准备好并发送更多之多少经常这
    PeerBase.OnSendBufferEmpty 会被调用。

6. Client SDK Changes (breaking) 客户端SDK改变(破坏)

  • renamed IPhotonListener interface
    member OperationResult to OnOperationResponseEventAcion to OnEvent and PeerStatusCallback to OnStatusChanged.
  • The different parameters of the
    old OperationResult (OperationCodeParameters, …) are
    passed in one object OperationResponse. Same applies
    to OnEvent now has one parameter EventData.
  • Support for invocation ID was removed.

  • 再也称IPhotonListener接口成员 OperationResult 为 OnOperationResponse
    、 EventAcion 为 OnEvent 和 PeerStatusCallback 为 OnStatusChanged 。
  • 原来的 OperationResult ( OperationCode , 参数
    ,…)的异参数为传送在一个 OperationResponse 对象里。同样适用于
    OnEvent 有一个参数 EventData。
  • 支撑调用ID已被移除。

  • PhotonHostRuntime version attribute was removed from the config file
    and is no longer required – we recommend to remove it to ease
    feature updates.

  • The application NetSyncObjects is no longer part of the SDK.
  • Changed default for dump files from mini to full
  • Added version display to log file during start up.

  1. PhotonHostRuntime
    version属性已于布局文件被移除,和不再是少不了的,我们建议去其以便让功能更新。
  2. 应用程序NetSyncObjects不再是SDK的一律有。
  3. 改转储文件的默认选项从迷你及总体。
  4. 长版显得到日志文件于开行之上。

图片 1

What’s in Photon 3 Photon3是什么

1. High Performance S2S API (Native/C++) 高性能的S2S API

     A while back we introduced the TCPClient a managed class better
suited for server to server communication than the standard client
library. The TCPClient had two disadvantages: First the programming
model on both ends of the connection was different (TCPClient on one
side, peer on the other), second it was designed for low-bandwidth
communication. With this release Photon can setup a connection to other
Photon instances leveraging the networking power of the Photon Core
while allowing to use the same programming model using peers on both
ends of the connection.

   
 不久前我们介绍了托管类TCPClient比标准客户端类库更切合吃服务器到服务器的通信。这个TCPClient有个别个毛病:第一,编程模型连接的双方都是差之(TCPClient在旁,peer在其余一侧),第二,是总揽为低带宽通信。这个版的Photon可以设置一个连续其他Photon实例,利用Photon
Core,同时同意peer在连年的两岸用相似的编程模型。

 

2. Load Balancing 负载均衡

     

     With Photon Load Balancing, developers are enabled to create
scalable multi-node solutions. It includes out of the box a master
server hosting the lobby and game servers to host the active games. The
Lite Lobby Application is delivered with a set of matchmaking methods
and a load balancing component that distributes the load (where to
create new games).

   
 Photon负载均衡,开发人员能够创立而扩大的多节点的缓解方案。它包括了一个主服务来托管大厅与多只戏服务来托管游戏。这个Lite Lobby应用程序是通过设置配对方法以及以负载均衡组件分配负载来开展提交工作之。

 

3. Event Caching 事件缓存

     So far, Lite had “Properties” for rooms and actors to store values
for players who join later on. They are a nice idea but a bit clumsy to
use: Whenever something has to be stored, you had to set properties. In
all other cases, you send events.The new Lite Application combines both
and gives you caching for events. Per player and event, you could cache
the values in it. If anyone joins, the events are sent immediately, like
they were just raised.

   
 到目前为止,Lite用房间和玩家的性能为那些在游戏后的玩家来储存值。这是一个吓主意,但是利用起来有些傻:无论什么事物让积存,您得装属性。在另外情形下,您发送事件。新的Lite应用程序结合了授予你的高速缓存事件。每个玩家和事件,您还可以缓存值在即时之中。如果某人加入,立即发送事件,他们只会叫点。

 

4. Extended Data Type Support 支撑数据类型的扩充

     Photon now supports more data-types than ever: Null values,
dictionaries, arrays of objects (each with its own type) and even custom
classes can be integrated and used in events.

   
 Photon现在较往年另时候还愈支持数据类型,例如:Null值、字典、数组对象(每个都发夫自己的类别)和从定义为并入并用于事件里的类。

 

5. The Peer has new properties Peer的新属性

     NetworkProtocol, LocalIP, LocalPort.

 

6. Up to now you configured a global default
application
 否公安排一个大局的默认应用程序

     Now it is also possible to define a default application per
listener.

     现在尚可定义一个默认的应用程序监听器。

 

Bug Fixes Bug修复

  1. Fixed a memory leak when canceling actions scheduled on a fiber.
  2. S2S.TCPClient did not close the socket at disconnect which caused an
    error when calling Connect again.
  3. Flash policy file is claimed malformed with a top-level XML tag that
    is not, see
    http://www.adobe.com/devnet/flashplayer/articles/fplayer9\_security.html\#\_Malformed\_Policy\_Files
  4. Fixed CLR startup to ensure GC Server is used (issue affected .net
    4.0 only).
  5. Fixed ENet fragmented buffering flow control bug.
  6. Fixed TCP magic byte issues – fragmented pings where not parsed
    correctly and an issue in the internal handling of the size of
    packets could lead to parsing errors (bigger packets and high load).
  7. Fixed Photon hang on shutdown trying to log on a dead logging
    instance.
  8. Fixed the method Peer GetRemoteAddress – due to a caching issue
    the result was wrong in some cases.
  9. Fixed mini dumps – now obey configured limits.
  10. Changed PhotonPeer::GetRemotePort so that it doesn’t rely on a
    cached port.

  1. 修正了当取消线程池的倒经常内存的透漏。
  2. S2S。
    在断开的当儿TCPClient没有关闭套接字,然后又连造成的一个错。
  3. Flash策略文件给声称也畸形的最高等级的XML标记,其实她不是,看到
    http://www.adobe.com/devnet/flashplayer/articles/fplayer9\_security.html
    #尴尬的国策文件
  4. 修正了CLR启动时因担保GC服务器是可用的。
  5. 修正了eNet分散缓冲流控制的不当。
  6. 修正了TCP魔法字节问题——不得法的辨析ping
    和一个中处理的问题,数据包的轻重缓急或者造成解析错误(更怪之数据包和赛负荷)。
  7. 修正了Photon在关机时准备在一个关门的日记实例进行记录。
  8. 修正了方peer GetRemoteAddress
    ——由于缓存问题,在一些情况下结果错了。
  9. 修正迷你转储——现在听安排的界定。
  10. 改了 PhotonPeer::GetRemotePort ,因此,它不因让一个缓存的端口。

 

 

 

   
 聚合是一模一样栽专门类型的涉嫌,用于描述“总体到部分”的涉及。在中心的汇关系面临,部分近似的生命周期独立为整体类的生命周期。

图片 2

    • 聚关系

 

只能3个

    • 关联类 

图片 3

0个或1个

  • 贯彻关系

图片 4

3

    • 双向关联
  • 基本上重值和它们的代表

 

   
 类也得运用反射关联和她自身相关联。起先,这或者无意思,但是切记,类是架空的。下图展示一个Employee类如何通过manager
/
manages角色与它们本身有关。当一个好像涉到她自己时,这并无代表类的实例与它们本身有关,而是类似的一个实例与类似的其余一个实例相关。图描绘的关联说明一个Employee实例可能是另外一个Employee实例的经营。然而,因为“manages”的干角色来
0..*的多重性描述;一个雇员或不受另其他雇员管理。

   
 类的UML表示是一个加上方形,垂直地分成三独区,顶部区域显示类的讳,中间的区域列出类的性质,底部的区域列出类的操作。

 

图片 5

   
 类的操作记录在类图长方形的老三单区域中,它也是只是挑选的。和性质一样,类的操作以列表格式显示,每个操作以它自己线及。操作使用下列记号表现

属性名称 属性类型
flightNumber Integer
departureTime Date
flightDuration Minutes

Instance Name : Class Name

 

5到15个

  • 分类
    • interface
    • utility
    • abstract(斜体表示)

 

  • 软件包

 

 

   
 软件包要建模者能够组织模型分类器到名字空间中,这起些象文件系统中之公文夹。把一个网分为多单软件包要系统成为容易理解,尤其是于每个软件包都表现网的一个特定部分经常。

  • 实例

   
 依赖关系是代表“使用”的语义,一个好像依赖另一个好像以总是独自为的,用带有箭头的虚线表示。可以大概的掌握,就是一个类A使用及了任何一个类B,而这种以关系是有偶然性的、临时性的、非常弱的,但是B类的别会影响到A;比如某要了水,需要借用一条船,此时丁及船舶之间的涉嫌虽是负;表现在代码层面,为类B作为参数为类A在某method方法被应用。

图片 6

只能1个

   
 建模类的实例有时比较期之更详细。有时,你可能单想如果于一个比较多之形似层次做类关系的型。在这种状况下,你应当用角色记号。角色记号类似于实例记号。为了建立类似的角色模型,你打一个方格,并当其间放置类的角色名及类名,作为实体记号,但是以当下场面你无克加下划线。注意,你莫可知于纯类图中做类角色的建模,为了使角色记号,你将会晤待运用下讨论的内部结构记号。

  • 接近的属性

     让我们看一个实例。在觊觎中我们有一个类图以见一个Plane类如何由四个引擎以及少单控制软件对象成。从者图中省略的东西是显得关于飞机部件如何被配的有些音讯。你无法说明,是每个控制软件对象说了算两单引擎,还是一个控制软件对象说了算三只引擎,而另外一个操一个发动机。

   
 在一个仅为关系中,两单近乎是有关的,但是只是来一个看似知道这种关系的有。

   
 关联是少数只类间的连通。关联总是为如是双向的;这代表,两个像样彼此理解它之中的关系,除非你限定一些另种类的涉。

*

图片 7

图片 8

图片 9

含义

  • 类图

图片 10

     举例来说,我们得以想象,车是一个完好无损实体,而车轮、轮胎是收拾部车之一律片。轮胎可当安排到车时的前几个星期日给打,并放置于仓库着。在这实例中,Wheel类实例清楚地单独地Car类实例而有。然而,有些情况下,部分类似的生命周期并无单独为整体类的生命周期,这叫做合成聚合。举例来说,考虑企业以及单位的关系。公司和单位都建模成类,在铺子是前,部门非克存。这里Department类的实例依赖让Company类的实例而在。

    • 结关系

 

图片 11

0到5个

 

0..1

   
 在达到图中,继承关系由每个父类的独门的丝画起,这是在IBM Rational
Rose和IBM Rational
XDE中利用的不二法门。然而,有同等栽叫做树标记的备方式可以画出继承关系。当在个别单或又多子类时,除了继续线象树枝一样混在一道他,你可以动用树形记号。

图片 12

5..15

name : attribute type
flightNumber : Integer

   
 一个一面的涉嫌,表示也平长条带有指向已经知类的开放箭头的实线。如同标准提到,单为关系包括一个角色称及一个大抵重值描述,但是跟标准的双向关联不同的经常,单为关系只含有已知类的角色称与多重值描述。OverdrawnAccountsReport
知道 BankAccount 类,而且知道 BankAccount
类扮演“overdrawnAccounts”的角色。然而,和正式提到不同,BankAccount
类并不知道它和 OverdrawnAccountsReport 相关联。

图片 13

   
 组合关系是集聚关系的逾激化,子类实例的生命周期依赖让父类实例的生命周期。在觊觎中,显示了Company类和Department类之间的成关系,注意组合关系而聚合关系一致绘制,不过这次菱形是叫填的。在图备受的涉建模中,一个Company类实例至少总起一个Department类实例。因为关乎是整合关系,当Company实例被移除/销毁时,Department实例也以活动地于移除/销毁。组合聚合的任何一个至关重要职能是一对看似只能与父类的实例相关。

  • 其间的结构

   
 绘制类的内在结构以见面改进这种状态。开始时,你通过用二独区域画一个方格。最上方的区域包含类名字,而比逊色的区域包含类的内部结构,显示在她父类中负责不同角色的片类,角色遭之每个片类为波及及任何类。下图显示了Plane类的内部结构;注意内部结构如何澄清混乱性。

   
 继承指的凡一个子类继承一个父类的意义,并追加它和谐之新力量。为了当一个类图上建模继承,从子类拉发一致漫漫闭合的特键头(或三角形)的实线指向父类。

   
 类图用于表示类的静态内容和她中间的干,在里好显得出类的积极分子变量和分子函数,以及近似中的接轨与援关系。

 

   
 然而,仅仅呈现一些实例而从未其的涉嫌不顶实用;因此,UML也同意以实体层的关联/关联建模。绘制关联和一般的接近涉之规则平等,除了在建模关联时有一个外加的渴求。附加的范围是,关联关系要同类图的涉及相互平等,而且涉及的角色名吧得跟类图相平等。

 

0单或多单

     因为展示实例的目的是显示值得注意的或者相关的音讯,没必要当您的型中富含全体实体性与操作。相反地,仅仅显示感兴趣的性能和其值是完全适用的。

   
 UML结构图的更有效的法力有是初的内部结构记号。它同意你展示一个看似或另外的一个分类器如何以其间整合。因为记号限制而只能显示一个近乎所兼有的汇关系。内部的组织记号让你再度理解地出示类的相继部分如何保持关系。

  • 关系关系
      • 属性关联类型

图片 14

 

图片 15

图片 16

  • 依靠关系
  • 延续关系
  • 角色
    • 照关系

   
 关联关系是一样种普遍存在的干,它凭借区区个像样的实例之间存在稳定的连天,即当一个好像的目标作为其它一个看似的靶子的变量成员,它而一个像样知道其他一个近似的性能和方法
,这样简单只类似就在涉嫌关系。

1..*

表示

0..5

图片 17

   
 类的属于性节在分隔线上排列有每一个像样的性。属性节是只是选的,要是一律因此她,就含类的列表显示的每个属性。在事情类图中,属性类型一般和单位符合,这对于图的或者读者是有含义之。然而用于转移代码的类图,要求近乎的习性类型必须界定于由程序语言提供的型中,或含于在系统中实现的型的种类中。

唯恐的多重值描述

0单或多单

      • 属于性默认值

 

 

  • 可见性
      •  public
    • #  protected
      •   private
    • ~  package
    • 不过为关联 

0..*

 

1只或多独

1

   
 当一个系统结构建模时,显示例子类实例有时候是行得通之。实例的号子和相近一样,但是代表顶端区域被不过有的类名,它的讳是经拼接的。

name(parameter list) : type of value returned
操作名称 返回参数 值类型
delayFlight
Name Type
numberOfMinutes Minutes
N/A
getArrivalTime N/A Date

   
 在关系建模中,存在有状下,你得包括外类,因为它们蕴含了关于关联的产生价的音。对于这种场面,你会采用关联类来绑定你的核心关系。关联类和一般类一样表示。不同的凡,主类和关联类之间为此平等长达相交的点线连接。在Flight类和FrequentFlyer类之间的干,产生了名为MileageCredit的涉嫌类。这象征当Flight类的一个实例关联到FrequentFlyer类的一个实例时,将会见发出MileageCredit类的一个实例。

 

  • 接近的操作

 

name : attribute type = default value

   
 一个双向关联用半单类间的实线表示。在线的任一端,你放一个角色叫及多重值。Flight与一个特定的Plane相关联,而且Flight类知道者关系。因为角色名以Plane类表示,所以Plane承担关联中之“assignedPlane”角色。紧接于Plane类后面的多重值描述0…1象征,当一个Flight实体存在时时,可以起一个要么从不Plane与的干。也显示Plane知道它同Flight类的涉嫌。在这个关系中,Flight承担“assignedFlights”角色;Plane实体可以无跟flight关联或跟无上限的flight关联。

   
 实现关系是一个接近定义声明,另一个类似来兑现其。一久带有闭合的只有为箭头的点线意味着实现。

 

 

图片 18