Используйте "кучу" для того, чтобы только выделить место для объектов во времени выполнения. Если Вы знаете размер во время компиляции, используйте стек. Вместо того, чтобы возвратить выделенные "куче" объекты из функции, передайте буфер в функцию для него для записи в. Тем путем буфер может быть выделен, где функция вызвана как массив или другая стековая структура.
, Чем меньше malloc () операторы Вы имеете, тем меньше возможностей для утечек памяти.
WCF is not dot net. To create a WCF application you have to do four things
take a look at this tutorial
This is a complete example of a service and its host
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Runtime.Serialization;
using System;
[ServiceContract]
public interface AddStuff
{
[OperationContract]
int Add(int X,int Y);
}
public class opAddStuff : AddStuff
{
public int Add(int X, int Y)
{
return X + Y;
}
}
public class Pgm
{
static void Main(string[] args)
{
string httpAddr = "http://127.0.0.1:6001/AddStuff";
string netAddr= "net.tcp://127.0.0.1:5001/AddStuff";
System.ServiceModel.ServiceHost SH = new ServiceHost(typeof(opAddStuff),new Uri(httpAddr));
BasicHttpBinding B = new BasicHttpBinding();
NetTcpBinding NB = new NetTcpBinding();
SH.AddServiceEndpoint(typeof(AddStuff), B, httpAddr);
SH.AddServiceEndpoint(typeof(AddStuff), NB, netAddr);
System.ServiceModel.Description.ServiceMetadataBehavior smb = SH.Description.Behaviors.Find<ServiceMetadataBehavior>();
// If not, add one
if (smb == null)
smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
SH.Description.Behaviors.Add(smb);
SH.AddServiceEndpoint( ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
SH.Open();
Console.WriteLine("Service at your service");
string crap = Console.ReadLine();
}
}
You also have to run this command
netsh http add urlacl url=http://+:6001/AddStuff user=DOMAIN\USER
some of this comes from here
Я обнаружил следующее, делая противоположное тому, чего вы пытаетесь достичь, т.е. меняя библиотеку служб на консольное приложение...
некоторые параметры в файлах csproj не могут быть отредактированы с экрана настроек из VS, чтобы преобразовать библиотеку классов в библиотеку служб WCF, вам нужно добавить следующее в файл проекта
Добавьте следующее в первую PropertyGroup
(это направляющие для проекта C# WCF)
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Смотрите здесь для получения дополнительной информации о ProjectTypeGuids
Вам также может понадобиться добавить следующую строку непосредственно ниже:
<StartArguments>/client:"WcfTestClient.exe"</StartArguments>
Но в конечном счете это PropertyTypeGuids, которые вы должны вручную вставить, чтобы заставить VS распознать проект как проект библиотеки служб WCF.