با توجه به پیشرفتی که در حوزه اپلیکشنهای وابسته به فریمورک دات نت بوجود آمده، ولی شاید حرکت عملی بزرگی از سمت تولیدکندگان در حوزه کامپکت صورت نگرفته و همچنان شاهد فرمانروایی سیستم عاملهایی چون Windows Compact 6.0 با استفاده از دات نت فریمورکهایی نهایت با نسخه 3.5 هستیم. البته میتوان ارزانتر بودن در خارج و مسئله تحریم در داخل را هم در نظر داشت و نمونه عینی این مورد را میتوان در دستگاههای وارد شده در حوزه Compact، دید. البته شرکتهای تولید کننده خارجی که عمدتا در کشورهای جنوب شرق و شرق آسیا هستند، جزو شرکتهای مطرح در این زمینه هستند که بازارهای خوبی هم در کشورهای توسعه یافتهای چون آمریکا پیدا کردهاند.
در این بین برای عقب نماندن از تکنولوژیهای جدید بوجود آمده در حوزه دات نت مانند WCF این مقاله کمکی هر چند کوچک برای استفاده از این قابلیت موثر در فریمورک کامپکت میتواند باشد.
پیشنیازهای لازم:- Microsoft Visual Studio 2008 + Service Pack 1
- نصب Power Toys for .NET Compact Framework 3.5
پیاده سازی سرویس (بر روی سیستمی غیر از ویندوز کامپکت):
در ویژوال استودیو 2008 سرویس پک یک، پروژه ای از نوعclass library را ایجاد کرده و سرویسی تستی را برای استفاده ایجاد میکنیم:
[ServiceContract(Namespace = "http://samples.wcf.cfnet.sample")] public interface ICalculator { [OperationContract] int Add(int a, int b); }
و پیاده سازی آن:
public class CalculatorService : ICalculator { public static int count; public int Add(int a, int b) { count++; Console.WriteLine(string.Format("{3}\tReceived 'Add({0}, {1})' returning {2}", a, b, a + b, count)); return a + b; }
سرور سرویس:
برای هاست این سرویس از یک برنامهی کنسول که در سلوشن ایجاد میکنیم استفاده میکنیم. البته امکانهای دیگر برای هاست سرویس در هر پروسس دات نتی را میتوان یاد آور شد. برای هاست کردن شروع یک سرویس WCF باید یک IP درون شبکه را که قابل دسترسی از سمت ویندوز کامپکت بوده و به سیستم انتساب داده شده، دریافت و استفاده کنیم:
var addressList = Dns.GetHostEntry(Dns.GetHostName()); string hostIP = addressList.AddressList.Single(x=>x.ToString().StartsWith("192.168.10.")).ToString(); Uri address = new Uri(string.Format("http://{0}:8000/Calculator", hostIP));
در قطعه بالا IP در رنج مناسب و قابل دسترسی انتخاب میشود چون ویندوز کامپکت (فارق از اینکه در شبیه ساز باشد یا واقعی) از طریق شبکه به سرور دسترسی پیدا میکند باید IP مناسب انتساب داده شده انتخاب شود.
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService),address); serviceHost.AddServiceEndpoint(typeof(ICalculator), new BasicHttpBinding(), "Calculator");
در ادامه یک سرویس هاست را new کرده و سرویس و بایندینگ را به آن در سازنده پاس میدهیم.
var serviceMetadataBehavior = new ServiceMetadataBehavior { HttpGetEnabled = true }; serviceHost.Description.Behaviors.Add(serviceMetadataBehavior);
این قسمت برای ادامه کارکرد سرویس لازم نیست ولی در ادامهی مقاله برای تولید کدهای سمت کلاینت باید این قابلیت فعال باشد و پس از آن دیگر احتیاجی نیست و میتوان این چند خط کد را کامنت کرد.
serviceHost.Open(); Console.WriteLine("CalculatorService is running at " + address.ToString()); Console.WriteLine("Press <ENTER> to terminate"); Console.ReadLine(); serviceHost.Close();
و در نهایت، شروع سرویس با فرمان Open و خاتمه آن با فرمان Close .
کلاینت سرویس (در داخل ویندوز کامپکت):
همراه با ارائه دات نت فریمورک 3.5 برای کار با سرویس WCF که از آن یک نسخهی ارائه شده برای کامپکت نیز تهیه شدهاست، ابزاری مانند netcfSvcUtil.exe که در SDK نسخهی کامپکت موجود است و کاربرد هندل کردن بعضی از موارد مانند تولید کد پروکسیهای سمت کلاینت را دارد که در ادامه طرز استفاده از آن را بررسی خواهیم کرد. بعد از اجرای سرویس WCF با رفتار HttpGetEnabled = true برای بررسی سریع کارکرد صحیح سرویس، آدرس آن را در مرورگر میبینیم. تصویر زیر نتیجهی آن در مرورگر است:
در خط فرمان به آدرس مربوط به این ابزار رفته (بسته به نسخهی سیستم عامل ممکن است در پوشههای زیر یافت شود ( :
(Windows Drive)\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\bin (Windows Drive)\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\bin
و فرمان زیر را اجرا میکنیم:
netcfSvcUtil.exe /language:C# /target:code /directory:D:\GeneratedCode\CF\CaculatorService http://192.168.10.189:8000/BooksService.svc?wsdl
البته ذکر IP شبکه در اینجا الزامی نیست؛ زیرا در صورت استفاده از آدرسهای داخلی سیستم، این فرمان به مشکلی بر نخواهد خورد. در این فرمان تولید کد با زبان c# و تولید کد که بصورت پیش فرض نیز وجود دارد و محل ذخیره سازی کدهای تولیدی را مشخص میکنیم و بعد از اجرای این فرمان، باید دو فایل در مسیر اشاره شده در فرمان تولید شود که اساس کار ما در سمت کلاینت خواهد بود:
کلاینت سرویس نیز با استفاده کدهای تولیدی بصورت زیر آماده سازی و اجرا میشود:
var addressList = Dns.GetHostEntry(Dns.GetHostName()); var localAddress = addressList.AddressList.Single(x => x.ToString().StartsWith("192.168.10.")).ToString();
دوباره IP مناسب در شبکه جاری استخراج میشود. بایندیگ مورد نیاز برای ارتباط با سرور ساخته میشود:
var binding = CalculatorClient.CreateDefaultBinding();
نکتهای که دراین قسمت باید مدنظر قرار گیرد این است که در زمان تولید کدها اگر از localhost یا 127.0.0.1 و یا آدرسهای دیگر انتساب داده شده به سرور استفاده کرده باشید در متد CreateDefaultBinding از همان آدرس استفاده میشود و برای اصلاح آن بصورت زیر عمل میکنیم:
string remoteAddress = CalculatorClient.EndpointAddress.Uri.ToString(); remoteAddress = remoteAddress.Replace("localhost", serviceAddress.Text);
یک EndpointAddress با استفاده از این آدرس ساخته و بههمراه بایندینگ، یک آبجکت از جنس CalculatorClient که در کدهای تولیدی داریم میسازیم:
CalculatorClient _client = new CalculatorClient(binding, endpoint);
برای تست نیز تنها متد این سرویس را با یک جفت عدد، صدا میزنیم:
var result = _client.Add(82, 18).ToString(CultureInfo.InvariantCulture);
به این ترتیب خروجی مورد نظر زیر را در کنسول سرویس مشاهده خواهیم کرد:
معرفی Xamarin و مزیتهای استفاده از آن
با تشکر از جناب راد بابت کتاب خوبشون.
این کتاب بسیار عالی است فقط چند مورد زیر جهت بهبود و تکمیل کتاب پیشنهاد میگردد:
1- خیلی مقدمه چینی داره و از نظر بنده حقیر نیاز نبوده و صرفا مستقیم اگر میرفتند سر اصل مطلب و نحوه استفاده در پروژه رو بصورت تصویری و عملی میگفتند خیلی بهتر بود.
ابتدای کتاب و مقدمه چینیهای زیاد آن آدم و خسته میکنه.
2- مثال در زمینه کد نویسی lambda و linq خیلی کم است و جای خالی چند مثال عملی (پروژه واقعی) خوب به شدت حس میشود.
به شخصه دوست داشتم چند مثال خیلی خوب عملی از روش first Database و first code ببینم که متاسفانه وجود نداشت.
البته این نظر بنده است و بنده در سطحی نیستم که درباره کتاب جناب راد فکر کنم (چه برسه به نظر دادن) و خودم رو در چنین سطحی نمیبینم.
صرفا در جهت پیشنهاد و در جهت کمک به بهتر شدن کتاب عرض کردم.
تقریبا بیشتر کتابهای جناب راد را دارم و به شخصه E.F رو از روی همین کتاب یاد گرفتم و این کتاب مرجع آموزش E.F برخی از اساتید مجتمع فنی تهران نیز میباشد که همانا نشان از سطح بسیار خوب این کتاب دارد.
مشتاقانه در انتظار انتشار کتابهای دیگری از جناب راد در زمینه هایی همچون "برنامه نویسی پروژههای بزرگ بصورت چند لایه" و یا Nuget (بهترین پلاگینهای آن) میباشم.
(جای خالی همچین کتابهایی واقعا خالیه)
*در تایید حرفهای جناب نصیری هم باید عرض کنم که بنده شخصا چنین کتابی اگر به پستم بخوره حتما یکیشو میخرم و جالب اینه که بنده کتاب E.F رو که میخواستم بخرم ، توی بازار هیچی نبود!
به انتشارات که مراجعه کردم دقیقا آخرین کتاب به بنده رسید :دی
(البته داستانش طولانیه که چطوری یک کتاب رو برای بنده نگهداشته بودند و تونستم آخرین نسخه موجود رو بخرم :دی )
خدا قوت
یا حق
Install-Package Notificatio.TelegramClient
var api = NotificatioApi.Initialize(" Your Hash_Key"); api.SendMessage("Phone Number", "this is a test Message");
$.ajax({ url: "http://www.api.notificatio.me/v1/user/message", type: "POST", dataType: "json", crossDomaint: true, data: { phoneNumber: "your_phone_number", apiHash: "your_api_hash", message: "your_message" }, cache: false, success: function() { // Your code to handle success message sent }, error: function(error) { // Your code to handle error } });
خواندنیهای 8 مرداد
اس کیوال سرور
امنیت
توسعه وب
دات نت فریم ورک
دبلیو پی اف و سیلور لایت
دلفی
سی و مشتقات
لینوکس
متفرقه
محیطهای مجتمع توسعه
ویندوز
در بیشتر مواردی که یک تکنولوژی جدید را برای
یادگیری انتخاب میکنیم در اولین فرصت سراغ منابع آنلاین از قبیل کتابها و یا
ویدئوهای موجود بر روی نت میرویم و در این بین ممکن است با محدودیت هایی از قبیل
کیفیت بد اتصال به اینترنت و یا حجم مربوط به فایلهای موجود مواجه شویم. خوب چاره
و نکته در اینجاست که با انتخاب یک کتاب مفید در این زمینه میتوان تا حدود زیادی
این محدویتها را برطرف کرد. در ادامه
برای شروع کار با NHibernate که روز به روز در حال توسعه است، میتوان کتاب
زیر را شروع بسیار خوبی برای کار دانست:
در این کتاب بصورتی بسیار جامع از ابتداییترین مسئله تا فنیترین مسائلی که در هر پروژهی عملی هر توسعه دهنده ای با هر سطحی امکان مواجه شدن با این مشکلات را دارد به تفصیل بررسی شده. این کتاب شامل 12 فصل بوده که مطالب آن به شرح زیر ارائه شده است:
1- فصل اول – نگاه اولیه:
- NHibernate چیست
- موارد تازه در آخرین نسخه NHibernate
- چرا ما استفاده کنیم و چه کسانی دیگری استفاده میکنند
- زمانیکه به مشکل برخوردیم از کجا کمک بگیریم یا حتی نسخه ای تجاری تهیه کنیم
- آماده سازی سیستم برای توسعه برنامهها با استفاده از NHibernate
- ایجاد یک مدل ساده از مشکل موجود
- ایجاد بانک و برپایی یک نگاشت (Map) بین مدل و بانک
- نوشتن و خواندن داده از و به بانک
- بحث در مورد بدست آوردن نتیجه معادل بدون استفاده از NHibernate و یا ORM دیگر
- مدل چیست؟
- عوامل اصلی موجود در ایجاد یک مدل چیست؟
- چطور میتوان مدل ساخت؟
- یادگیری جدول چیست؟
- یادگیری چطور جدولها به هم مرتبط شود؟
- بحث در مورد استراتژیهای تحمیلی ای که کدام داده میتواند ذخیره شود
- نمایش امکانات موجود برای بهبود کارایی دسترسی به داده
- ایجاد بانک داده برای سیستم سفارش (Ordering System)
- بدست آوردن یک درک درست درباره نگاشت و پیش نیازهای آن
- بحث در مورد ریزه کاریهای چهار تکنیک پر استفاده معمول نگاشت
- توصیف و توسعه قراردادها برای کاهش تقلا در کدنویسی
- ایجاد خودکار اسکریپت برای ایجاد شمای بانک دیتا از روی نگاشت مان
- توصیف و نگاشت مدل دامنه سیستم سفارش مان
- بحث در مورد اشیاء وهله و تراکنش
- معرفی شیء session factory
- پیاده سازی برنامه ای که دیتا ذخیره و بازخوانی میکند
- تجزیه و تحلیل متدهای گوناگون برای مدیریت وهلهها در پر استفادهترین انواع برنامه
- پیاده سازی یک بستر پایه برای ساخت آزمایش ساده کد دسترسی به بانک داده
- ایجاد آزمایشها برای تایید کد دسترسی به بانک داده مان
- تجزیه و تحلیل ارتباط بین NHibernate و بانک داده
- پیکربندی NHibernate برای واقع نگاری دادههای مورد توجه
- بحث در مورد پیکربندی قبل از شروع
- آشنا شدن با لیست مولفههای NHibernate که میتوان پیکربندی کرد
- یادگیری چهار روش متفاوت پیکربندی که چگونه میتوان در برنامه هایمان استفاده کرد
- یادگیری چگونگی استفاه از (LINQ (Language Integrated Query در NHibernate برای دریافت داده
- پرس و جو با استفاده از criteria query API
- استفاده از گویش object-oriented اصلی SQL بنام Hibernate Query Language HQL
- بحث در مورد موجودیت هایی با خواصی که توان lazy load دارند
- مقابله با بارگذاری حریصانه با lazy loading بطوریکه بصورت دسته ای از پرس و جو بنظر آید
11- فصل یازدهم – اشتباهات متداول – چیزهایی برای جلوگیری
آیا یک توسعه دهندهی وب میتواند یک طراح وب هم باشد؟
<uses-permission android:name="android.permission.RECORD_AUDIO" />
سیستمعامل مجاز به اجرای برنامهای بدون امضاء نخواهد بود.
آموزش PouchDB : معرفی
هدف این مقاله بر این است که شما را با دیتابیس PouchDB آشنا سازد .
در مطلب اول هدف فقط آشنایی و نحوه نصب PouchDB قرار خوهد داشت و در مطالب بعدی نحوه آشنایی با نحوه کدنویسی و استفاده به صورت آفلاین یا آنلاین بررسی خواهد شد .
فهرست مطالب :
- بخش اول : معرفی PouchDB
- شروع به کار با PouchDB
- نحوه استفاده از API ها
- سوالات متداول در مورد PouchDB
- خطاهای احتمالی
- پروژهها و پلاگین های PouchDB
- فایرفاکس 12 و بالاتر
- گوگل کروم 19 و بالاتر
- اپرا 12 و بالاتر
- سافاری 5 و بالاتر
- اینترنت اکسپلورر 10 و بالاتر
- NodeJs 0.10 و بالاتر
- و به صورت شگفت انگیزی در Apache Cordova
<script src="pouchdb-2.1.0.min.js"></script>
$ npm install pouchdb