{"id":517,"date":"2016-06-15T17:45:21","date_gmt":"2016-06-15T17:45:21","guid":{"rendered":"38913e1d6a7b94cb0f55994f679f5956"},"modified":"2016-06-15T17:45:21","modified_gmt":"2016-06-15T17:45:21","slug":"","status":"publish","type":"post","link":"https:\/\/www.xiaobo.li\/notes\/archives\/517","title":{"rendered":"Adf.Service"},"content":{"rendered":"<p>\u901a\u8fc7 Adf.Service \u5d4c\u5165\uff0c\u53ef\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a .Net \u9879\u76ee\u7684 windows \u670d\u52a1<\/p>\n<p>&nbsp;<\/p>\n<p><b>\u4e0b\u8f7d\uff1a<\/b><\/p>\n<p>Adf.Service&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"http:\/\/www.aooshi.org\/adf\/download\/Adf.Service.1.3.zip\">http:\/\/www.aooshi.org\/adf\/download\/Adf.Service.1.3.zip<\/a><\/p>\n<p><b><br \/>\n<\/b><\/p>\n<p><b>\u6e90\u7801\uff1a<\/b><\/p>\n<p><a href=\"http:\/\/www.aooshi.org\/adf\" target=\"_blank\">http:\/\/www.aooshi.org\/adf<\/a><\/p>\n<p><b><br \/>\n<\/b><\/p>\n<p><b>\u5e94\u7528\uff1a<\/b><\/p>\n<\/p>\n<p>1. \u521b\u5efa\u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\uff0c \u7248\u672c2.0\u6216\u4ee5\u4e0a<br \/>\n2. \u5f15\u7528\uff1a adf.dll, adf.service<br \/>\n3. \u4fee\u6539:&nbsp; Program\u4e3a\u5171\u516cpublic\u8bbf\u95ee\u7b26<br \/>\n4. Program \u7ee7\u627fAdf.Service.IService, Main \u51fd\u6570\u8c03\u7528 Adf.Service.ServiceHelper.Entry(args);<br \/>\n5. \u5efa\u7acb:&nbsp; app.config \u6587\u4ef6\uff0c\u5e76\u914d\u7f6e ServiceMonitorPort<br \/>\n6. \u590d\u5236 Tool*.bat \u5e76\u4fee\u6539Adf.Service.Test\u4e3a\u4f60\u7684\u5e94\u7528\u7a0b\u5e8f<\/p>\n<p><b>Program.cs \u53c2\u8003\uff1a<\/b><\/p>\n<\/p>\n<pre class=\"brush:c#; toolbar: true; auto-links: true;\">using System;\r\nusing System.Collections.Specialized;\r\n\r\nnamespace Adf.Service.Test\r\n{\r\n    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ \u7a0b\u5e8f\u5165\u53e3\r\n    \/\/\/ &lt;\/summary&gt;\r\n    public class Program : IService\r\n    {\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u5e94\u7528\u7a0b\u5e8f\u7684\u4e3b\u5165\u53e3\u70b9\u3002\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"args\"&gt;&lt;\/param&gt;\r\n        static void Main(string[] args)\r\n        {\r\n            Adf.Service.ServiceHelper.Entry(args);\r\n        }\r\n\r\n        public void Initialize(ServiceContext serviceContext)\r\n        {\r\n            \/\/\u6ce8\u518c\u5f53\u524d\u670d\u52a1\u81f3\u6ce8\u518c\u4e2d\u5fc3\r\n            \/\/serviceContext.MonitorToRegistry();\r\n        }\r\n\r\n        public void Start(ServiceContext serviceContext)\r\n        {\r\n            serviceContext.Logger.Message.WriteLine(\"My Service Start\");\r\n        }\r\n\r\n        public void Stop(ServiceContext serviceContext)\r\n        {\r\n            serviceContext.Logger.Message.WriteLine(\"My Service Stop\");\r\n        }\r\n\r\n        public System.Net.HttpStatusCode HttpAction(string action, ServiceContext serviceContext, HttpServerContext httpServerContext)\r\n        {\r\n            serviceContext.Logger.Message.WriteLine(\"httpaction:\" + httpServerContext.Url);\r\n            return System.Net.HttpStatusCode.OK;\r\n        }\r\n\r\n\r\n        public string Status(ServiceContext serviceContext, NameValueCollection queryString)\r\n        {\r\n            return string.Empty;\r\n        }\r\n\r\n        public void Dispose()\r\n        {\r\n\r\n        }\r\n    }\r\n}<\/pre>\n<p><\/p>\n<\/p>\n<p><b>\u914d\u7f6e\u53c2\u8003\uff1a<\/b><\/p>\n<\/p>\n<pre class=\"brush:xml; toolbar: true; auto-links: true;\">&lt;?xml version=\"1.0\"?&gt;\r\n&lt;configuration&gt;\r\n  &lt;configSections&gt;\r\n    &lt;section name=\"cluster\" type=\"Adf.Config.IpGroupSection,Adf\"\/&gt;\r\n    &lt;section name=\"Registry\" type=\"Adf.Config.IpGroupSection,Adf\"\/&gt;\r\n    &lt;section name=\"Authorization\" type=\"System.Configuration.DictionarySectionHandler\" \/&gt;\r\n  &lt;\/configSections&gt;\r\n  &lt;appSettings&gt;\r\n\r\n    &lt;!-- \u670d\u52a1\u76d1\u63a7IP\uff0c\u4e0d\u914d\u7f6e\u5219\u4ec5\u672c\u673a\u53ef\u6d4f\u89c8 --&gt;\r\n    &lt;!--&lt;add key=\"ServiceMonitorIp\" value=\"*\"\/&gt;--&gt;\r\n    \r\n    &lt;!-- \u670d\u52a1\u76d1\u63a7\u7aef\u53e3 --&gt;\r\n    &lt;add key=\"ServiceMonitorPort\" value=\"8456\"\/&gt;\r\n     &lt;!--\u65e5\u5fd7\u5237\u65b0\u503c--&gt; \r\n    &lt;add key=\"Log:FlushInterval\" value=\"10\"\/&gt;\r\n    &lt;!-- \u65e5\u5fd7\u8def\u5f84 --&gt;\r\n    &lt;add key=\"Log:Path\" value=\"c:\\log\\adf.service\"\/&gt;   \r\n\r\n    &lt;!-- \u7981\u6b62\u5b89\u88c5\u5b8c\u6210\u540e\u81ea\u52a8\u542f\u52a8 --&gt;\r\n    &lt;!--&lt;add key=\"ServiceInstalledStart\" value=\"false\"\/&gt;--&gt;\r\n\r\n    &lt;!-- \u670d\u52a1\u4f7f\u7528\u7684\u5e10\u6237\uff0c\u9ed8\u8ba4\uff1a LocalSystem, \u8fd8\u53ef\u7cfb\u7edf\u5e10\u6237 LocalService,NetworkService \u7cfb\u7edf\u5e10\u6237\u65f6\u4e0d\u914d\u7f6e\u5bc6\u7801\uff0c \u81ea\u5efa\u5e10\u6237\u9700\u914d\u7f6e\u5bc6\u7801 --&gt; \r\n    &lt;!--&lt;add key=\"ServiceUsername\" value=\"\"\/&gt;--&gt;\r\n    &lt;!--&lt;add key=\"ServicePassword\" value=\"\"\/&gt;--&gt;\r\n    \r\n    &lt;!-- \u672c\u670d\u52a1\u4f9d\u8d56\u7684\u670d\u52a1\u6e05\u5355\uff0c\u591a\u4e2a\u4ee5\u534a\u89d2\u5206\u53f7\u9694\u5f00 --&gt;\r\n    &lt;!--&lt;add key=\"ServiceDepended\" value=\"server1;server2;server3\"\/&gt;--&gt;\r\n  &lt;\/appSettings&gt;\r\n\r\n  &lt;!-- Cluster Check Interval, seconds,default 10 --&gt;\r\n  &lt;!--&lt;cluster check=\"1\"&gt;\r\n    &lt;add ip=\"127.0.0.1\" port=\"8456\" level=\"1\" \/&gt;\r\n    &lt;add ip=\"127.0.0.2\" port=\"8456\" \/&gt;\r\n    &lt;add ip=\"127.0.0.3\" port=\"8456\" \/&gt;\r\n  &lt;\/cluster&gt;--&gt;\r\n\r\n  &lt;!-- Registry Server List, check is register period,  suggest: ip use dns name  --&gt;\r\n  &lt;!--&lt;Registry check=\"60\"&gt;\r\n    &lt;add ip=\"127.0.0.1\" port=\"200\" \/&gt;\r\n  &lt;\/Registry&gt;--&gt;\r\n\r\n  &lt;!-- \u5141\u8bb8\u8bbf\u95ee\u7684\u7528\u6237\u540d\u53ca\u5bc6\u7801 --&gt;\r\n  &lt;!--&lt;Authorization&gt;\r\n    &lt;add key=\"username1\" value=\"password\" \/&gt;\r\n    &lt;add key=\"username2\" value=\"password\" \/&gt;\r\n  &lt;\/Authorization&gt;--&gt;\r\n  \r\n  &lt;startup&gt;\r\n    &lt;supportedRuntime version=\"v2.0.50727\"\/&gt;\r\n  &lt;\/startup&gt;\r\n&lt;\/configuration&gt;<\/pre>\n<\/p>\n<p>&nbsp;<\/p>\n<p><b>\u8c03\u8bd5\uff1a<\/b><\/p>\n<p>\u8c03\u8bd5\u914d\u7f6e<\/p>\n<p>1\u3001 \u53f3\u952e\u9879\u76ee-&gt;\u5c5e\u6027-&gt;\u8c03\u8bd5-&gt;\u547d\u4ee4\u884c\u53c2\u6570-&gt;\u8f93\u5165 \/c<\/p>\n<p>\u5982\u56fe\uff1a<\/p>\n<p><a target=\"_blank\" href=\"\/notes\/content\/uploadfile\/201606\/fb5c1465984840.png\" id=\"ematt:411\"><img decoding=\"async\" src=\"\/notes\/content\/uploadfile\/201606\/fb5c1465984840.png\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" border=\"0\" \/><\/a><\/p>\n<p>\u914d\u7f6e\u5b8c\u6210\u540e\u6309 F5 \u542f\u52a8\u5e94\u7528<\/p>\n<p>&nbsp;<\/p>\n<p><b>\u76d1\u63a7\u9762\u677f\uff1a<\/b><\/p>\n<p>\u6b64\u670d\u52a1\u81ea\u5e26\u76d1\u63a7\u9762\u677f<\/p>\n<p>http:\/\/ServiceMonitorIp:ServiceMonitorPort \/<\/p>\n<p>\u793a\u4f8b\uff1a <a href=\"http:\/\/127.0.0.1:8456\" target=\"_blank\">http:\/\/127.0.0.1:8456<\/a> <\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>\u5176\u5b83\uff1a<\/b><\/p>\n<p>\u670d\u52a1\u5e94\u7528\u6210\u529f\u540e\uff0c \u5728Start \u65b9\u6cd5\u4e2d\u521d\u59cb\u5316\u4e00\u4e2aAdf.Cs.ServerListen \u53ef\u4ee5\u642d\u5efa\u4e00\u4e2aCs\u9879\u76ee<\/p>\n<p>CS \u5e94\u7528\u53c2\u8003 \uff1a<a target=\"_blank\" href=\"\/adf\/513.html\">http:\/\/www.xiaobo.li\/adf\/513.html<\/a>\n <\/p>\n<p>\u53c2\u8003\uff1a<\/p>\n<\/p>\n<pre class=\"brush:c#; toolbar: true; auto-links: true;\">Adf.Cs.ServerListen listen;\r\npublic void Start(Adf.Service.ServiceContext serviceContext)\r\n{\r\n    this.listen = new Adf.Cs.ServerListen(serviceContext.Logger);\r\n    \/\/\u662f\u5426\u81ea\u52a8\u6ce8\u518c\u5230\u6ce8\u518c\u4e2d\u5fc3\r\n    if (serviceContext.Registry.Enable)\r\n    {\r\n        var node = new Dictionary&lt;string, object&gt;();\r\n        node.Add(\"group\", serviceContext.Setting.ServiceName);\r\n        node.Add(\"port\", this.listen.Port);\r\n\r\n        serviceContext.Registry.RegisterNode(node);\r\n    }\r\n}\r\npublic void Stop(Adf.Service.ServiceContext serviceContext)\r\n{\r\n    this.listen.Dispose();\r\n}<\/pre>\n<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u901a\u8fc7 Adf.Service \u5d4c\u5165\uff0c\u53ef\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a .Net \u9879\u76ee\u7684 windows \u670d\u52a1<\/p>\n<p>&nbsp;<\/p>\n<p><b>\u4e0b\u8f7d\uff1a<\/b><\/p>\n<p>Adf.Service&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"http:\/\/www.aooshi.org\/adf\/download\/Adf.Service.1.3.zip\">http:\/\/www.aooshi.org\/adf\/download\/Adf.Service.1.3.zip<\/a><\/p>\n<p><b><br \/>\n<\/b><\/p>\n<p><b>\u6e90\u7801\uff1a<\/b><\/p>\n<p><a href=\"http:\/\/www.aooshi.org\/adf\" target=\"_blank\">http:\/\/www.aooshi.org\/adf<\/a><\/p>\n<p><b><br \/>\n<\/b><\/p>\n<p><b>\u5e94\u7528\uff1a<\/b><\/p>\n<\/p>\n<p>1. \u521b\u5efa\u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\uff0c \u7248\u672c2.0\u6216\u4ee5\u4e0a<br \/>\n2. \u5f15\u7528\uff1a adf.dll, adf.service<br \/>\n3. \u4fee\u6539:&nbsp; Program\u4e3a\u5171\u516cpublic\u8bbf\u95ee\u7b26<br \/>\n4. Program \u7ee7\u627fAdf.Service.IService, Main \u51fd\u6570\u8c03\u7528 Adf.Service.ServiceHelper.Entry(args);<br \/>\n5. \u5efa\u7acb:&nbsp; app.config \u6587\u4ef6\uff0c\u5e76\u914d\u7f6e ServiceMonitorPort<br \/>\n6. \u590d\u5236 Tool*.bat \u5e76\u4fee\u6539Adf.Service.Test\u4e3a\u4f60\u7684\u5e94\u7528\u7a0b\u5e8f <a href=\"https:\/\/www.xiaobo.li\/notes\/archives\/517\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[274],"tags":[],"class_list":["post-517","post","type-post","status-publish","format-standard","hentry","category-adf"],"_links":{"self":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/comments?post=517"}],"version-history":[{"count":0,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/517\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/media?parent=517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/categories?post=517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/tags?post=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}