程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> ImitateLogin新增插件機制以及又一個社交網站的支持,imitatelogin社交

ImitateLogin新增插件機制以及又一個社交網站的支持,imitatelogin社交

編輯:C#入門知識

ImitateLogin新增插件機制以及又一個社交網站的支持,imitatelogin社交


我的文章裡已經多次介紹 imitate-login ,這是我最近一直在維護的一個使用c#模擬社交網站登錄的開源項目,現在新增了對插件的支持以及一個新的網站(由於某種原因,會在文章結束部分介紹;而且僅會出現在博客中)。希望喜歡的讀者可以通過 Star & fork 來支持我,我也會據此來決定時間的分配。

imitate-login 現在已經提供了對插件的支持;目前有兩個部分使用到了插件機制,登錄自身實現以及登錄過程中的驗證碼識別過程;其中登錄過程僅支持 MEF(Managed Extensibility Framework)模式,而驗證碼識別過程支持 Thrift RPC (Apache Thrift)、HTTP RESTful (POST/GET)、MEF 三種方式。下面將介紹這三種插件的開發與配置方式,所有代碼均已經在 Extensions 。

 

Thrift RPC


 

在 Imitate Login 的庫中有通過 Thrift 文件生成的類 ThriftOperation,如果你使用其它語言開發,請通過 Thrift 生成對應的類,下面將介紹使用C#來開發插件。

 

首先,創建一個控制台應用程序,新增一個類繼承 ThriftOperation.Iface 並實現,這裡直接 return 一下:

class demo : ThriftOperation.Iface
{
    public string Operation(OperationObj operationObj)
    {
        return "1234";
    }
}

 

然後在主函數裡增加一個創建 Thrift 服務端得方法:

static void Main(string[] args)
{
    int port = 7801;

    string str = ConfigurationManager.AppSettings["ServerPort"];
    if (!string.IsNullOrEmpty(str))
        int.TryParse(str, out port);

    if (args != null && args.Length == 1)
    {
        int.TryParse(args[0], out port);
    }

    Start(port);
}

public static void Start(int port)
{
    TServerSocket serverTransport = new TServerSocket(port, 0, false);
    ThriftOperation.Processor processor = new ThriftOperation.Processor(new demo());
    TServer server = new TSimpleServer(processor, serverTransport);
    Console.WriteLine("Starting server on port {0} ...", port);
    server.Serve();
}

 

在使用時,你需要先啟動該插件程序,然後將下面配置部分合並放到程序運行目錄的 extension.conf 文件:

{
    "ExtendType": 3,
    "SupportSite": [2],
    "Path": null,
    "Host": "127.0.0.1",
    "Port": 7801,
    "UrlFormat": null,
    "HttpMethod": null
}

 

你可以使用 PluginConfigBuild 工具來生成配置文件,此處不再解釋具體細節。


HTTP RESTful


 

另外一種插件方式即使用通用的 Http RESTful API 來實現,如果通過 GET 方法,你僅能傳入一個枚舉用來表明網站以及一個字符串作為參數;如果你通過 POST 方法,需要通過 Thrift 獲得一個 OperationObj 類的定義,當然 C# 可以通過直接引用 imitate-login 庫來獲得。API 的編寫方法不再累述,接下來你需要將以下配置部分合並放到程序運行目錄的 extension.conf 文件:

{
    "ExtendType": 2,
    "SupportSite": [6],
    "Path": null,
    "Host": null,
    "Port": 0,
    "UrlFormat": "http://localhost:2920/Mail/SendMail?loginSite={0}&imageUrl={1}",
    "HttpMethod": "GET"
}

 

MEF


 

MEF 是微軟在 .NET 4.0 以後原生提供的一種插件模式;使用該方法需要用到 IMEFOperation 類,你需要通過引用 imitate-login 得到,demo 代碼如下:

[Export(typeof(IMEFOperation))]
[ExportMetadata("loginSite", LoginSite.Baidu)]
public class demo : IMEFOperation
{
    public string Operate(string imageUrl = "", Image image = null, params string[] param)
    {
        return "1234";
    }
}

 

這種方式需要在配置文件中指定插件的存放位置,位置支持相對運行目錄或絕對目錄;本例為將該插件生成的 dll 拷貝到程序運行目錄下的 Extensions 目錄中,配置文件如下:

{
    "ExtendType": 1,
    "SupportSite": [5, 1],
    "Path": "Extensions",
    "Host": null,
    "Port": 0,
    "UrlFormat": null,
    "HttpMethod": null
}

 

所有的配置文件均可以通過 PluginConfigBuild 工具來生成,其中 SupportSite 為支持的登錄網站的枚舉數組。

好了,接下來需要什麼自己動手試試吧!

 

部分內容將僅在個人博客中展示,請查看原文網址!

本文來自 The NewIdea,作者 Carey Tzou 。
原文地址:http://www.tnidea.com/imitate-login-support-plugin-now.html
未經授權,拒絕任何全文及摘要轉載!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved