You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/09/21 16:27:22 UTC
[26/52] [partial] ignite git commit: IGNITE-1513: Moved .Net.
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Apache.Ignite/Config/IConfigurator.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Apache.Ignite/Config/IConfigurator.cs b/modules/platform/dotnet/Apache.Ignite/Config/IConfigurator.cs
new file mode 100644
index 0000000..f5c0acf
--- /dev/null
+++ b/modules/platform/dotnet/Apache.Ignite/Config/IConfigurator.cs
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Config
+{
+ using Apache.Ignite.Core;
+
+ /// <summary>
+ /// Configurator which is capable of setting configuration properties taken from somewhere.
+ /// </summary>
+ internal interface IConfigurator<in T>
+ {
+ /// <summary>
+ /// Set configuration.
+ /// </summary>
+ /// <param name="cfg">Configuration.</param>
+ /// <param name="src">Source.</param>
+ void Configure(IgniteConfiguration cfg, T src);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Apache.Ignite/IgniteRunner.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Apache.Ignite/IgniteRunner.cs b/modules/platform/dotnet/Apache.Ignite/IgniteRunner.cs
new file mode 100644
index 0000000..122994f
--- /dev/null
+++ b/modules/platform/dotnet/Apache.Ignite/IgniteRunner.cs
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Configuration;
+ using System.Linq;
+ using System.ServiceProcess;
+ using Apache.Ignite.Config;
+ using Apache.Ignite.Core;
+ using Apache.Ignite.Core.Impl;
+ using Apache.Ignite.Service;
+
+ /// <summary>
+ /// Runner class.
+ /// </summary>
+ public class IgniteRunner
+ {
+ /** Help commands. */
+ private static readonly IList<string> Help = new List<string> { "/help", "-help", "--help" };
+
+ /** Argument meaning that this is service call. */
+ internal static readonly string Svc = "/service";
+
+ /** Service install command. */
+ internal static readonly string SvcInstall = "/install";
+
+ /** Service uninstall command. */
+ internal static readonly string SvcUninstall = "/uninstall";
+
+ /// <summary>
+ /// Application entry point.
+ /// </summary>
+ internal static void Main(string[] args)
+ {
+ IgniteConfiguration cfg;
+
+ bool svc = false;
+ bool install = false;
+
+ try
+ {
+ // Check for special cases.
+ if (args.Length > 0)
+ {
+ string first = args[0].ToLower();
+
+ if (Help.Contains(first))
+ {
+ PrintHelp();
+
+ return;
+ }
+
+ if (Svc.Equals(first))
+ {
+ args = RemoveFirstArg(args);
+
+ svc = true;
+ }
+
+ else if (SvcInstall.Equals(first))
+ {
+ args = RemoveFirstArg(args);
+
+ install = true;
+ }
+ else if (SvcUninstall.Equals(first))
+ {
+ IgniteService.Uninstall();
+
+ return;
+ }
+ }
+
+ if (!svc)
+ {
+ // Pick application configuration.
+ cfg = new IgniteConfiguration();
+
+ new AppSettingsConfigurator().Configure(cfg, ConfigurationManager.AppSettings);
+
+ // Pick command line arguments.
+ new ArgsConfigurator().Configure(cfg, args);
+
+ if (install)
+ IgniteService.DoInstall(cfg);
+ else
+ {
+ Ignition.Start(cfg);
+
+ IgniteManager.DestroyJvm();
+ }
+
+ return;
+ }
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine("ERROR: " + e.Message);
+
+ Environment.Exit(-1);
+ }
+
+ // If we are here, then this is a service call.
+ cfg = new IgniteConfiguration();
+
+ // Use only arguments, not app.config.
+ new ArgsConfigurator().Configure(cfg, args);
+
+ ServiceBase.Run(new IgniteService(cfg));
+ }
+
+ /// <summary>
+ /// Prints help.
+ /// </summary>
+ private static void PrintHelp()
+ {
+ Console.WriteLine("Usage: Apache.Ignite.exe [/install] [/uninstall] [-options]");
+ Console.WriteLine("");
+ Console.WriteLine("\t/install [-options] installs Ignite Windows service with provided options");
+ Console.WriteLine("\t/uninstall uninstalls Ignite Windows service");
+ Console.WriteLine("");
+ Console.WriteLine("Options:");
+ Console.WriteLine("\t-IgniteHome path to Ignite installation directory (if not provided IGNITE_HOME environment variable is used)");
+ Console.WriteLine("\t-springConfigUrl path to spring configuration file (if not provided \"config/default-config.xml\" is used)");
+ Console.WriteLine("\t-jvmDllPath path to JVM library jvm.dll (if not provided JAVA_HOME environment variable is used)");
+ Console.WriteLine("\t-jvmClasspath classpath passed to JVM (enlist additional jar files here)");
+ Console.WriteLine("\t-suppressWarnings wether to print warnings");
+ Console.WriteLine("\t-J<javaOption> JVM options passed to created JVM");
+ Console.WriteLine("\t-assembly=userLib.dll additional .Net assemblies");
+ Console.WriteLine("\t-jvmInitialMemoryMB Initial Java heap size, in megabytes. Maps to -Xms Java parameter. Defaults to 512.");
+ Console.WriteLine("\t-jvmMaxMemoryMB Maximum Java heap size, in megabytes. Maps to -Xmx Java parameter. Defaults to 1024.");
+ Console.WriteLine("");
+ Console.WriteLine("Examples:");
+ Console.WriteLine("\tApache.Ignite.exe -J-Xms1024m -J-Xmx1024m -springConfigUrl=C:/woer/gg-test/my-test-gg-confignative.xml");
+ Console.WriteLine("\tApache.Ignite.exe -IgniteHome=c:/apache-ignite -jvmClasspath=libs/myLib1.jar;libs/myLib2.jar");
+ Console.WriteLine("\tApache.Ignite.exe -assembly=c:/myProject/libs/lib1.dll -assembly=c:/myProject/libs/lib2.dll");
+ Console.WriteLine("\tApache.Ignite.exe -jvmInitialMemoryMB=1024 -jvmMaxMemoryMB=4096");
+ Console.WriteLine("");
+ Console.WriteLine("Note:");
+ Console.WriteLine("Command line settings have priority over Apache.Ignite.exe.config settings. JVM options and assemblies are concatenated; data from config file comes first, then data from command line.");
+ }
+
+ /// <summary>
+ /// Remove the first argument.
+ /// </summary>
+ /// <param name="args">Arguments.</param>
+ /// <returns>New arguments.</returns>
+ private static string[] RemoveFirstArg(string[] args)
+ {
+ return args.Skip(1).ToArray();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs b/modules/platform/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..03f7fb9
--- /dev/null
+++ b/modules/platform/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Apache.Ignite")]
+[assembly: AssemblyDescription("Apache Ignite .NET Executable")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Apache Software Foundation")]
+[assembly: AssemblyProduct("Apache Ignite")]
+[assembly: AssemblyCopyright("Copyright © 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("0f9702ec-da7d-4ce5-b4b7-73310c885355")]
+
+[assembly: AssemblyVersion("1.5.0")]
+[assembly: AssemblyFileVersion("1.5.0")]
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Apache.Ignite/Service/IgniteService.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Apache.Ignite/Service/IgniteService.cs b/modules/platform/dotnet/Apache.Ignite/Service/IgniteService.cs
new file mode 100644
index 0000000..a818171
--- /dev/null
+++ b/modules/platform/dotnet/Apache.Ignite/Service/IgniteService.cs
@@ -0,0 +1,219 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Service
+{
+ using System;
+ using System.ComponentModel;
+ using System.IO;
+ using System.Linq;
+ using System.Reflection;
+ using System.Runtime.InteropServices;
+ using System.ServiceProcess;
+ using System.Text;
+ using Apache.Ignite.Config;
+ using Apache.Ignite.Core;
+ using Apache.Ignite.Core.Common;
+
+ /// <summary>
+ /// Ignite windows service.
+ /// </summary>
+ internal class IgniteService : ServiceBase
+ {
+ /** Service name. */
+ internal static readonly string SvcName = "Apache Ignite";
+
+ /** Service display name. */
+ internal static readonly string SvcDisplayName = "Apache Ignite .NET " +
+ Assembly.GetExecutingAssembly().GetName().Version.ToString(4);
+
+ /** Service description. */
+ internal static readonly string SvcDesc = "Apache Ignite .Net Service.";
+
+ /** Current executable name. */
+ internal static readonly string ExeName =
+ new FileInfo(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath).FullName;
+
+ /** Current executable fully qualified name. */
+ internal static readonly string FullExeName = Path.GetFileName(FullExeName);
+
+ /** Ignite configuration to start with. */
+ private readonly IgniteConfiguration _cfg;
+
+ /// <summary>
+ /// Constructor.
+ /// </summary>
+ public IgniteService(IgniteConfiguration cfg)
+ {
+ AutoLog = true;
+ CanStop = true;
+ ServiceName = SvcName;
+
+ _cfg = cfg;
+ }
+
+ /** <inheritDoc /> */
+ protected override void OnStart(string[] args)
+ {
+ Ignition.Start(_cfg);
+ }
+
+ /** <inheritDoc /> */
+ protected override void OnStop()
+ {
+ Ignition.StopAll(true);
+ }
+
+ /// <summary>
+ /// Install service programmatically.
+ /// </summary>
+ /// <param name="cfg">Ignite configuration.</param>
+ internal static void DoInstall(IgniteConfiguration cfg)
+ {
+ // 1. Check if already defined.
+ if (ServiceController.GetServices().Any(svc => SvcName.Equals(svc.ServiceName)))
+ {
+ throw new IgniteException("Ignite service is already installed (uninstall it using \"" +
+ ExeName + " " + IgniteRunner.SvcUninstall + "\" first)");
+ }
+
+ // 2. Create startup arguments.
+ var args = ArgsConfigurator.ToArgs(cfg);
+
+ if (args.Length > 0)
+ {
+ Console.WriteLine("Installing \"" + SvcName + "\" service with the following startup " +
+ "arguments:");
+
+ foreach (var arg in args)
+ Console.WriteLine("\t" + arg);
+ }
+ else
+ Console.WriteLine("Installing \"" + SvcName + "\" service ...");
+
+ // 3. Actual installation.
+ Install0(args);
+
+ Console.WriteLine("\"" + SvcName + "\" service installed successfully.");
+ }
+
+ /// <summary>
+ /// Uninstall service programmatically.
+ /// </summary>
+ internal static void Uninstall()
+ {
+ var svc = ServiceController.GetServices().FirstOrDefault(x => SvcName == x.ServiceName);
+
+ if (svc == null)
+ {
+ Console.WriteLine("\"" + SvcName + "\" service is not installed.");
+ }
+ else if (svc.Status != ServiceControllerStatus.Stopped)
+ {
+ throw new IgniteException("Ignite service is running, please stop it first.");
+ }
+ else
+ {
+ Console.WriteLine("Uninstalling \"" + SvcName + "\" service ...");
+
+ Uninstall0();
+
+ Console.WriteLine("\"" + SvcName + "\" service uninstalled successfully.");
+ }
+ }
+
+ /// <summary>
+ /// Native service installation.
+ /// </summary>
+ /// <param name="args">Arguments.</param>
+ private static void Install0(string[] args)
+ {
+ // 1. Prepare arguments.
+ var binPath = new StringBuilder(FullExeName).Append(" ").Append(IgniteRunner.Svc);
+
+ foreach (var arg in args)
+ binPath.Append(" ").Append(arg);
+
+ // 2. Get SC manager.
+ var scMgr = OpenServiceControlManager();
+
+ // 3. Create service.
+ var svc = NativeMethods.CreateService(
+ scMgr,
+ SvcName,
+ SvcDisplayName,
+ 983551, // Access constant.
+ 0x10, // Service type SERVICE_WIN32_OWN_PROCESS.
+ 0x2, // Start type SERVICE_AUTO_START.
+ 0x2, // Error control SERVICE_ERROR_SEVERE.
+ binPath.ToString(),
+ null,
+ IntPtr.Zero,
+ null,
+ null, // Use priviliged LocalSystem account.
+ null
+ );
+
+ if (svc == IntPtr.Zero)
+ throw new IgniteException("Failed to create the service.", new Win32Exception());
+
+ // 4. Set description.
+ var desc = new ServiceDescription {desc = Marshal.StringToHGlobalUni(SvcDesc)};
+
+
+ try
+ {
+ if (!NativeMethods.ChangeServiceConfig2(svc, 1u, ref desc))
+ throw new IgniteException("Failed to set service description.", new Win32Exception());
+ }
+ finally
+ {
+ Marshal.FreeHGlobal(desc.desc);
+ }
+ }
+
+ /// <summary>
+ /// Native service uninstallation.
+ /// </summary>
+ private static void Uninstall0()
+ {
+ var scMgr = OpenServiceControlManager();
+
+ var svc = NativeMethods.OpenService(scMgr, SvcName, 65536);
+
+ if (svc == IntPtr.Zero)
+ throw new IgniteException("Failed to uninstall the service.", new Win32Exception());
+
+ NativeMethods.DeleteService(svc);
+ }
+
+ /// <summary>
+ /// Opens SC manager.
+ /// </summary>
+ /// <returns>SC manager pointer.</returns>
+ private static IntPtr OpenServiceControlManager()
+ {
+ var ptr = NativeMethods.OpenSCManager(null, null, 983103);
+
+ if (ptr == IntPtr.Zero)
+ throw new IgniteException("Failed to initialize Service Control manager " +
+ "(did you run the command as administrator?)", new Win32Exception());
+
+ return ptr;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Apache.Ignite/Service/NativeMethods.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Apache.Ignite/Service/NativeMethods.cs b/modules/platform/dotnet/Apache.Ignite/Service/NativeMethods.cs
new file mode 100644
index 0000000..56ab15d
--- /dev/null
+++ b/modules/platform/dotnet/Apache.Ignite/Service/NativeMethods.cs
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Service
+{
+ using System;
+ using System.Runtime.InteropServices;
+
+ /// <summary>
+ /// Native methods.
+ /// </summary>
+ internal class NativeMethods
+ {
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern IntPtr OpenSCManager(string machineName, string dbName, int access);
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern IntPtr CreateService(
+ IntPtr db,
+ string svcName,
+ string displayName,
+ int access,
+ int svcType,
+ int startType,
+ int errControl,
+ string binPath,
+ string loadOrderGrp,
+ IntPtr pTagId,
+ string dependencies,
+ string servicesStartName,
+ string pwd
+ );
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern IntPtr OpenService(IntPtr db, string svcName, int access);
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern bool DeleteService(IntPtr svc);
+
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
+ public static extern bool ChangeServiceConfig2(IntPtr svc, uint infoLevel, ref ServiceDescription desc);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Apache.Ignite/Service/ServiceDescription.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Apache.Ignite/Service/ServiceDescription.cs b/modules/platform/dotnet/Apache.Ignite/Service/ServiceDescription.cs
new file mode 100644
index 0000000..a81a737
--- /dev/null
+++ b/modules/platform/dotnet/Apache.Ignite/Service/ServiceDescription.cs
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Apache.Ignite.Service
+{
+ using System;
+ using System.Runtime.InteropServices;
+
+ /// <summary>
+ /// Service description structure.
+ /// </summary>
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+ public struct ServiceDescription
+ {
+ /** Pointer to description. */
+ public IntPtr desc;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Apache.Ignite_x86.slnrel
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Apache.Ignite_x86.slnrel b/modules/platform/dotnet/Apache.Ignite_x86.slnrel
new file mode 100644
index 0000000..a85e118
--- /dev/null
+++ b/modules/platform/dotnet/Apache.Ignite_x86.slnrel
@@ -0,0 +1,43 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Core", "Apache.Ignite.Core\Apache.Ignite.Core.csproj", "{4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\cpp\src\common\project\vs\common.vcxproj", "{4F7E4917-4612-4B96-9838-025711ADE391}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite", "Apache.Ignite\Apache.Ignite.csproj", "{27F7F3C6-BDDE-43A9-B565-856F8395A04B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x64.ActiveCfg = Debug|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x64.Build.0 = Debug|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x86.ActiveCfg = Debug|x86
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x86.Build.0 = Debug|x86
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x64.ActiveCfg = Release|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x64.Build.0 = Release|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x86.ActiveCfg = Release|x86
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x86.Build.0 = Release|x86
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x64.ActiveCfg = Debug|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x64.Build.0 = Debug|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x86.ActiveCfg = Debug|Win32
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x86.Build.0 = Debug|Win32
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x64.ActiveCfg = Release|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x64.Build.0 = Release|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x86.ActiveCfg = Release|Win32
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x86.Build.0 = Release|Win32
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x64.ActiveCfg = Debug|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x64.Build.0 = Debug|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x86.ActiveCfg = Debug|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x86.Build.0 = Debug|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x64.ActiveCfg = Release|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x64.Build.0 = Release|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x86.ActiveCfg = Release|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples.sln
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples.sln b/modules/platform/dotnet/Examples/Apache.Ignite.Examples.sln
new file mode 100644
index 0000000..c1337f3
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples.sln
@@ -0,0 +1,72 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.31101.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Core", "..\Apache.Ignite.Core\Apache.Ignite.Core.csproj", "{4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\..\cpp\common\project\vs\common.vcxproj", "{4F7E4917-4612-4B96-9838-025711ADE391}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Examples", "Apache.Ignite.Examples\Apache.Ignite.Examples.csproj", "{069FA680-3C4D-43A9-B84F-E67513B87827}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.ExamplesDll", "Apache.Ignite.ExamplesDll\Apache.Ignite.ExamplesDll.csproj", "{DFB08363-202E-412D-8812-349EF10A8702}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{F1491682-C798-4C23-8239-16C5BC2C5A02}"
+ ProjectSection(SolutionItems) = preProject
+ Config\example-cache-query.xml = Config\example-cache-query.xml
+ Config\example-cache-store.xml = Config\example-cache-store.xml
+ Config\example-cache.xml = Config\example-cache.xml
+ Config\example-compute.xml = Config\example-compute.xml
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite", "..\Apache.Ignite\Apache.Ignite.csproj", "{27F7F3C6-BDDE-43A9-B565-856F8395A04B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x64.ActiveCfg = Debug|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x64.Build.0 = Debug|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x86.ActiveCfg = Debug|x86
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Debug|x86.Build.0 = Debug|x86
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x64.ActiveCfg = Release|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x64.Build.0 = Release|x64
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x86.ActiveCfg = Release|x86
+ {4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}.Release|x86.Build.0 = Release|x86
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x64.ActiveCfg = Debug|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x64.Build.0 = Debug|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x86.ActiveCfg = Debug|Win32
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Debug|x86.Build.0 = Debug|Win32
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x64.ActiveCfg = Release|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x64.Build.0 = Release|x64
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x86.ActiveCfg = Release|Win32
+ {4F7E4917-4612-4B96-9838-025711ADE391}.Release|x86.Build.0 = Release|Win32
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x64.ActiveCfg = Debug|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x64.Build.0 = Debug|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x86.ActiveCfg = Debug|x86
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x86.Build.0 = Debug|x86
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x64.ActiveCfg = Release|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x64.Build.0 = Release|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x86.ActiveCfg = Release|x86
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x86.Build.0 = Release|x86
+ {DFB08363-202E-412D-8812-349EF10A8702}.Debug|x64.ActiveCfg = Debug|x64
+ {DFB08363-202E-412D-8812-349EF10A8702}.Debug|x86.ActiveCfg = Debug|x86
+ {DFB08363-202E-412D-8812-349EF10A8702}.Release|x64.ActiveCfg = Release|x64
+ {DFB08363-202E-412D-8812-349EF10A8702}.Release|x86.ActiveCfg = Release|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x64.ActiveCfg = Debug|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x64.Build.0 = Debug|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x86.ActiveCfg = Debug|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Debug|x86.Build.0 = Debug|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x64.ActiveCfg = Release|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x64.Build.0 = Release|x64
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x86.ActiveCfg = Release|x86
+ {27F7F3C6-BDDE-43A9-B565-856F8395A04B}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples.slnrel
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples.slnrel b/modules/platform/dotnet/Examples/Apache.Ignite.Examples.slnrel
new file mode 100644
index 0000000..d898abc
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples.slnrel
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.Examples", "Apache.Ignite.Examples\Apache.Ignite.Examples.csproj", "{069FA680-3C4D-43A9-B84F-E67513B87827}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apache.Ignite.ExamplesDll", "Apache.Ignite.ExamplesDll\Apache.Ignite.ExamplesDll.csproj", "{DFB08363-202E-412D-8812-349EF10A8702}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{F1491682-C798-4C23-8239-16C5BC2C5A02}"
+ ProjectSection(SolutionItems) = preProject
+ Config\example-cache-query.xml = Config\example-cache-query.xml
+ Config\example-cache-store.xml = Config\example-cache-store.xml
+ Config\example-cache.xml = Config\example-cache.xml
+ Config\example-compute.xml = Config\example-compute.xml
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x64.ActiveCfg = Debug|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x64.Build.0 = Debug|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x86.ActiveCfg = Debug|x86
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Debug|x86.Build.0 = Debug|x86
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x64.ActiveCfg = Release|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x64.Build.0 = Release|x64
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x86.ActiveCfg = Release|x86
+ {069FA680-3C4D-43A9-B84F-E67513B87827}.Release|x86.Build.0 = Release|x86
+ {DFB08363-202E-412D-8812-349EF10A8702}.Debug|x64.ActiveCfg = Debug|x64
+ {DFB08363-202E-412D-8812-349EF10A8702}.Debug|x86.ActiveCfg = Debug|x86
+ {DFB08363-202E-412D-8812-349EF10A8702}.Release|x64.ActiveCfg = Release|x64
+ {DFB08363-202E-412D-8812-349EF10A8702}.Release|x86.ActiveCfg = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csproj
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csproj b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csproj
new file mode 100644
index 0000000..8ee90d9
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csproj
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{069FA680-3C4D-43A9-B84F-E67513B87827}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Apache.Ignite.Examples</RootNamespace>
+ <AssemblyName>Apache.Ignite.Examples</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <PlatformTarget>x64</PlatformTarget>
+ <OutputPath>bin\x64\Debug\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <PlatformTarget>x64</PlatformTarget>
+ <OutputPath>bin\x64\Release\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup>
+ <StartupObject>Apache.Ignite.Examples.Compute.TaskExample</StartupObject>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <PlatformTarget>x86</PlatformTarget>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <OutputPath>bin\x86\Release\</OutputPath>
+ <PlatformTarget>x86</PlatformTarget>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Compute\ClosureExample.cs" />
+ <Compile Include="Compute\TaskExample.cs" />
+ <Compile Include="Datagrid\ContinuousQueryExample.cs" />
+ <Compile Include="Datagrid\CrossPlatformExample.cs" />
+ <Compile Include="Datagrid\DataStreamerExample.cs" />
+ <Compile Include="Datagrid\PutGetExample.cs" />
+ <Compile Include="Datagrid\QueryExample.cs" />
+ <Compile Include="Datagrid\StoreExample.cs" />
+ <Compile Include="Datagrid\TransactionExample.cs" />
+ <Compile Include="Events\EventsExample.cs" />
+ <Compile Include="Messaging\MessagingExample.cs" />
+ <Compile Include="Misc\LifecycleExample.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Services\IMapService.cs" />
+ <Compile Include="Services\ServicesExample.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\Apache.Ignite.Core\Apache.Ignite.Core.csproj">
+ <Project>{4CD2F726-7E2B-46C4-A5BA-057BB82EECB6}</Project>
+ <Name>Apache.Ignite.Core</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Apache.Ignite.ExamplesDll\Apache.Ignite.ExamplesDll.csproj">
+ <Project>{dfb08363-202e-412d-8812-349ef10a8702}</Project>
+ <Name>Apache.Ignite.ExamplesDll</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csprojrel
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csprojrel b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csprojrel
new file mode 100644
index 0000000..ff13ddc
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Apache.Ignite.Examples.csprojrel
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{069FA680-3C4D-43A9-B84F-E67513B87827}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Apache.Ignite.Examples</RootNamespace>
+ <AssemblyName>Apache.Ignite.Examples</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <PlatformTarget>x64</PlatformTarget>
+ <OutputPath>bin\x64\Debug\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <PlatformTarget>x64</PlatformTarget>
+ <OutputPath>bin\x64\Release\</OutputPath>
+ </PropertyGroup>
+ <PropertyGroup>
+ <StartupObject>Apache.Ignite.Examples.Compute.TaskExample</StartupObject>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <PlatformTarget>x86</PlatformTarget>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <OutputPath>bin\x86\Release\</OutputPath>
+ <PlatformTarget>x86</PlatformTarget>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Apache.Ignite.Core">
+ <HintPath>..\..\Apache.Ignite\bin\$(Platform)\$(Configuration)\Apache.Ignite.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Compute\ClosureExample.cs" />
+ <Compile Include="Compute\TaskExample.cs" />
+ <Compile Include="Datagrid\ContinuousQueryExample.cs" />
+ <Compile Include="Datagrid\CrossPlatformExample.cs" />
+ <Compile Include="Datagrid\DataStreamerExample.cs" />
+ <Compile Include="Datagrid\PutGetExample.cs" />
+ <Compile Include="Datagrid\QueryExample.cs" />
+ <Compile Include="Datagrid\StoreExample.cs" />
+ <Compile Include="Datagrid\TransactionExample.cs" />
+ <Compile Include="Events\EventsExample.cs" />
+ <Compile Include="Messaging\MessagingExample.cs" />
+ <Compile Include="Misc\LifecycleExample.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Services\IMapService.cs" />
+ <Compile Include="Services\ServicesExample.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Apache.Ignite.ExamplesDll\Apache.Ignite.ExamplesDll.csproj">
+ <Project>{dfb08363-202e-412d-8812-349ef10a8702}</Project>
+ <Name>Apache.Ignite.ExamplesDll</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/App.config
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/App.config b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/App.config
new file mode 100644
index 0000000..8e69aeb
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/App.config
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<configuration>
+ <runtime>
+ <gcServer enabled="true" />
+ </runtime>
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/ClosureExample.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/ClosureExample.cs b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/ClosureExample.cs
new file mode 100644
index 0000000..7d0128d
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/ClosureExample.cs
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Apache.Ignite.Core;
+using Apache.Ignite.ExamplesDll.Compute;
+
+namespace Apache.Ignite.Examples.Compute
+{
+ /// <summary>
+ /// Example demonstrating closure execution.
+ /// <para />
+ /// 1) Build the project Apache.Ignite.ExamplesDll (select it -> right-click -> Build).
+ /// Apache.Ignite.ExamplesDll.dll must appear in %IGNITE_HOME%/platforms/dotnet/Examples/Apache.Ignite.ExamplesDll/bin/${Platform]/${Configuration} folder.
+ /// 2) Set this class as startup object (Apache.Ignite.Examples project -> right-click -> Properties ->
+ /// Application -> Startup object);
+ /// 3) Start example (F5 or Ctrl+F5).
+ /// <para />
+ /// This example can be run with standalone Apache Ignite .Net node:
+ /// 1) Run %IGNITE_HOME%/platforms/dotnet/Apache.Ignite/bin/${Platform]/${Configuration}/Apache.Ignite.exe:
+ /// Apache.Ignite.exe -IgniteHome="%IGNITE_HOME%" -springConfigUrl=platforms\dotnet\examples\config\example-compute.xml -assembly=[path_to_Apache.Ignite.ExamplesDll.dll]
+ /// 2) Start example.
+ /// </summary>
+ public class ClosureExample
+ {
+ /// <summary>
+ /// Runs the example.
+ /// </summary>
+ [STAThread]
+ public static void Main()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ SpringConfigUrl = @"platforms\dotnet\examples\config\example-compute.xml",
+ JvmOptions = new List<string> { "-Xms512m", "-Xmx1024m" }
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Console.WriteLine();
+ Console.WriteLine(">>> Closure execution example started.");
+
+ // Split the string by spaces to count letters in each word in parallel.
+ ICollection<string> words = "Count characters using closure".Split().ToList();
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Calculating character count with manual reducing:");
+
+ var res = ignite.GetCompute().Apply(new CharacterCountClosure(), words);
+
+ int totalLen = res.Sum();
+
+ Console.WriteLine(">>> Total character count: " + totalLen);
+ Console.WriteLine();
+ Console.WriteLine(">>> Calculating character count with reducer:");
+
+ totalLen = ignite.GetCompute().Apply(new CharacterCountClosure(), words, new CharacterCountReducer());
+
+ Console.WriteLine(">>> Total character count: " + totalLen);
+ Console.WriteLine();
+ }
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Example finished, press any key to exit ...");
+ Console.ReadKey();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/TaskExample.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/TaskExample.cs b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/TaskExample.cs
new file mode 100644
index 0000000..47fee9e
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Compute/TaskExample.cs
@@ -0,0 +1,140 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using Apache.Ignite.Core;
+using Apache.Ignite.ExamplesDll.Compute;
+using Apache.Ignite.ExamplesDll.Portable;
+
+namespace Apache.Ignite.Examples.Compute
+{
+ /// <summary>
+ /// Example demonstrating task execution.
+ /// <para />
+ /// 1) Build the project Apache.Ignite.ExamplesDll (select it -> right-click -> Build).
+ /// Apache.Ignite.ExamplesDll.dll must appear in %IGNITE_HOME%/platforms/dotnet/Examples/Apache.Ignite.ExamplesDll/bin/${Platform]/${Configuration} folder.
+ /// 2) Set this class as startup object (Apache.Ignite.Examples project -> right-click -> Properties ->
+ /// Application -> Startup object);
+ /// 3) Start example (F5 or Ctrl+F5).
+ /// <para />
+ /// This example can be run with standalone Apache Ignite .Net node:
+ /// 1) Run %IGNITE_HOME%/platforms/dotnet/Apache.Ignite/bin/${Platform]/${Configuration}/Apache.Ignite.exe:
+ /// Apache.Ignite.exe -IgniteHome="%IGNITE_HOME%" -springConfigUrl=platforms\dotnet\examples\config\example-compute.xml -assembly=[path_to_Apache.Ignite.ExamplesDll.dll]
+ /// 2) Start example.
+ /// </summary>
+ public class TaskExample
+ {
+ /// <summary>
+ /// Runs the example.
+ /// </summary>
+ [STAThread]
+ public static void Main()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ SpringConfigUrl = @"platforms\dotnet\examples\config\example-compute.xml",
+ JvmOptions = new List<string> { "-Xms512m", "-Xmx1024m" }
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Console.WriteLine();
+ Console.WriteLine(">>> Task execution example started.");
+
+ // Generate employees to calculate average salary for.
+ ICollection<Employee> employees = Employees();
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Calculating average salary for employees:");
+
+ foreach (Employee employee in employees)
+ Console.WriteLine(">>> " + employee);
+
+ // Execute task and get average salary.
+ var avgSalary = ignite.GetCompute().Execute(new AverageSalaryTask(), employees);
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Average salary for all employees: " + avgSalary);
+ Console.WriteLine();
+ }
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Example finished, press any key to exit ...");
+ Console.ReadKey();
+ }
+
+ /// <summary>
+ /// Generates collection of employees for example.
+ /// </summary>
+ /// <returns>Collection of employees.</returns>
+ private static ICollection<Employee> Employees()
+ {
+ return new []
+ {
+ new Employee(
+ "James Wilson",
+ 12500,
+ new Address("1096 Eddy Street, San Francisco, CA", 94109),
+ new List<string> {"Human Resources", "Customer Service"}
+ ),
+ new Employee(
+ "Daniel Adams",
+ 11000,
+ new Address("184 Fidler Drive, San Antonio, TX", 78205),
+ new List<string> {"Development", "QA"}
+ ),
+ new Employee(
+ "Cristian Moss",
+ 12500,
+ new Address("667 Jerry Dove Drive, Florence, SC", 29501),
+ new List<string> {"Logistics"}
+ ),
+ new Employee(
+ "Allison Mathis",
+ 25300,
+ new Address("2702 Freedom Lane, Hornitos, CA", 95325),
+ new List<string> {"Development"}
+ ),
+ new Employee(
+ "Breana Robbin",
+ 6500,
+ new Address("3960 Sundown Lane, Austin, TX", 78758),
+ new List<string> {"Sales"}
+ ),
+ new Employee(
+ "Philip Horsley",
+ 19800,
+ new Address("2803 Elsie Drive, Sioux Falls, SD", 57104),
+ new List<string> {"Sales"}
+ ),
+ new Employee(
+ "Brian Peters",
+ 10600,
+ new Address("1407 Pearlman Avenue, Boston, MA", 02110),
+ new List<string> {"Development", "QA"}
+ ),
+ new Employee(
+ "Jack Yang",
+ 12900,
+ new Address("4425 Parrish Avenue Smithsons Valley, TX", 78130),
+ new List<string> {"Sales"}
+ )
+ };
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/ContinuousQueryExample.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/ContinuousQueryExample.cs b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/ContinuousQueryExample.cs
new file mode 100644
index 0000000..c61b45d
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/ContinuousQueryExample.cs
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using Apache.Ignite.Core;
+using Apache.Ignite.Core.Cache.Event;
+using Apache.Ignite.Core.Cache.Query.Continuous;
+using Apache.Ignite.ExamplesDll.Datagrid;
+
+namespace Apache.Ignite.Examples.Datagrid
+{
+ /// <summary>
+ /// This example demonstrates continuous query API.
+ /// <para />
+ /// 1) Build the project Apache.Ignite.ExamplesDll (select it -> right-click -> Build).
+ /// Apache.Ignite.ExamplesDll.dll must appear in %IGNITE_HOME%/platforms/dotnet/Examples/Apache.Ignite.ExamplesDll/bin/${Platform]/${Configuration} folder.
+ /// 2) Set this class as startup object (Apache.Ignite.Examples project -> right-click -> Properties ->
+ /// Application -> Startup object);
+ /// 3) Start example (F5 or Ctrl+F5).
+ /// <para />
+ /// This example can be run with standalone Apache Ignite .Net node:
+ /// 1) Run %IGNITE_HOME%/platforms/dotnet/Apache.Ignite/bin/${Platform]/${Configuration}/Apache.Ignite.exe:
+ /// Apache.Ignite.exe -IgniteHome="%IGNITE_HOME%" -springConfigUrl=platforms\dotnet\examples\config\example-cache.xml -assembly=[path_to_Apache.Ignite.ExamplesDll.dll]
+ /// 2) Start example.
+ /// </summary>
+ public class ContinuousQueryExample
+ {
+ /// <summary>
+ /// Runs the example.
+ /// </summary>
+ [STAThread]
+ public static void Main()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ SpringConfigUrl = @"platforms\dotnet\examples\config\example-cache.xml",
+ JvmOptions = new List<string> {"-Xms512m", "-Xmx1024m"}
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Console.WriteLine();
+ Console.WriteLine(">>> Cache continuous query example started.");
+
+ var cache = ignite.GetOrCreateCache<int, string>("cache_continuous_query");
+
+ // Clean up caches on all nodes before run.
+ cache.Clear();
+
+ const int keyCnt = 20;
+
+ for (int i = 0; i < keyCnt; i++)
+ cache.Put(i, i.ToString());
+
+ var qry = new ContinuousQuery<int, string>(new Listener<string>(), new ContinuousQueryFilter(15));
+
+
+ // Create new continuous query.
+ using (cache.QueryContinuous(qry))
+ {
+ // Add a few more keys and watch more query notifications.
+ for (var i = keyCnt; i < keyCnt + 5; i++)
+ cache.Put(i, i.ToString());
+
+ // Wait for a while while callback is notified about remaining puts.
+ Thread.Sleep(2000);
+ }
+ }
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Example finished, press any key to exit ...");
+ Console.ReadKey();
+ }
+
+ /// <summary>
+ /// Callback for continuous query example.
+ /// </summary>
+ private class Listener<T> : ICacheEntryEventListener<int, T>
+ {
+ public void OnEvent(IEnumerable<ICacheEntryEvent<int, T>> events)
+ {
+ foreach (var e in events)
+ Console.WriteLine("Queried entry [key=" + e.Key + ", val=" + e.Value + ']');
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/CrossPlatformExample.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/CrossPlatformExample.cs b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/CrossPlatformExample.cs
new file mode 100644
index 0000000..e23d615
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/CrossPlatformExample.cs
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using Apache.Ignite.Core;
+using Apache.Ignite.Core.Portable;
+using Apache.Ignite.ExamplesDll.Portable;
+
+namespace Apache.Ignite.Examples.Datagrid
+{
+ /// <summary>
+ /// This example demonstrates use of portable objects between different platforms.
+ /// <para/>
+ /// This example must be run with standalone Java node. To achieve this start a node from %IGNITE_HOME%
+ /// using "ignite.bat" with proper configuration:
+ /// <example>'bin\ignite.bat examples\config\example-server.xml'</example>.
+ /// <para />
+ /// Once remote node is started, launch this example as follows:
+ /// 1) Build the project Apache.Ignite.ExamplesDll (select it -> right-click -> Build);
+ /// 2) Set this class as startup object (Apache.Ignite.Examples project -> right-click -> Properties ->
+ /// Application -> Startup object);
+ /// 3) Start application (F5 or Ctrl+F5).
+ /// <para />
+ /// To see how objects can be transferred between platforms, start cross-platform Java example
+ /// without restarting remote node.
+ /// </summary>
+ public class CrossPlatformExample
+ {
+ /// <summary>Key for Java object.</summary>
+ private const int KeyJava = 100;
+
+ /// <summary>Key for .Net object.</summary>
+ private const int KeyDotnet = 200;
+
+ /// <summary>Key for C++ object.</summary>
+ private const int KeyCpp = 300;
+
+ /// <summary>Cache Name.</summary>
+ private const string CacheName = "cacheCrossPlatform";
+
+ /// <summary>
+ /// Runs the example.
+ /// </summary>
+ [STAThread]
+ public static void Main()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ SpringConfigUrl = @"platforms\dotnet\examples\config\example-cache.xml",
+ JvmOptions = new List<string> { "-Xms512m", "-Xmx1024m" }
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Console.WriteLine();
+ Console.WriteLine(">>> Cross-platform example started.");
+
+ if (ignite.GetCluster().ForRemotes().GetNodes().Count == 0)
+ {
+ Console.WriteLine();
+ Console.WriteLine(">>> This example requires remote nodes to be started.");
+ Console.WriteLine(">>> Please start at least 1 remote node.");
+ Console.WriteLine(">>> Refer to example's documentation for details on configuration.");
+ Console.WriteLine();
+ }
+ else
+ {
+ var cache = ignite.GetOrCreateCache<int, Organization>(CacheName);
+
+ // Create new Organization object to store in cache.
+ Organization org = new Organization(
+ "Apache",
+ new Address("1065 East Hillsdale Blvd, Foster City, CA", 94404),
+ OrganizationType.Private,
+ DateTime.Now
+ );
+
+ // Put created data entry to cache.
+ cache.Put(KeyDotnet, org);
+
+ // Retrieve value stored by Java client.
+ GetFromJava(ignite);
+
+ // Retrieve value stored by C++ client.
+ GetFromCpp(ignite);
+
+ // Gets portable value from cache in portable format, without de-serializing it.
+ GetDotNetPortableInstance(ignite);
+
+ // Gets portable value form cache as a strongly-typed fully de-serialized instance.
+ GetDotNetTypedInstance(ignite);
+
+ Console.WriteLine();
+ }
+ }
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Example finished, press any key to exit ...");
+ Console.ReadKey();
+ }
+
+ /// <summary>
+ /// Gets entry put by Java client. In order for entry to be in cache, Java client example
+ /// must be run before this example.
+ /// </summary>
+ /// <param name="Ignite">Ignite instance.</param>
+ private static void GetFromJava(IIgnite ignite)
+ {
+ var cache = ignite.GetOrCreateCache<int, IPortableObject>(CacheName)
+ .WithKeepPortable<int, IPortableObject>().WithAsync();
+
+ cache.Get(KeyJava);
+
+ var orgPortable = cache.GetFuture<IPortableObject>().ToTask().Result;
+
+ if (orgPortable == null)
+ {
+ Console.WriteLine(">>> Java client hasn't put entry to cache. Run Java example before this example " +
+ "to see the output.");
+ }
+ else
+ {
+ Console.WriteLine(">>> Entry from Java client:");
+ Console.WriteLine(">>> Portable: " + orgPortable);
+ Console.WriteLine(">>> Deserialized: " + orgPortable.Deserialize<Organization>());
+ }
+ }
+
+ /// <summary>
+ /// Gets entry put by C++ client. In order for entry to be in cache, C++ client example
+ /// must be run before this example.
+ /// </summary>
+ /// <param name="ignite">Ignite instance.</param>
+ private static void GetFromCpp(IIgnite ignite)
+ {
+ var cache = ignite.GetOrCreateCache<int, IPortableObject>(CacheName)
+ .WithKeepPortable<int, IPortableObject>().WithAsync();
+
+ cache.Get(KeyCpp);
+
+ var orgPortable = cache.GetFuture<IPortableObject>().Get();
+
+ Console.WriteLine();
+
+ if (orgPortable == null)
+ {
+ Console.WriteLine(">>> CPP client hasn't put entry to cache. Run CPP example before this example " +
+ "to see the output.");
+ }
+ else
+ {
+ Console.WriteLine(">>> Entry from CPP client:");
+ Console.WriteLine(">>> Portable: " + orgPortable);
+ Console.WriteLine(">>> Deserialized: " + orgPortable.Deserialize<Organization>());
+ }
+ }
+
+ /// <summary>
+ /// Gets portable value from cache in portable format, without de-serializing it.
+ /// </summary>
+ /// <param name="ignite">Ignite instance.</param>
+ private static void GetDotNetPortableInstance(IIgnite ignite)
+ {
+ // Apply "KeepPortable" flag on data projection.
+ var cache = ignite.GetOrCreateCache<int, IPortableObject>(CacheName)
+ .WithKeepPortable<int, IPortableObject>();
+
+ var org = cache.Get(KeyDotnet);
+
+ string name = org.GetField<string>("name");
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Retrieved organization name from portable field: " + name);
+ }
+
+ /// <summary>
+ /// Gets portable value form cache as a strongly-typed fully de-serialized instance.
+ /// </summary>
+ /// <param name="ignite">Ignite instance.</param>
+ private static void GetDotNetTypedInstance(IIgnite ignite)
+ {
+ var cache = ignite.GetOrCreateCache<int, Organization>(CacheName);
+
+ // Get recently created employee as a strongly-typed fully de-serialized instance.
+ Organization emp = cache.Get(KeyDotnet);
+
+ string name = emp.Name;
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Retrieved organization name from deserialized Organization instance: " + name);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/DataStreamerExample.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/DataStreamerExample.cs b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/DataStreamerExample.cs
new file mode 100644
index 0000000..ee9e200
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/DataStreamerExample.cs
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using Apache.Ignite.Core;
+using Apache.Ignite.Core.Datastream;
+using Apache.Ignite.ExamplesDll.Portable;
+
+namespace Apache.Ignite.Examples.Datagrid
+{
+ /// <summary>
+ /// Demonstrates how cache can be populated with data utilizing <see cref="IDataStreamer{TK,TV}"/>.
+ /// Data streamer is a lot more efficient to use than standard cache put operation
+ /// as it properly buffers cache requests together and properly manages load on remote nodes.
+ /// <para />
+ /// 1) Build the project Apache.Ignite.ExamplesDll (select it -> right-click -> Build).
+ /// Apache.Ignite.ExamplesDll.dll must appear in %IGNITE_HOME%/platforms/dotnet/Examples/Apache.Ignite.ExamplesDll/bin/${Platform]/${Configuration} folder.
+ /// 2) Set this class as startup object (Apache.Ignite.Examples project -> right-click -> Properties ->
+ /// Application -> Startup object);
+ /// 3) Start example (F5 or Ctrl+F5).
+ /// <para />
+ /// This example can be run with standalone Apache Ignite .Net node:
+ /// 1) Run %IGNITE_HOME%/platforms/dotnet/Apache.Ignite/bin/${Platform]/${Configuration}/Apache.Ignite.exe:
+ /// Apache.Ignite.exe -IgniteHome="%IGNITE_HOME%" -springConfigUrl=platforms\dotnet\examples\config\example-cache.xml -assembly=[path_to_Apache.Ignite.ExamplesDll.dll]
+ /// 2) Start example.
+ /// </summary>
+ public class DataStreamerExample
+ {
+ /// <summary>Number of entries to load.</summary>
+ private const int EntryCount = 500000;
+
+ /// <summary>Cache name.</summary>
+ private const string CacheName = "cache_data_streamer";
+
+ /// <summary>
+ /// Runs the example.
+ /// </summary>
+ [STAThread]
+ public static void Main()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ SpringConfigUrl = @"platforms\dotnet\examples\config\example-cache.xml",
+ JvmOptions = new List<string> {"-Xms512m", "-Xmx1024m"}
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Console.WriteLine();
+ Console.WriteLine(">>> Cache data streamer example started.");
+
+ // Clean up caches on all nodes before run.
+ ignite.GetOrCreateCache<int, Account>(CacheName).Clear();
+
+ Stopwatch timer = new Stopwatch();
+
+ timer.Start();
+
+ using (var ldr = ignite.GetDataStreamer<int, Account>(CacheName))
+ {
+ ldr.PerNodeBufferSize = 1024;
+
+ for (int i = 0; i < EntryCount; i++)
+ {
+ ldr.AddData(i, new Account(i, i));
+
+ // Print out progress while loading cache.
+ if (i > 0 && i % 10000 == 0)
+ Console.WriteLine("Loaded " + i + " accounts.");
+ }
+ }
+
+ timer.Stop();
+
+ long dur = timer.ElapsedMilliseconds;
+
+ Console.WriteLine(">>> Loaded " + EntryCount + " accounts in " + dur + "ms.");
+ }
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Example finished, press any key to exit ...");
+ Console.ReadKey();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f2eb16cd/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/PutGetExample.cs
----------------------------------------------------------------------
diff --git a/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/PutGetExample.cs b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/PutGetExample.cs
new file mode 100644
index 0000000..c1146f1
--- /dev/null
+++ b/modules/platform/dotnet/Examples/Apache.Ignite.Examples/Datagrid/PutGetExample.cs
@@ -0,0 +1,219 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using Apache.Ignite.Core;
+using Apache.Ignite.Core.Portable;
+using Apache.Ignite.ExamplesDll.Portable;
+
+namespace Apache.Ignite.Examples.Datagrid
+{
+ /// <summary>
+ /// This example demonstrates several put-get operations on Ignite cache
+ /// with portable values. Note that portable object can be retrieved in
+ /// fully-deserialized form or in portable object format using special
+ /// cache projection.
+ /// <para />
+ /// 1) Build the project Apache.Ignite.ExamplesDll (select it -> right-click -> Build).
+ /// Apache.Ignite.ExamplesDll.dll must appear in %IGNITE_HOME%/platforms/dotnet/Examples/Apache.Ignite.ExamplesDll/bin/${Platform]/${Configuration} folder.
+ /// 2) Set this class as startup object (Apache.Ignite.Examples project -> right-click -> Properties ->
+ /// Application -> Startup object);
+ /// 3) Start example (F5 or Ctrl+F5).
+ /// <para />
+ /// This example can be run with standalone Apache Ignite .Net node:
+ /// 1) Run %IGNITE_HOME%/platforms/dotnet/Apache.Ignite/bin/${Platform]/${Configuration}/Apache.Ignite.exe:
+ /// Apache.Ignite.exe -IgniteHome="%IGNITE_HOME%" -springConfigUrl=platforms\dotnet\examples\config\example-cache.xml -assembly=[path_to_Apache.Ignite.ExamplesDll.dll]
+ /// 2) Start example.
+ /// </summary>
+ public class PutGetExample
+ {
+ /// <summary>Cache name.</summary>
+ private const string CacheName = "cache_put_get";
+
+ /// <summary>
+ /// Runs the example.
+ /// </summary>
+ [STAThread]
+ public static void Main()
+ {
+ var cfg = new IgniteConfiguration
+ {
+ SpringConfigUrl = @"platforms\dotnet\examples\config\example-cache.xml",
+ JvmOptions = new List<string> { "-Xms512m", "-Xmx1024m" }
+ };
+
+ using (var ignite = Ignition.Start(cfg))
+ {
+ Console.WriteLine();
+ Console.WriteLine(">>> Cache put-get example started.");
+
+ // Clean up caches on all nodes before run.
+ ignite.GetOrCreateCache<object, object>(CacheName).Clear();
+
+ PutGet(ignite);
+ PutGetPortable(ignite);
+ PutAllGetAll(ignite);
+ PutAllGetAllPortable(ignite);
+
+ Console.WriteLine();
+ }
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Example finished, press any key to exit ...");
+ Console.ReadKey();
+ }
+
+ /// <summary>
+ /// Execute individual Put and Get.
+ /// </summary>
+ /// <param name="ignite">Ignite instance.</param>
+ private static void PutGet(IIgnite ignite)
+ {
+ var cache = ignite.GetCache<int, Organization>(CacheName);
+
+ // Create new Organization to store in cache.
+ Organization org = new Organization(
+ "Microsoft",
+ new Address("1096 Eddy Street, San Francisco, CA", 94109),
+ OrganizationType.Private,
+ DateTime.Now
+ );
+
+ // Put created data entry to cache.
+ cache.Put(1, org);
+
+ // Get recently created employee as a strongly-typed fully de-serialized instance.
+ Organization orgFromCache = cache.Get(1);
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Retrieved organization instance from cache: " + orgFromCache);
+ }
+
+ /// <summary>
+ /// Execute individual Put and Get, getting value in portable format, without de-serializing it.
+ /// </summary>
+ /// <param name="ignite">Ignite instance.</param>
+ private static void PutGetPortable(IIgnite ignite)
+ {
+ var cache = ignite.GetCache<int, Organization>(CacheName);
+
+ // Create new Organization to store in cache.
+ Organization org = new Organization(
+ "Microsoft",
+ new Address("1096 Eddy Street, San Francisco, CA", 94109),
+ OrganizationType.Private,
+ DateTime.Now
+ );
+
+ // Put created data entry to cache.
+ cache.Put(1, org);
+
+ // Create projection that will get values as portable objects.
+ var portableCache = cache.WithKeepPortable<int, IPortableObject>();
+
+ // Get recently created organization as a portable object.
+ var portableOrg = portableCache.Get(1);
+
+ // Get organization's name from portable object (note that object doesn't need to be fully deserialized).
+ string name = portableOrg.GetField<string>("name");
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Retrieved organization name from portable object: " + name);
+ }
+
+ /// <summary>
+ /// Execute bulk Put and Get operations.
+ /// </summary>
+ /// <param name="ignite">Ignite instance.</param>
+ private static void PutAllGetAll(IIgnite ignite)
+ {
+ var cache = ignite.GetCache<int, Organization>(CacheName);
+
+ // Create new Organizations to store in cache.
+ Organization org1 = new Organization(
+ "Microsoft",
+ new Address("1096 Eddy Street, San Francisco, CA", 94109),
+ OrganizationType.Private,
+ DateTime.Now
+ );
+
+ Organization org2 = new Organization(
+ "Red Cross",
+ new Address("184 Fidler Drive, San Antonio, TX", 78205),
+ OrganizationType.NonProfit,
+ DateTime.Now
+ );
+
+ var map = new Dictionary<int, Organization> { { 1, org1 }, { 2, org2 } };
+
+ // Put created data entries to cache.
+ cache.PutAll(map);
+
+ // Get recently created organizations as a strongly-typed fully de-serialized instances.
+ IDictionary<int, Organization> mapFromCache = cache.GetAll(new List<int> { 1, 2 });
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Retrieved organization instances from cache:");
+
+ foreach (Organization org in mapFromCache.Values)
+ Console.WriteLine(">>> " + org);
+ }
+
+ /// <summary>
+ /// Execute bulk Put and Get operations getting values in portable format, without de-serializing it.
+ /// </summary>
+ /// <param name="ignite">Ignite instance.</param>
+ private static void PutAllGetAllPortable(IIgnite ignite)
+ {
+ var cache = ignite.GetCache<int, Organization>(CacheName);
+
+ // Create new Organizations to store in cache.
+ Organization org1 = new Organization(
+ "Microsoft",
+ new Address("1096 Eddy Street, San Francisco, CA", 94109),
+ OrganizationType.Private,
+ DateTime.Now
+ );
+
+ Organization org2 = new Organization(
+ "Red Cross",
+ new Address("184 Fidler Drive, San Antonio, TX", 78205),
+ OrganizationType.NonProfit,
+ DateTime.Now
+ );
+
+ var map = new Dictionary<int, Organization> { { 1, org1 }, { 2, org2 } };
+
+ // Put created data entries to cache.
+ cache.PutAll(map);
+
+ // Create projection that will get values as portable objects.
+ var portableCache = cache.WithKeepPortable<int, IPortableObject>();
+
+ // Get recently created organizations as portable objects.
+ IDictionary<int, IPortableObject> portableMap =
+ portableCache.GetAll(new List<int> { 1, 2 });
+
+ Console.WriteLine();
+ Console.WriteLine(">>> Retrieved organization names from portable objects:");
+
+ foreach (IPortableObject poratbleOrg in portableMap.Values)
+ Console.WriteLine(">>> " + poratbleOrg.GetField<string>("name"));
+ }
+ }
+}