1. 程式人生 > >c# wcf NetNamePipeBinding 實現同一系統上不同程序之間的通訊

c# wcf NetNamePipeBinding 實現同一系統上不同程序之間的通訊

wcf 程序之間的通訊,可以通過一個做為服務端和一個做為客戶端實現通訊

簡單的服務端包括兩部分:服務協定、服務的實現。

服務協定通過介面實現,定義了該服務執行的操作。

服務的實現就是繼承介面,實現介面的操作。

服務協定介面:

[ServiceContract]
    public interface IService
    {
        [OperationContract]
        void Hello();
    }

服務實現類:

    [ServiceBehavior]
   public class service:IService
    {
        public void Hello()
        {
            Console.WriteLine("hello");
        }
    }

至此服務端一些好,就一個簡單的方法。

重要的就是配置檔案的設定,vs2010 可以通過工具->wcf配置服務編輯器進行設定。服務端的設定如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <client>
            <endpoint address="net.pipe://localhost/service" binding="netNamedPipeBinding"
                bindingConfiguration="" contract="wcf_Service.IService" name="pipeClient"
                kind="" endpointConfiguration="" />
        </client>
        <services>
            <service name="wcf_Servicefg.service1">
                <endpoint address="net.pipe://localhost/service" binding="netNamedPipeBinding"
                    bindingConfiguration="" name="pipeClient" contract="wcf_Service.IService" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

下面就是客戶端的編寫。要把伺服器端配置檔案拷到客戶端(非常重要)。首先需要啟動服務。

ServiceHost sh = new ServiceHost(typeof(service)); //service 是伺服器端實現介面的service類。
sh.Open();

服務已經開啟,下一步許建立伺服器端和客戶端之間的通道。


            var binding = new NetNamedPipeBinding();
            var address = new EndpointAddress("net.pipe://localhost/service");
            var factory = new ChannelFactory<IService>(binding, address);
            IService channel = factory.CreateChannel();

至此通道已建立,可以通過通道呼叫伺服器端的方法,如下:

channel.Hello(); //hello()方法即是在伺服器端定義的方法。

以上實現了一個程序呼叫另一個程序的方法,即程序之間的通訊。

相關推薦

c# wcf NetNamePipeBinding 實現同一系統不同程序之間通訊

wcf 程序之間的通訊,可以通過一個做為服務端和一個做為客戶端實現通訊 簡單的服務端包括兩部分:服務協定、服務的實現。 服務協定通過介面實現,定義了該服務執行的操作。 服務的實現就是繼承介面,實現介面的操作。 服務協定介面: [ServiceContract]     pu

同一伺服器不同資料庫之間同步表資料

在同一個伺服器上有兩個資料庫A和B,現在想取B資料庫中的某個表中的資料插入到A中,做法是: 1、首先在A資料庫中建立一個dblink,其中testLink是dblink名字隨便取,username跟password都是B資料庫的登入名跟密碼; create public database link tes

C# asp.net實現文件

function asp.net visual 開發 null 前端代碼: 使用visual studio開發實現文件上傳 前端頁面代碼: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.as

jfinal+H5的websocket 實現同一賬戶在不同地點不同電腦只能登陸一個(互相踢下線)

公司專案需求,因為專案是開賬戶賣錢的,為了避免有的使用者開一個賬戶N個人用,所以要求A賬戶只能在一個地點登入,別人如果使用A賬戶在別的電腦或者地點登入後就會吧上一個人給踢下線,當然也可以讓後一個登入的人登入不了,這都是看你邏輯怎麼控制的。 效果類似是qq登入的效果,先來張

java web實現同一賬號在不同瀏覽器不能同時登入

網上看了很多方法,個人也看了,自己也總結了幾個比較常用的:           前提都是用session監聽器,對session的建立與銷燬進行監聽       一、在使用者登入時儲存該使用者的狀態有這幾種儲存方式:          1、儲存到記憶體中(applicati

kubernetes集群traefik ingress實現同一命名空間不同微服務模塊的訪問

xwiki 設置 traefik 技術分享 pull end point ron template 背景:kubernetes集群traefik ingress實現同一命名空間不同微服務模塊的訪問1.安裝traefik ingress cat > traefik-in

C#.NET常見問題(FAQ)-如何在不同窗體之間傳遞值

還需 無法訪問 需要 faq 實現 blog 訪問 img mail 最簡單的方法是在定義窗體的時候就寫好幾個變量,在實例化Form2的時候,就把這些參數傳遞過去 ?或者你也可以定義一個類,然後通過這個類的靜態變量交互(註意只能用靜態的,因為Form2無法訪問

安卓多執行緒間通訊和多程序之間通訊有什麼不同?分別怎麼實現?

**當一個程式第一次啟動的時候,Android會去動一個Linux進行和一個主執行緒,預設情況下,所有改程式元件都將在該程序和執行緒中 執行,同時Android會為每個應用程式分配一個單獨的Linux使用者,Android會盡量保留一個正在執行的程序,只在記憶體資源出現不足時,Andro

C#用反射實現兩個類的物件之間相同屬性的值的複製

在進行實體轉換操作的時候如果需要在對兩個實體之間兩個屬性欄位差不多相同的類要進行一個互相的轉換,我們要把a物件的所有欄位的值都複製給b物件,我們只能用b.屬性=a.屬性來寫,如果屬性欄位太多的話,就要寫很多行復制語句,麻煩還容易漏掉一些,這個時候可以利用c#的反射來實現複製。我們可以寫這樣一個利用泛

Android實現強制下線(不同應用之間)功能————簡易微信聊天示例

Android的實現強制下線(不同應用之間)功能----簡易微信聊天示例 強制下線功能需要先關閉所有活動,然後在回到登入介面。 新建一個ActivityCollector類管理所有活動。下見程式碼段: //需要用到一個專門的集合類對所有的活動進行管理 public class Activ

【轉】Linux系統不同機器之間拷貝檔案的方法

在Linux系統下,不同機器上實現檔案拷貝 一、將本地檔案拷貝到遠端機器: 其中: /home/administrator/      本地檔案的絕對路徑news.txt                          要複製到伺服器上的本地檔案root     

C語言快速實現整數IP和字串IP之間的轉換

IP一般由32位整陣列成,按每8位劃分為4部分:255.255.255.255 該顯示方式為字串形式,而IP一般是以整數形式顯示。下面通過位移和求餘取整操作快速實現整數IP轉換為字串IP: 整數I

程序系統呼叫、程序通訊--Head First C讀書筆記

程序與系統呼叫 程序 程序是儲存器中執行的程式。Windows通過taskmgr檢視,Linux通過ps -ef檢視系統中執行的程序。作業系統用一個數字來標識程序,它叫程序識別符號(process identifier,簡稱PID)。 system()

MYSQL資料庫同一臺機器不同資料庫之間的資料同步

1.主上修改my.cnf檔案:server-id=1log-bin=mysql-bin2.從上修改配置檔案 my.cnfserver-id=2relay-log=relay-binread-only =1replicate-ignore-db = mysqlreplicate

Linux 系統應用程式設計——程序通訊

       現在再Linux應用較多的程序間通訊方式主要有以下幾種: 1)無名管道(pipe)及有名管道(fifo):無名管道可用於具有親緣關係程序間的通訊;有名管道除具有管道相似的功能外,它還允許無親緣關係程序使用; 2)訊號(signal):訊號是在軟體層次上對中斷機

實現不同程序之間通訊

  程序之間的通訊是為了解決不同程序之間的資料傳輸問題,這樣可以讓不同程式互動資料。實現程序通訊的方式:1、剪下板;2、COM;3、記憶體對映檔案;4、WCF 1、剪下板Clipboard在程序間傳送物件   剪下板是一個供應用程式使用的公有區域。在.NET中定一個了一個DataFormats類,此類包含

一個實現瀏覽器網頁與本地程序之間進行雙向調用的輕量級、強兼容、可擴展的插件開發平臺—本網通

特殊 git 運行環境 mac office文檔 linu 網頁 中繼 安全 通過本網通插件平臺可實現在網頁中的JavaScript腳本無障礙訪問本地電腦的硬件、調用本地系統的API及相關組件,同時可徹底解決ActiveX組件在Chrome、FireFox、Opera、Ed

不同程序之間的關係

不同程序之間的關係 首先要明確一點,所有我們建立的程序都是存在一個父親程序,這個父親程序的作用在於子程序執行完成,其記憶體空間需要釋放掉,那麼釋放記憶體空間的這個行為是由父程序去做的. 父程序的職能就是為子程序在結束的時候釋放掉空間,那麼同樣會存在父程序結束了,子程序還沒有結束的情況

socket實現客戶端和客戶端之間通訊和聊天

1.實體類 package edu.tcu.cn; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Pr

不同VLAN之間通訊的原理

在劃分VLAN後,不同VLAN之間不能直接進行二層通訊。如果要實現VLAN間通訊,可以採取以下3種方案之一。 1.三層VLANIF介面方案 這是一種通過計算機網路體系結構中第三層(網路層)來實現VLAN間通訊的解決方案。每個VLAN都可以配置一個三層VLANIF邏輯介面,而