• NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(2)


    下载thrift:http://thrift.apache.org/download

    解压打开E:C# hrift0.9.3 hrift-0.9.3libcsharpsrc,vs打开项目,生成thrift.dll

    项目引用thrift.dll

    根据thrift文件生成代码,可在thrift文件使用namespace指定命名空间。

    thrift命令:thrift -gen csharp -out E:SOAThrift  E:SOAThriftsayhello.thrift

    thrift文件内容:

    service sayHelloService {
    string sayHello(1:string name),
    }

    消费者C#代码:

                //建立socket连接的ip
                string TSocketIP = "xxx.xxx.xxx.xxx";
                //建立socket连接的port
                int TSocketPort = xxx;
                string ServiceName = "application名/server端service名/version";
                string result = string.Empty;
    
                #region 测试
                TTransport transport = new TFramedTransport(new TSocket(TSocketIP, TSocketPort, 1000));
                TProtocol protocol = new TCompactProtocol(transport);
                TMultiplexedProtocol sayHello = new TMultiplexedProtocol(protocol, ServiceName);
                sayHelloService.Client client = new sayHelloService.Client(sayHello);
                transport.Open();
                bool IsOpen = transport.IsOpen;
    
           
                string name = string.Empty;
                name = "毛毛";
                result = pushClient.sayHello(name);
                #endregion


    以下是cmd命令窗的执行(查看thrift相关参数):

    Microsoft Windows [版本 10.0.10240]
    (c) 2015 Microsoft Corporation. All rights reserved.

    C:UsersAdministrator>cd E:C# hrift0.9.3

    C:UsersAdministrator>E:

    E:C# hrift0.9.3>thrift -help
    Usage: thrift [options] file
    Options:
      -version    Print the compiler version
      -o dir      Set the output directory for gen-* packages
                   (default: current directory)
      -out dir    Set the ouput location for generated files.
                   (no gen-* folder will be created)
      -I dir      Add a directory to the list of directories
                    searched for include directives
      -nowarn     Suppress all compiler warnings (BAD!)
      -strict     Strict compiler warnings on
      -v[erbose]  Verbose mode
      -r[ecurse]  Also generate included files
      -debug      Parse debug trace to stdout
      --allow-neg-keys  Allow negative field keys (Used to preserve protocol
                    compatibility with older .thrift files)
      --allow-64bit-consts  Do not print warnings about using 64-bit constants
      --gen STR   Generate code with a dynamically-registered generator.
                    STR has the form language[:key1=val1[,key2[,key3=val3]]].
                    Keys and values are options passed to the generator.
                    Many options will not require values.

    Options related to audit operation
       --audit OldFile   Old Thrift file to be audited with 'file'
      -Iold dir    Add a directory to the list of directories
                    searched for include directives for old thrift file
      -Inew dir    Add a directory to the list of directories
                    searched for include directives for new thrift file

    Available generators (and options):
      as3 (AS3):
        bindable:        Add [bindable] metadata to all the struct classes.
      c_glib (C, using GLib):
      cocoa (Cocoa):
        log_unexpected:  Log every time an unexpected field ID or type is encountered.
        validate_required:
                         Throws exception if any required field is not set.
        async_clients:   Generate clients which invoke asynchronously via block syntax.
      cpp (C++):
        cob_style:       Generate "Continuation OBject"-style classes.
        no_client_completion:
                         Omit calls to completion__() in CobClient class.
        no_default_operators:
                         Omits generation of default operators ==, != and <
        templates:       Generate templatized reader/writer methods.
        pure_enums:      Generate pure enums instead of wrapper classes.
        include_prefix:  Use full include paths in generated files.
        moveable_types:  Generate move constructors and assignment operators.
      csharp (C#):
        async:           Adds Async support using Task.Run.
        asyncctp:        Adds Async CTP support using TaskEx.Run.
        wcf:             Adds bindings for WCF to generated classes.
        serial:          Add serialization support to generated classes.
        nullable:        Use nullable types for properties.
        hashcode:        Generate a hashcode and equals implementation for classes.
        union:           Use new union typing, which includes a static read function for union types.
      d (D):
      delphi (delphi):
        ansistr_binary:  Use AnsiString for binary datatype (default is TBytes).
        register_types:  Enable TypeRegistry, allows for creation of struct, union
                         and container instances by interface or TypeInfo()
        constprefix:     Name TConstants classes after IDL to reduce ambiguities
        events:          Enable and use processing events in the generated code.
        xmldoc:          Enable XMLDoc comments for Help Insight etc.
      erl (Erlang):
        legacynames: Output files retain naming conventions of Thrift 0.9.1 and earlier.
        maps:        Generate maps instead of dicts.
        otp16:       Generate non-namespaced dict and set instead of dict:dict and sets:set.
      go (Go):
        package_prefix=  Package prefix for generated files.
        thrift_import=   Override thrift package import path (default:git.apache.org/thrift.git/lib/go/thrift)
        package=         Package name (default: inferred from thrift file name)
        ignore_initialisms
                         Disable automatic spelling correction of initialisms (e.g. "URL")
        read_write_private
                         Make read/write methods private, default is public Read/Write
      gv (Graphviz):
        exceptions:      Whether to draw arrows from functions to exception.
      haxe (Haxe):
        callbacks        Use onError()/onSuccess() callbacks for service methods (like AS3)
        rtti             Enable @:rtti for generated classes and interfaces
        buildmacro=my.macros.Class.method(args)
                         Add @:build macro calls to generated classes and interfaces
      hs (Haskell):
      html (HTML):
        standalone:      Self-contained mode, includes all CSS in the HTML files.
                         Generates no style.css file, but HTML files will be larger.
        noescape:        Do not escape html in doc text.
      java (Java):
        beans:           Members will be private, and setter methods will return void.
        private-members: Members will be private, but setter methods will return 'this' like usual.
        nocamel:         Do not use CamelCase field accessors with beans.
        fullcamel:       Convert underscored_accessor_or_service_names to camelCase.
        android:         Generated structures are Parcelable.
        android_legacy:  Do not use java.io.IOException(throwable) (available for Android 2.3 and above).
        option_type:     Wrap optional fields in an Option type.
        java5:           Generate Java 1.5 compliant code (includes android_legacy flag).
        reuse-objects:   Data objects will not be allocated, but existing instances will be used (read and write).
        sorted_containers:
                         Use TreeSet/TreeMap instead of HashSet/HashMap as a implementation of set/map.
        generated_annotations=[undated|suppress]:
                         undated: suppress the date at @Generated annotations
                         suppress: suppress @Generated annotations entirely
      javame (Java ME):
      js (Javascript):
        jquery:          Generate jQuery compatible code.
        node:            Generate node.js compatible code.
        ts:              Generate TypeScript definition files.
      json (JSON):
        merge:           Generate output with included files merged
      lua (Lua):
      ocaml (OCaml):
      perl (Perl):
      php (PHP):
        inlined:         Generate PHP inlined files
        server:          Generate PHP server stubs
        oop:             Generate PHP with object oriented subclasses
        rest:            Generate PHP REST processors
        nsglobal=NAME:   Set global namespace
        validate:        Generate PHP validator methods
        json:            Generate JsonSerializable classes (requires PHP >= 5.4)
      py (Python):
        new_style:       Generate new-style classes.
        twisted:         Generate Twisted-friendly RPC services.
        tornado:         Generate code for use with Tornado.
        utf8strings:     Encode/decode strings using utf8 in the generated code.
        coding=CODING:   Add file encoding declare in generated file.
        slots:           Generate code using slots for instance members.
        dynamic:         Generate dynamic code, less code generated but slower.
        dynbase=CLS      Derive generated classes from class CLS instead of TBase.
        dynexc=CLS       Derive generated exceptions from CLS instead of TExceptionBase.
        dynimport='from foo.bar import CLS'
                         Add an import line to generated code to find the dynbase class.
      rb (Ruby):
        rubygems:        Add a "require 'rubygems'" line to the top of each generated file.
        namespaced:      Generate files in idiomatic namespaced directories.
      st (Smalltalk):
      xsd (XSD):




  • 相关阅读:
    MySQL练习题
    InnoDB存储引擎+显示数据库引擎
    EMP+DEPT+SALGRADE 表的基本操作2
    EMP+DEPT+SALGRADE 表的基本操作1
    Git的使用
    JavaScript动画实例:旋转的正三角形
    JavaScript动画实例:曲线的绘制
    JavaScript动画实例:螺旋线
    JavaScript图形实例:阿基米德螺线
    JavaScript图形实例:平面镶嵌图案
  • 原文地址:https://www.cnblogs.com/AlienXu/p/6875981.html
Copyright © 2020-2023  润新知