Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » MobiLink - 服务器管理 » MobiLink 服务器 API » 使用 .NET 编写同步脚本

 

设置 .NET 同步逻辑

使用 .NET 实现同步脚本时,必须告知 MobiLink 在何处可以找到程序集中包含的程序包、类和方法。

 ♦ 使用 .NET 实现同步脚本
  1. 创建自己的类。为每个所需的同步事件编写方法。这些方法必须是公共的。

    有关这些方法的详细信息,请参见方法

    每个包含非静态方法的类都应有一个公共的构造函数。在第一次调用每个类中的方法进行连接时,MobiLink 服务器将自动实例化每一个类。

    请参见构造函数

  2. 创建一个或多个程序集。编译时可引用 iAnywhere.MobiLink.Script.dll,它包含将要在您自己的 .NET 方法中使用的 MobiLink 服务器 API 类存储库。iAnywhere.MobiLink.Script.dll 位于 %SQLANY12%\Assembly\V2 中。

    您可以在命令行中编译类,也可以使用 Visual Studio 或其它 .NET 开发环境编译类。

    请参见MobiLink 服务器 .NET API 参考

  3. 编译您的项目。

    例如,在 Visual Studio 中进行编译,如下所示:

    1. 在 [VS.NET Project] 菜单中,单击 [Add Existing Item]。

    2. 定位 iAnywhere.MobiLink.Script.dll

      在 [Open] 列表中,单击 [Link File]。

      注意

      对于 Visual Studio,请始终使用 [Link File] 方法。请不要使用 [Add Reference] 选项来引用 iAnywhere.MobiLink.Script.dll。[Add Reference] 选项将复制与类程序集位于同一物理目录的 iAnywhere.MobiLink.Script.dll,这会导致 MobiLink 服务器出现问题。

    3. 使用 [Build] 菜单生成程序集。

    还可以从命令行进行编译,方式如下:

    dll-path 替换为 iAnywhere.MobiLink.Script.dll 的路径。例如,在 C# 中:

    csc /out:dll-pathout.dll /target:library /reference:dll-pathiAnywhere.MobiLink.Script.dll sync_v1.cs
  4. 在统一数据库的 MobiLink 系统表中,为每个同步脚本指定要调用的程序包、类和方法的名称。每个脚本版本中只允许存在一个类。

    例如,可以通过使用 ml_add_dnet_connection_script 存储过程或 ml_add_dnet_table_script 存储过程,将此信息添加到 MobiLink 系统表中。如果在 SQL Anywhere 数据库中运行以下 SQL 语句,则这些语句将指定只要发生 authenticate_user 连接级别事件,即运行 myNamespace.myClass.myMethod。

    CALL ml_add_dnet_connection_script( 
        'version1',
        'authenticate_user', 
        'myNamespace.myClass.myMethod'
    )
    注意

    完全限定的方法名称区分大小写。

    作为此过程调用的结果,ml_script 系统表的 script_language 列包含单词 dnet。脚本列包含公共 .NET 方法的限定名称。

    请参见ml_add_dnet_connection_script 系统过程ml_add_dnet_table_script 系统过程

    您也可以使用 Sybase Central 添加此信息。

    请参见添加和删除脚本

  5. 指示 MobiLink 服务器装载程序集并启动 CLR。可以使用 mlsrv12 命令行选项告知 MobiLink 在何处找到这些程序集。有两个选项可以选择:

    • 使用 -sl dnet ( -MLAutoLoadPath )   此选项将给定路径设置为应用程序基目录,并装载该目录下的所有专用程序集。这通常为首选选项。例如,要装载位于 dll-path 下的所有程序集,请输入:
      mlsrv12 -c "DSN=consolidated1" -sl dnet(-MLAutoLoadPath=dll-path)

      如果使用 -MLAutoLoadPath 选项,则在输入事件脚本的完全限定方法名时不能指定域。

      请参见.NET 程序集装载-sl dnet mlsrv12 选项

    • 使用 -sl dnet ( -MLDomConfigFile )   此选项需要一个包含域和程序集设置的配置文件。您可在以下情况下使用此选项:当您具有共享程序集时,当您不想装载目录中的所有程序集时,或者当您出于某种其它原因需要使用配置文件时。

      有关装载共享程序集的详细信息,请参见.NET 程序集装载

      有关 mlsrv12 选项 -sl dnet 的详细信息,请参见-sl dnet mlsrv12 选项

      注意

      可以使用 -MLAutoLoadPath 选项,也可以使用 -MLDomConfigFile 选项,但二者不可同时使用。